From 64e9a9e4734f435238697bbff4bf565541ecb7a7 Mon Sep 17 00:00:00 2001
From: martin-corredera <martin.corredera@mercadolibre.com>
Date: Sun, 16 Jul 2023 21:00:34 -0300
Subject: [PATCH] Adding plugins

---
 pelican-plugins/.gitignore                    |   13 +
 pelican-plugins/.gitmodules                   |  144 +
 pelican-plugins/.travis.yml                   |   33 +
 pelican-plugins/Contributing.rst              |   39 +
 pelican-plugins/LICENSE                       |  665 ++
 pelican-plugins/README.md                     |   81 +
 pelican-plugins/Readme.rst                    |  348 +
 pelican-plugins/__init__.py                   |    0
 pelican-plugins/always_modified/README.md     |   14 +
 pelican-plugins/always_modified/__init__.py   |    1 +
 .../always_modified/always_modified.py        |   20 +
 pelican-plugins/asciidoc_reader/README.rst    |   49 +
 pelican-plugins/asciidoc_reader/__init__.py   |    1 +
 .../asciidoc_reader/asciidoc_reader.py        |  115 +
 .../asciidoc_reader/test_asciidoc_reader.py   |   70 +
 .../test_data/article_with_asc_extension.asc  |   11 +
 .../test_data/article_with_asc_options.asc    |    7 +
 pelican-plugins/assets/Readme.rst             |  108 +
 pelican-plugins/assets/__init__.py            |    1 +
 pelican-plugins/assets/assets.py              |   75 +
 pelican-plugins/assets/requirements.txt       |    2 +
 pelican-plugins/assets/test_assets.py         |  113 +
 .../assets/test_data/static/css/style.min.css |    1 +
 .../assets/test_data/static/css/style.scss    |   19 +
 .../assets/test_data/templates/base.html      |    7 +
 pelican-plugins/author_images/README.md       |   55 +
 pelican-plugins/author_images/__init__.py     |    1 +
 .../author_images/author_images.py            |   47 +
 .../author_images/generate_hashsum.py         |    6 +
 pelican-plugins/autopages/LICENSE             |   28 +
 pelican-plugins/autopages/README.md           |   21 +
 pelican-plugins/autopages/__init__.py         |    1 +
 pelican-plugins/autopages/autopages.py        |   64 +
 .../better_codeblock_line_numbering/Readme.md |  125 +
 .../__init__.py                               |    1 +
 .../better_codeblock_line_numbering.py        |   47 +
 .../better_figures_and_images/README.rst      |   54 +
 .../better_figures_and_images/__init__.py     |    1 +
 .../better_figures_and_images.py              |  140 +
 .../requirements.txt                          |    4 +
 .../test_data/dummy-200x200.png               |  Bin 0 -> 767 bytes
 .../test_data/dummy-250x300.png               |  Bin 0 -> 1058 bytes
 .../test_data/dummy-800x300.png               |  Bin 0 -> 2667 bytes
 .../test_data/images-test.html                |   44 +
 .../test_data/images-test.rst                 |   75 +
 pelican-plugins/better_tables/LICENSE         |   18 +
 pelican-plugins/better_tables/README.md       |   38 +
 pelican-plugins/better_tables/__init__.py     |   31 +
 .../better_tables/better_tables.py            |   71 +
 pelican-plugins/bootstrap-rst/140x140.png     |  Bin 0 -> 1443 bytes
 pelican-plugins/bootstrap-rst/171x180.png     |  Bin 0 -> 1553 bytes
 pelican-plugins/bootstrap-rst/300x200.png     |  Bin 0 -> 2772 bytes
 pelican-plugins/bootstrap-rst/LICENSE         |   21 +
 pelican-plugins/bootstrap-rst/Makefile        |   32 +
 pelican-plugins/bootstrap-rst/README.rst      |   44 +
 pelican-plugins/bootstrap-rst/__init__.py     |   12 +
 pelican-plugins/bootstrap-rst/bootstrap.py    |  310 +
 .../bootstrap/css/bootstrap-theme.css         |  347 +
 .../bootstrap/css/bootstrap-theme.css.map     |    1 +
 .../bootstrap/css/bootstrap-theme.min.css     |    7 +
 .../bootstrap-rst/bootstrap/css/bootstrap.css | 5785 +++++++++++++++++
 .../bootstrap/css/bootstrap.css.map           |    1 +
 .../bootstrap/css/bootstrap.min.css           |    7 +
 .../fonts/glyphicons-halflings-regular.eot    |  Bin 0 -> 20335 bytes
 .../fonts/glyphicons-halflings-regular.svg    |  229 +
 .../fonts/glyphicons-halflings-regular.ttf    |  Bin 0 -> 41280 bytes
 .../fonts/glyphicons-halflings-regular.woff   |  Bin 0 -> 23320 bytes
 .../bootstrap-rst/bootstrap/js/bootstrap.js   | 1951 ++++++
 .../bootstrap/js/bootstrap.min.js             |    6 +
 pelican-plugins/bootstrap-rst/custom.css      |   76 +
 pelican-plugins/bootstrap-rst/directives.py   |  465 ++
 .../bootstrap-rst/doc/CSS-buttons.txt         |  185 +
 .../bootstrap-rst/doc/CSS-code.txt            |   48 +
 .../bootstrap-rst/doc/CSS-grid-system.txt     |  235 +
 .../bootstrap-rst/doc/CSS-helpers.txt         |   68 +
 .../bootstrap-rst/doc/CSS-images.txt          |   52 +
 .../bootstrap-rst/doc/CSS-overview.txt        |   92 +
 .../bootstrap-rst/doc/CSS-tables.txt          |  292 +
 .../bootstrap-rst/doc/CSS-typography.txt      |  441 ++
 pelican-plugins/bootstrap-rst/doc/CSS.rst     |   62 +
 .../bootstrap-rst/doc/bootstrap-glyphs.txt    |  805 +++
 .../bootstrap-rst/doc/bootstrap-roles.txt     |   21 +
 .../bootstrap-rst/doc/components-alerts.txt   |   70 +
 .../bootstrap-rst/doc/components-badges.txt   |   15 +
 .../doc/components-breadcrumbs.txt            |   43 +
 .../doc/components-glyphicons.txt             |   37 +
 .../doc/components-jumbotron.txt              |   45 +
 .../bootstrap-rst/doc/components-labels.txt   |   64 +
 .../doc/components-page-header.txt            |   26 +
 .../doc/components-pagination.txt             |  210 +
 .../bootstrap-rst/doc/components-progress.txt |  140 +
 .../doc/components-thumbnails.txt             |  157 +
 .../bootstrap-rst/doc/components-wells.txt    |   53 +
 .../bootstrap-rst/doc/components.rst          |   65 +
 .../bootstrap-rst/doc/getting-started.rst     |  160 +
 .../bootstrap-rst/doc/glyphicons-defs.txt     |  801 +++
 .../bootstrap-rst/doc/glyphicons-list.txt     |  225 +
 pelican-plugins/bootstrap-rst/doc/index.rst   |  403 ++
 pelican-plugins/bootstrap-rst/docs-min.css    | 1542 +++++
 .../bootstrap-rst/make-glyphicons.py          |  224 +
 pelican-plugins/bootstrap-rst/page.tmpl       |   22 +
 pelican-plugins/bootstrap-rst/pygments.css    |   59 +
 pelican-plugins/bootstrap-rst/roles.py        |   39 +
 pelican-plugins/category_meta/README.md       |   22 +
 pelican-plugins/category_meta/__init__.py     |    1 +
 .../category_meta/category_meta.py            |  132 +
 pelican-plugins/clean_summary/README.md       |   34 +
 pelican-plugins/clean_summary/__init__.py     |    1 +
 .../clean_summary/clean_summary.py            |   52 +
 pelican-plugins/code_include/README.rst       |   69 +
 pelican-plugins/code_include/__init__.py      |    1 +
 pelican-plugins/code_include/code_include.py  |   87 +
 pelican-plugins/collate_content/.gitignore    |    3 +
 pelican-plugins/collate_content/LICENSE       |  661 ++
 pelican-plugins/collate_content/README.md     |   57 +
 pelican-plugins/collate_content/__init__.py   |   10 +
 .../collate_content/collate_content.py        |   74 +
 .../collate_content/test_collate_content.py   |  252 +
 pelican-plugins/creole_reader/Readme.md       |   41 +
 pelican-plugins/creole_reader/__init__.py     |    1 +
 .../creole_reader/creole_reader.py            |  101 +
 .../css-html-js-minify/__init__.py            |    2 +
 .../css-html-js-minify/css_html_js_minify.py  |   26 +
 pelican-plugins/css-html-js-minify/readme.rst |    9 +
 pelican-plugins/ctags_generator/README.md     |   21 +
 pelican-plugins/ctags_generator/__init__.py   |    1 +
 .../ctags_generator/ctags_generator.py        |   29 +
 .../article_with_duplicate_tags_authors.md    |   15 +
 ...icle_with_markdown_and_nonascii_summary.md |   19 +
 .../test_content/article_with_md_extension.md |   14 +
 .../ctags_generator/test_ctags_generator.py   |   41 +
 pelican-plugins/custom_article_urls/README.md |   36 +
 .../custom_article_urls/__init__.py           |    1 +
 .../custom_article_urls.py                    |   49 +
 pelican-plugins/dateish/Readme.rst            |   41 +
 pelican-plugins/dateish/__init__.py           |    1 +
 pelican-plugins/dateish/dateish.py            |   28 +
 pelican-plugins/disqus_static/README.rst      |   60 +
 pelican-plugins/disqus_static/__init__.py     |    1 +
 .../disqus_static/disqus_static.py            |   80 +
 .../disqus_static/requirements.txt            |    2 +
 pelican-plugins/events/README.md              |   82 +
 pelican-plugins/events/__init__.py            |    1 +
 pelican-plugins/events/events.py              |  194 +
 pelican-plugins/events/events_list.html       |   36 +
 pelican-plugins/events/requirements.txt       |    1 +
 pelican-plugins/events/requiremets.txt        |    1 +
 pelican-plugins/extract_toc/README.md         |  137 +
 pelican-plugins/extract_toc/__init__.py       |    1 +
 pelican-plugins/extract_toc/extract_toc.py    |   66 +
 pelican-plugins/feed_summary/Readme.md        |   38 +
 pelican-plugins/feed_summary/__init__.py      |    1 +
 pelican-plugins/feed_summary/feed_summary.py  |   57 +
 pelican-plugins/feed_summary/magic_set.py     |   92 +
 pelican-plugins/figure-ref/LICENSE            |  675 ++
 pelican-plugins/figure-ref/README.md          |   45 +
 pelican-plugins/figure-ref/__init__.py        |    1 +
 ...e04d32bff468a6b3e63c373c5d95fca39783fe.zip |  Bin 0 -> 15169 bytes
 .../.gitignore                                |    5 +
 pelican-plugins/figure-ref/figure_ref.py      |   86 +
 pelican-plugins/filetime_from_git/README.rst  |   60 +
 pelican-plugins/filetime_from_git/__init__.py |    1 +
 pelican-plugins/filetime_from_git/actions.py  |  120 +
 .../filetime_from_git/content_adapter.py      |   99 +
 .../filetime_from_git/git_wrapper.py          |  169 +
 .../filetime_from_git/registration.py         |   30 +
 .../filetime_from_git/requirements.txt        |    1 +
 pelican-plugins/filetime_from_git/utils.py    |   39 +
 pelican-plugins/filetime_from_hg/README.rst   |   41 +
 pelican-plugins/filetime_from_hg/__init__.py  |    1 +
 .../filetime_from_hg/filetime_from_hg.py      |   81 +
 .../filetime_from_hg/requirements.txt         |    1 +
 pelican-plugins/footer_insert/README.md       |   17 +
 pelican-plugins/footer_insert/__init__.py     |    1 +
 .../footer_insert/footer_insert.py            |   30 +
 pelican-plugins/gallery/README.md             |   91 +
 pelican-plugins/gallery/__init__.py           |    1 +
 pelican-plugins/gallery/gallery.py            |   75 +
 pelican-plugins/gist_directive/README.rst     |   18 +
 pelican-plugins/gist_directive/__init__.py    |    1 +
 .../gist_directive/gist_directive.py          |   73 +
 pelican-plugins/github-wiki/ReadMe.md         |   43 +
 pelican-plugins/github-wiki/__init__.py       |    1 +
 pelican-plugins/github-wiki/wiki.js           |   13 +
 pelican-plugins/github-wiki/wiki.py           |   98 +
 pelican-plugins/github-wiki/wikiarticle.html  |   66 +
 pelican-plugins/github_activity/Readme.rst    |   35 +
 pelican-plugins/github_activity/__init__.py   |    1 +
 .../github_activity/github_activity.py        |   72 +
 pelican-plugins/global_license/Readme.rst     |    6 +
 pelican-plugins/global_license/__init__.py    |    1 +
 .../global_license/global_license.py          |   18 +
 pelican-plugins/glossary/__init__.py          |    1 +
 pelican-plugins/glossary/glossary.py          |   70 +
 pelican-plugins/glossary/readme.md            |  102 +
 pelican-plugins/goodreads_activity/Readme.md  |   80 +
 .../goodreads_activity/__init__.py            |    1 +
 .../goodreads_activity/goodreads_activity.py  |   63 +
 pelican-plugins/googleplus_comments/Readme.md |   20 +
 .../googleplus_comments/__init__.py           |    1 +
 .../googleplus_comments.py                    |   29 +
 pelican-plugins/gravatar/Readme.rst           |   25 +
 pelican-plugins/gravatar/__init__.py          |    1 +
 pelican-plugins/gravatar/gravatar.py          |   31 +
 pelican-plugins/gzip_cache/Readme.rst         |   21 +
 pelican-plugins/gzip_cache/__init__.py        |    1 +
 pelican-plugins/gzip_cache/gzip_cache.py      |  129 +
 pelican-plugins/gzip_cache/test_gzip_cache.py |  107 +
 pelican-plugins/headerid/README.rst           |   16 +
 pelican-plugins/headerid/__init__.py          |    1 +
 pelican-plugins/headerid/headerid.py          |   31 +
 pelican-plugins/html_entity/README.rst        |   30 +
 pelican-plugins/html_entity/__init__.py       |    0
 pelican-plugins/html_entity/html_entity.py    |   46 +
 pelican-plugins/html_rst_directive/Readme.rst |   45 +
 .../html_rst_directive/__init__.py            |    1 +
 .../html_rst_directive/html_rst_directive.py  |   30 +
 pelican-plugins/i18n_subsites/README.rst      |  165 +
 pelican-plugins/i18n_subsites/__init__.py     |    1 +
 .../i18n_subsites/i18n_subsites.py            |  462 ++
 .../implementing_language_buttons.rst         |  128 +
 .../i18n_subsites/localizing_using_jinja2.rst |  202 +
 .../i18n_subsites/test_data/__init__.py       |    0
 .../test_data/content/images/img.png          |    0
 .../content/pages/hidden-page-cz.rst          |    7 +
 .../content/pages/hidden-page-de.rst          |    7 +
 .../content/pages/hidden-page-en.rst          |    7 +
 .../content/pages/untranslated-page.rst       |    5 +
 .../content/translated_article-cz.rst         |    8 +
 .../content/translated_article-de.rst         |    8 +
 .../content/translated_article-en.rst         |    8 +
 .../content/untranslated_article-en.rst       |    9 +
 .../test_data/localized_theme/babel.cfg       |    2 +
 .../test_data/localized_theme/messages.pot    |   23 +
 .../localized_theme/static/style.css          |    0
 .../localized_theme/templates/base.html       |    7 +
 .../translations/de/LC_MESSAGES/messages.mo   |  Bin 0 -> 486 bytes
 .../translations/de/LC_MESSAGES/messages.po   |   23 +
 .../i18n_subsites/test_data/pelicanconf.py    |   53 +
 .../i18n_subsites/test_i18n_subsites.py       |  139 +
 pelican-plugins/ical/Readme.rst               |   39 +
 pelican-plugins/ical/__init__.py              |    1 +
 pelican-plugins/ical/ical.py                  |   52 +
 pelican-plugins/ical/requirements.txt         |    1 +
 pelican-plugins/interlinks/__init__.py        |    1 +
 pelican-plugins/interlinks/interlinks.py      |   73 +
 pelican-plugins/interlinks/readme.md          |   50 +
 .../interlinks/test_data/testme.md            |    9 +
 pelican-plugins/jinja2content/README.md       |  116 +
 pelican-plugins/jinja2content/__init__.py     |    1 +
 .../jinja2content/jinja2content.py            |   69 +
 pelican-plugins/jpeg_reader/.gitignore        |    1 +
 pelican-plugins/jpeg_reader/README.md         |   45 +
 pelican-plugins/jpeg_reader/__init__.py       |    1 +
 pelican-plugins/jpeg_reader/constants.py      |   42 +
 pelican-plugins/jpeg_reader/exiv2_parser.py   |   61 +
 pelican-plugins/jpeg_reader/jpeg_reader.py    |  128 +
 .../jpeg_reader/test_exiv2_parser.py          |   36 +
 pelican-plugins/jpeg_reader/util.py           |   14 +
 pelican-plugins/latex                         |    1 +
 pelican-plugins/libravatar/.gitignore         |    1 +
 pelican-plugins/libravatar/Readme.md          |   77 +
 pelican-plugins/libravatar/__init__.py        |    1 +
 pelican-plugins/libravatar/libravatar.py      |   67 +
 .../test_data/theme/templates/article.html    |   12 +
 pelican-plugins/libravatar/test_libravatar.py |   97 +
 pelican-plugins/linker/Readme.md              |   75 +
 pelican-plugins/linker/__init__.py            |    1 +
 pelican-plugins/linker/content_objects.py     |   12 +
 pelican-plugins/linker/linker.py              |  136 +
 pelican-plugins/linker/mailto.py              |   41 +
 pelican-plugins/liquid_tags/.gitignore        |    4 +
 pelican-plugins/liquid_tags/Readme.md         |  284 +
 pelican-plugins/liquid_tags/__init__.py       |    1 +
 pelican-plugins/liquid_tags/audio.py          |   75 +
 pelican-plugins/liquid_tags/b64img.py         |   91 +
 .../liquid_tags/content/test_data/main.c      |    7 +
 .../liquid_tags/content/test_data/main_cz.c   |    7 +
 pelican-plugins/liquid_tags/diag.py           |  177 +
 pelican-plugins/liquid_tags/flickr.py         |  116 +
 pelican-plugins/liquid_tags/generic.py        |   36 +
 pelican-plugins/liquid_tags/giphy.py          |   89 +
 pelican-plugins/liquid_tags/gram.py           |  103 +
 pelican-plugins/liquid_tags/graphviz.py       |  128 +
 pelican-plugins/liquid_tags/img.py            |   66 +
 pelican-plugins/liquid_tags/include_code.py   |  166 +
 pelican-plugins/liquid_tags/liquid_tags.py    |   30 +
 pelican-plugins/liquid_tags/literal.py        |   27 +
 .../liquid_tags/mdx_liquid_tags.py            |   98 +
 pelican-plugins/liquid_tags/notebook.py       |  355 +
 pelican-plugins/liquid_tags/pelicanhtml_1.tpl |   44 +
 pelican-plugins/liquid_tags/pelicanhtml_2.tpl |   44 +
 pelican-plugins/liquid_tags/pelicanhtml_3.tpl |   55 +
 pelican-plugins/liquid_tags/pygalcharts.py    |  164 +
 pelican-plugins/liquid_tags/requirements.txt  |    1 +
 pelican-plugins/liquid_tags/soundcloud.py     |   70 +
 pelican-plugins/liquid_tags/speakerdeck.py    |   56 +
 pelican-plugins/liquid_tags/spotify.py        |   55 +
 pelican-plugins/liquid_tags/test_audio.py     |   44 +
 .../liquid_tags/test_data/__init__.py         |    0
 .../content/notebooks/test_nbformat3.ipynb    |  810 +++
 .../content/notebooks/test_nbformat4.ipynb    |  853 +++
 .../content/test-generic-config-tag.md        |    7 +
 .../test-ipython-notebook-nbformat3.md        |   17 +
 .../test-ipython-notebook-nbformat4.md        |   17 +
 .../liquid_tags/test_data/flickr.json         |    1 +
 .../liquid_tags/test_data/giphy.json          |    2 +
 .../liquid_tags/test_data/pelicanconf.py      |   35 +
 .../liquid_tags/test_data/pelicanhtml_2.tpl   |    1 +
 .../liquid_tags/test_data/pelicanhtml_3.tpl   |    1 +
 pelican-plugins/liquid_tags/test_flickr.py    |   84 +
 .../liquid_tags/test_generation.py            |   96 +
 pelican-plugins/liquid_tags/test_generic.py   |   61 +
 pelican-plugins/liquid_tags/test_giphy.py     |   34 +
 .../liquid_tags/test_include_code.py          |  247 +
 pelican-plugins/liquid_tags/test_notebook.py  |  100 +
 .../liquid_tags/test_soundcloud.py            |   45 +
 pelican-plugins/liquid_tags/test_video.py     |   42 +
 pelican-plugins/liquid_tags/test_youtube.py   |   52 +
 pelican-plugins/liquid_tags/tox.ini           |   17 +
 pelican-plugins/liquid_tags/video.py          |   80 +
 pelican-plugins/liquid_tags/vimeo.py          |   68 +
 pelican-plugins/liquid_tags/youtube.py        |  104 +
 pelican-plugins/md_inline_extension/Readme.md |   48 +
 .../md_inline_extension/__init__.py           |    1 +
 pelican-plugins/md_inline_extension/inline.py |   68 +
 .../pelican_inline_markdown_extension.py      |   69 +
 pelican-plugins/members/Readme.rst            |   22 +
 pelican-plugins/members/__init__.py           |    1 +
 pelican-plugins/members/members.py            |   38 +
 pelican-plugins/more_categories/README.md     |   79 +
 pelican-plugins/more_categories/__init__.py   |    1 +
 .../more_categories/more_categories.py        |   82 +
 .../article_with_multiple_categories.rst      |    6 +
 .../test_data/article_with_no_category.rst    |    5 +
 .../more_categories/test_more_categories.py   |   57 +
 pelican-plugins/multi_part/Readme.md          |   26 +
 pelican-plugins/multi_part/__init__.py        |    1 +
 pelican-plugins/multi_part/multi_part.py      |   42 +
 pelican-plugins/neighbors/Readme.rst          |  101 +
 pelican-plugins/neighbors/__init__.py         |    1 +
 pelican-plugins/neighbors/neighbors.py        |   63 +
 .../neighbors/test_data/article.md            |   14 +
 pelican-plugins/neighbors/test_neighbors.py   |   35 +
 pelican-plugins/optimize_images/Readme.md     |   28 +
 pelican-plugins/optimize_images/__init__.py   |    1 +
 .../optimize_images/optimize_images.py        |   61 +
 pelican-plugins/org_python_reader/LICENSE     |  674 ++
 pelican-plugins/org_python_reader/README.org  |   74 +
 pelican-plugins/org_python_reader/__init__.py |   15 +
 .../org_python_reader/org_python_reader.py    |  102 +
 .../org_python_reader/requirements.txt        |    1 +
 pelican-plugins/org_reader/LICENSE            |   12 +
 pelican-plugins/org_reader/README.md          |   44 +
 pelican-plugins/org_reader/__init__.py        |    1 +
 pelican-plugins/org_reader/org_reader.el      |   59 +
 pelican-plugins/org_reader/org_reader.py      |  122 +
 pelican-plugins/pdf/Readme.rst                |   43 +
 pelican-plugins/pdf/__init__.py               |    1 +
 pelican-plugins/pdf/pdf.py                    |  125 +
 pelican-plugins/pdf/requirements.txt          |    3 +
 pelican-plugins/pdf/test_pdf.py               |   47 +
 pelican-plugins/pelican-cite/LICENSE          |  675 ++
 pelican-plugins/pelican-cite/README.md        |   57 +
 pelican-plugins/pelican-cite/__init__.py      |    3 +
 .../pelican-cite-master/.gitignore            |   13 +
 pelican-plugins/pelican-cite/pyproject.toml   |    3 +
 pelican-plugins/pelican-cite/setup.py         |   35 +
 pelican-plugins/pelican-cite/src/__init__.py  |    0
 .../pelican-cite/src/pelican_cite/__init__.py |    1 +
 .../src/pelican_cite/author_year.py           |  193 +
 .../src/pelican_cite/pelican_cite.py          |  254 +
 pelican-plugins/pelican-rdf/ReadMe.md         |  107 +
 pelican-plugins/pelican-rdf/__init__.py       |    1 +
 pelican-plugins/pelican-rdf/pelican_rdf.py    |  175 +
 .../pelican-rdf/sparql-queries/classes.sparql |   12 +
 .../sparql-queries/lov_metadata.sparql        |   11 +
 .../pelican_comment_system/CHANGELOG.md       |   54 +
 .../pelican_comment_system/Readme.md          |   45 +
 .../pelican_comment_system/__init__.py        |    1 +
 .../pelican_comment_system/avatars.py         |  105 +
 .../pelican_comment_system/comment.py         |   66 +
 .../pelican_comment_system/doc/avatars.md     |   35 +
 .../pelican_comment_system/doc/feed.md        |   33 +
 .../pelican_comment_system/doc/import.md      |   47 +
 .../doc/installation.md                       |  117 +
 .../pelican_comment_system/doc/quickstart.md  |   32 +
 .../pelican_comment_system/identicon/LICENSE  |   11 +
 .../identicon/README.md                       |   17 +
 .../identicon/__init__.py                     |    0
 .../identicon/identicon.py                    |  259 +
 .../pelican_comment_system/import/__init__.py |    0
 .../import/blogger_comment_export.py          |  165 +
 .../pelican_comment_system.py                 |  240 +
 .../theme/static/js/comments.js               |   76 +
 .../theme/templates/pcs/comments.html         |  162 +
 .../pelican_unity_webgl/LICENSE.txt           |   18 +
 .../pelican_unity_webgl/README.rst            |   81 +
 .../pelican_unity_webgl/UnityGameDirective.py |   86 +
 .../pelican_unity_webgl/__init__.py           |    3 +
 pelican-plugins/pelican_unity_webgl/config.py |   10 +
 .../pelican_unity_webgl/template.txt          |    9 +
 .../pelican_unity_webgl/test_unitywebgl.py    |   70 +
 pelican-plugins/permalinks/README.md          |   25 +
 pelican-plugins/permalinks/__init__.py        |    1 +
 pelican-plugins/permalinks/permalinks.py      |  156 +
 pelican-plugins/photos/README.md              |  296 +
 pelican-plugins/photos/SourceCodePro-Bold.otf |  Bin 0 -> 143932 bytes
 .../photos/SourceCodePro-Regular.otf          |  Bin 0 -> 140088 bytes
 pelican-plugins/photos/__init__.py            |    1 +
 pelican-plugins/photos/licenses.json          |   30 +
 pelican-plugins/photos/photos.py              |  589 ++
 pelican-plugins/photos/requirements.txt       |    2 +
 .../photos/test_data/agallery/best.jpg        |  Bin 0 -> 68284 bytes
 .../photos/test_data/agallery/captions.txt    |    1 +
 .../photos/test_data/agallery/exif.txt        |    2 +
 .../photos/test_data/agallery/night.png       |  Bin 0 -> 82619 bytes
 pelican-plugins/photos/test_data/filename.md  |    7 +
 pelican-plugins/photos/test_data/photo.md     |    7 +
 pelican-plugins/photos/test_photos.py         |  129 +
 pelican-plugins/plantuml/Readme.rst           |  216 +
 pelican-plugins/plantuml/__init__.py          |    1 +
 .../plantuml/generateUmlDiagram.py            |   58 +
 pelican-plugins/plantuml/pandoc-plantuml      |   89 +
 pelican-plugins/plantuml/plantuml_md.py       |   95 +
 pelican-plugins/plantuml/plantuml_rst.py      |   91 +
 .../plantuml/test_data/sequence.uml           |    7 +
 pelican-plugins/plantuml/test_plantuml.py     |   18 +
 pelican-plugins/post_stats/__init__.py        |    1 +
 pelican-plugins/post_stats/post_stats.py      |   71 +
 pelican-plugins/post_stats/readability.py     |   56 +
 pelican-plugins/post_stats/readme.rst         |   49 +
 pelican-plugins/random_article/Readme.md      |   19 +
 pelican-plugins/random_article/__init__.py    |    1 +
 .../random_article/random_article.py          |   91 +
 pelican-plugins/read_more_link/Readme.md      |   31 +
 pelican-plugins/read_more_link/__init__.py    |    1 +
 .../read_more_link/read_more_link.py          |   85 +
 .../read_more_link/requirements.txt           |    1 +
 pelican-plugins/readtime/README.md            |   41 +
 pelican-plugins/readtime/__init__.py          |    1 +
 pelican-plugins/readtime/demo.png             |  Bin 0 -> 10776 bytes
 pelican-plugins/readtime/readtime.py          |   55 +
 pelican-plugins/reddit_poster/.gitignore      |    1 +
 pelican-plugins/reddit_poster/Readme.md       |   51 +
 pelican-plugins/reddit_poster/__init__.py     |   83 +
 .../reddit_poster/redditconf.py.example       |    9 +
 .../reddit_poster/requirements.txt            |    1 +
 pelican-plugins/related_posts/Readme.rst      |   38 +
 pelican-plugins/related_posts/__init__.py     |    1 +
 .../related_posts/related_posts.py            |   56 +
 pelican-plugins/render_math/Readme.md         |  167 +
 pelican-plugins/render_math/__init__.py       |    1 +
 pelican-plugins/render_math/math.py           |  367 ++
 .../render_math/mathjax_script_template       |   61 +
 .../pelican_mathjax_markdown_extension.py     |  158 +
 pelican-plugins/render_math/requirements.txt  |    1 +
 .../render_math/test_data/article.ipynb       |   42 +
 .../render_math/test_data/article.nbdata      |    5 +
 .../test_data/article_with_math_formulas.rst  |   20 +
 .../render_math/test_render_math.py           |   56 +
 .../representative_image/Readme.md            |   61 +
 .../representative_image/__init__.py          |    1 +
 .../representative_image.py                   |   63 +
 .../representative_image/requirements.txt     |    1 +
 .../test_representative_image.py              |   73 +
 pelican-plugins/requirements.txt              |    4 +
 pelican-plugins/rmd_reader/Readme.md          |   68 +
 pelican-plugins/rmd_reader/__init__.py        |    1 +
 pelican-plugins/rmd_reader/requirements.txt   |    1 +
 pelican-plugins/rmd_reader/rmd_reader.py      |  126 +
 pelican-plugins/rmd_reader/test_rmd_reader.py |  162 +
 pelican-plugins/section_number/Readme.md      |   41 +
 pelican-plugins/section_number/__init__.py    |    1 +
 .../section_number/section_number.py          |   90 +
 pelican-plugins/series/Readme.md              |   48 +
 pelican-plugins/series/__init__.py            |    1 +
 pelican-plugins/series/series.py              |   72 +
 pelican-plugins/shaarli_poster/README.md      |   55 +
 pelican-plugins/shaarli_poster/__init__.py    |    1 +
 .../shaarli_poster/requirements.txt           |    1 +
 .../shaarli_poster/shaarli_poster.py          |  139 +
 .../test_content/dummy_article.md             |   14 +
 .../test_content/other_dummy_article.md       |   19 +
 .../shaarli_poster/test_shaarli_poster.py     |   34 +
 pelican-plugins/share_post/README.md          |   77 +
 pelican-plugins/share_post/__init__.py        |    1 +
 pelican-plugins/share_post/share_post.py      |  100 +
 pelican-plugins/shortcodes/README.md          |   61 +
 pelican-plugins/shortcodes/__init__.py        |    1 +
 pelican-plugins/shortcodes/shortcodes.py      |   59 +
 pelican-plugins/shortcodes/test_shortcodes.py |   35 +
 pelican-plugins/show_source/ReadMe.rst        |  129 +
 pelican-plugins/show_source/__init__.py       |    1 +
 pelican-plugins/show_source/show_source.py    |   86 +
 pelican-plugins/simple_footnotes/README.md    |   28 +
 pelican-plugins/simple_footnotes/__init__.py  |    1 +
 .../simple_footnotes/requirements.txt         |    1 +
 .../simple_footnotes/simple_footnotes.py      |   95 +
 .../simple_footnotes/test_simple_footnotes.py |   32 +
 pelican-plugins/sitemap/Readme.rst            |   83 +
 pelican-plugins/sitemap/__init__.py           |    1 +
 pelican-plugins/sitemap/sitemap.py            |  271 +
 pelican-plugins/slim/README.md                |   36 +
 pelican-plugins/slim/__init__.py              |    1 +
 pelican-plugins/slim/slim.py                  |  173 +
 pelican-plugins/static_comments/Readme.md     |   26 +
 pelican-plugins/static_comments/__init__.py   |    1 +
 .../static_comments/static_comments.py        |   46 +
 pelican-plugins/sub_parts/README.md           |   62 +
 pelican-plugins/sub_parts/__init__.py         |    1 +
 pelican-plugins/sub_parts/sub_parts.py        |   66 +
 .../sub_parts/test_data/noparent.md           |    4 +
 .../sub_parts/test_data/parent--implicit.md   |    4 +
 .../sub_parts/test_data/parent-explicit.md    |    5 +
 pelican-plugins/sub_parts/test_data/parent.md |    4 +
 pelican-plugins/sub_parts/test_sub_parts.py   |  138 +
 pelican-plugins/subcategory/README.md         |  100 +
 pelican-plugins/subcategory/__init__.py       |    1 +
 pelican-plugins/subcategory/subcategory.py    |  135 +
 pelican-plugins/summary/Readme.rst            |   63 +
 pelican-plugins/summary/__init__.py           |    1 +
 pelican-plugins/summary/requirements.txt      |    1 +
 pelican-plugins/summary/summary.py            |  111 +
 pelican-plugins/summary/test_summary.py       |  110 +
 pelican-plugins/tag_cloud/README.rst          |  100 +
 pelican-plugins/tag_cloud/__init__.py         |    2 +
 pelican-plugins/tag_cloud/tag_cloud.py        |   90 +
 .../tag_cloud/test_data/article_1.md          |    4 +
 .../tag_cloud/test_data/article_2.md          |    5 +
 .../tag_cloud/test_data/article_3.md          |    5 +
 .../tag_cloud/test_data/article_4.md          |    5 +
 .../tag_cloud/test_data/article_5.md          |    5 +
 pelican-plugins/tag_cloud/test_tag_cloud.py   |  114 +
 pelican-plugins/test_data/Readme.rst          |   13 +
 pelican-plugins/test_data/__init__.py         |    0
 .../content/2012-11-30_filename-metadata.rst  |    4 +
 .../content/another_super_article-fr.rst      |    7 +
 .../content/another_super_article.rst         |   20 +
 .../test_data/content/article2-fr.rst         |    9 +
 .../test_data/content/article2.rst            |    9 +
 .../test_data/content/cat1/article1.rst       |    7 +
 .../test_data/content/cat1/article2.rst       |    6 +
 .../test_data/content/cat1/article3.rst       |    6 +
 .../content/cat1/markdown-article.md          |    7 +
 .../test_data/content/draft_article.rst       |    7 +
 .../test_data/content/extra/robots.txt        |    2 +
 .../test_data/content/pages/hidden_page.rst   |    9 +
 .../content/pages/jinja2_template.html        |    6 +
 .../content/pages/override_url_saveas.rst     |    9 +
 .../test_data/content/pages/test_page.rst     |   12 +
 .../test_data/content/pictures/Fat_Cat.jpg    |  Bin 0 -> 62675 bytes
 .../test_data/content/pictures/Sushi.jpg      |  Bin 0 -> 28992 bytes
 .../content/pictures/Sushi_Macro.jpg          |  Bin 0 -> 38594 bytes
 .../test_data/content/super_article.rst       |   36 +
 .../test_data/content/unbelievable.rst        |    9 +
 .../test_data/content/unwanted_file           |    1 +
 pelican-plugins/test_data/pelican.conf.py     |   45 +
 .../themes/notmyidea/static/css/main.css      |  446 ++
 .../themes/notmyidea/static/css/pygment.css   |  205 +
 .../themes/notmyidea/static/css/reset.css     |   52 +
 .../themes/notmyidea/static/css/typogrify.css |    3 +
 .../themes/notmyidea/static/css/wide.css      |   48 +
 .../notmyidea/static/images/icons/aboutme.png |  Bin 0 -> 751 bytes
 .../static/images/icons/bitbucket.png         |  Bin 0 -> 3714 bytes
 .../static/images/icons/delicious.png         |  Bin 0 -> 958 bytes
 .../static/images/icons/facebook.png          |  Bin 0 -> 202 bytes
 .../notmyidea/static/images/icons/github.png  |  Bin 0 -> 346 bytes
 .../static/images/icons/gitorious.png         |  Bin 0 -> 227 bytes
 .../notmyidea/static/images/icons/gittip.png  |  Bin 0 -> 487 bytes
 .../static/images/icons/google-groups.png     |  Bin 0 -> 803 bytes
 .../static/images/icons/google-plus.png       |  Bin 0 -> 527 bytes
 .../static/images/icons/hackernews.png        |  Bin 0 -> 3273 bytes
 .../notmyidea/static/images/icons/lastfm.png  |  Bin 0 -> 975 bytes
 .../static/images/icons/linkedin.png          |  Bin 0 -> 896 bytes
 .../notmyidea/static/images/icons/reddit.png  |  Bin 0 -> 693 bytes
 .../notmyidea/static/images/icons/rss.png     |  Bin 0 -> 879 bytes
 .../static/images/icons/slideshare.png        |  Bin 0 -> 535 bytes
 .../static/images/icons/speakerdeck.png       |  Bin 0 -> 1049 bytes
 .../notmyidea/static/images/icons/twitter.png |  Bin 0 -> 830 bytes
 .../notmyidea/static/images/icons/vimeo.png   |  Bin 0 -> 544 bytes
 .../notmyidea/static/images/icons/youtube.png |  Bin 0 -> 458 bytes
 .../themes/notmyidea/templates/analytics.html |   12 +
 .../themes/notmyidea/templates/archives.html  |   13 +
 .../themes/notmyidea/templates/article.html   |   35 +
 .../notmyidea/templates/article_infos.html    |   15 +
 .../themes/notmyidea/templates/author.html    |    2 +
 .../themes/notmyidea/templates/authors.html   |    0
 .../themes/notmyidea/templates/base.html      |   88 +
 .../themes/notmyidea/templates/category.html  |    2 +
 .../themes/notmyidea/templates/comments.html  |    1 +
 .../notmyidea/templates/disqus_script.html    |   11 +
 .../themes/notmyidea/templates/github.html    |    9 +
 .../themes/notmyidea/templates/index.html     |   61 +
 .../themes/notmyidea/templates/page.html      |   12 +
 .../themes/notmyidea/templates/piwik.html     |   16 +
 .../themes/notmyidea/templates/tag.html       |    2 +
 .../themes/notmyidea/templates/taglist.html   |    2 +
 .../notmyidea/templates/translations.html     |    8 +
 .../themes/notmyidea/templates/twitter.html   |    3 +
 .../themes/simple/templates/archives.html     |   11 +
 .../themes/simple/templates/article.html      |   25 +
 .../themes/simple/templates/author.html       |    7 +
 .../themes/simple/templates/base.html         |   63 +
 .../themes/simple/templates/categories.html   |    8 +
 .../themes/simple/templates/category.html     |    5 +
 .../themes/simple/templates/gosquared.html    |   14 +
 .../themes/simple/templates/index.html        |   22 +
 .../themes/simple/templates/page.html         |    9 +
 .../themes/simple/templates/pagination.html   |   15 +
 .../themes/simple/templates/tag.html          |    0
 .../themes/simple/templates/tags.html         |    0
 .../themes/simple/templates/translations.html |    9 +
 pelican-plugins/textile_reader/Readme.textile |   16 +
 pelican-plugins/textile_reader/__init__.py    |    1 +
 .../textile_reader/textile_reader.py          |   73 +
 pelican-plugins/thumbnailer/Readme.md         |   37 +
 pelican-plugins/thumbnailer/__init__.py       |    1 +
 .../thumbnailer/test_data/expected_exact.jpg  |  Bin 0 -> 3670 bytes
 .../thumbnailer/test_data/expected_height.jpg |  Bin 0 -> 9783 bytes
 .../thumbnailer/test_data/expected_square.jpg |  Bin 0 -> 2122 bytes
 .../thumbnailer/test_data/expected_width.jpg  |  Bin 0 -> 5298 bytes
 .../thumbnailer/test_data/sample_image.jpg    |  Bin 0 -> 338291 bytes
 .../test_data/subdir/sample_image.jpg         |  Bin 0 -> 338291 bytes
 .../thumbnailer/test_thumbnails.py            |   61 +
 pelican-plugins/thumbnailer/thumbnailer.py    |  210 +
 pelican-plugins/tipue_search/README.md        |   99 +
 pelican-plugins/tipue_search/__init__.py      |    0
 .../tipue_search/pelican/__init__.py          |    0
 .../tipue_search/pelican/plugins/__init__.py  |    0
 .../pelican/plugins/tipue_search/__init__.py  |    1 +
 .../plugins/tipue_search/tipue_search.py      |  111 +
 pelican-plugins/tipue_search/setup.py         |   32 +
 pelican-plugins/touch/README.rst              |   12 +
 pelican-plugins/touch/__init__.py             |   36 +
 .../twitter_bootstrap_rst_directives/Demo.rst |  118 +
 .../Readme.rst                                |   46 +
 .../__init__.py                               |    4 +
 .../bootstrap_rst_directives.py               |  543 ++
 pelican-plugins/txt2tags_reader/LICENSE       |   22 +
 pelican-plugins/txt2tags_reader/README.md     |   12 +
 pelican-plugins/txt2tags_reader/__init__.py   |    1 +
 .../txt2tags_reader/txt2tags_reader.py        |   42 +
 .../video_privacy_enhancer/Readme.md          |   71 +
 .../video_privacy_enhancer/__init__.py        |    1 +
 .../video_privacy_enhancer.py                 |  173 +
 .../video_privacy_enhancer_jquery.js          |   39 +
 ...vice_thumbnail_url_generating_functions.py |   33 +
 pelican-plugins/w3c_validate/README.md        |   34 +
 pelican-plugins/w3c_validate/__init__.py      |    2 +
 pelican-plugins/w3c_validate/requirements.txt |    1 +
 .../w3c_validate/test_content/getpelican.html |   93 +
 .../w3c_validate/test_w3c_validate.py         |   24 +
 pelican-plugins/w3c_validate/wc3_validate.py  |   76 +
 pelican-plugins/webring/README.md             |  107 +
 pelican-plugins/webring/__init__.py           |    1 +
 pelican-plugins/webring/example.png           |  Bin 0 -> 39327 bytes
 pelican-plugins/webring/requirements.txt      |    1 +
 .../webring/test_data/pelican-atom.xml        |   75 +
 .../webring/test_data/pelican-rss.xml         |   30 +
 pelican-plugins/webring/test_webring.py       |  107 +
 pelican-plugins/webring/webring.py            |  170 +
 pelican-plugins/yuicompressor/.gitignore      |    1 +
 pelican-plugins/yuicompressor/README.md       |   37 +
 pelican-plugins/yuicompressor/__init__.py     |    2 +
 .../yuicompressor/yuicompressor.py            |   29 +
 666 files changed, 48774 insertions(+)
 create mode 100644 pelican-plugins/.gitignore
 create mode 100644 pelican-plugins/.gitmodules
 create mode 100644 pelican-plugins/.travis.yml
 create mode 100644 pelican-plugins/Contributing.rst
 create mode 100644 pelican-plugins/LICENSE
 create mode 100644 pelican-plugins/README.md
 create mode 100644 pelican-plugins/Readme.rst
 create mode 100644 pelican-plugins/__init__.py
 create mode 100644 pelican-plugins/always_modified/README.md
 create mode 100644 pelican-plugins/always_modified/__init__.py
 create mode 100644 pelican-plugins/always_modified/always_modified.py
 create mode 100644 pelican-plugins/asciidoc_reader/README.rst
 create mode 100644 pelican-plugins/asciidoc_reader/__init__.py
 create mode 100644 pelican-plugins/asciidoc_reader/asciidoc_reader.py
 create mode 100644 pelican-plugins/asciidoc_reader/test_asciidoc_reader.py
 create mode 100644 pelican-plugins/asciidoc_reader/test_data/article_with_asc_extension.asc
 create mode 100644 pelican-plugins/asciidoc_reader/test_data/article_with_asc_options.asc
 create mode 100644 pelican-plugins/assets/Readme.rst
 create mode 100644 pelican-plugins/assets/__init__.py
 create mode 100644 pelican-plugins/assets/assets.py
 create mode 100755 pelican-plugins/assets/requirements.txt
 create mode 100644 pelican-plugins/assets/test_assets.py
 create mode 100644 pelican-plugins/assets/test_data/static/css/style.min.css
 create mode 100644 pelican-plugins/assets/test_data/static/css/style.scss
 create mode 100644 pelican-plugins/assets/test_data/templates/base.html
 create mode 100644 pelican-plugins/author_images/README.md
 create mode 100644 pelican-plugins/author_images/__init__.py
 create mode 100644 pelican-plugins/author_images/author_images.py
 create mode 100755 pelican-plugins/author_images/generate_hashsum.py
 create mode 100644 pelican-plugins/autopages/LICENSE
 create mode 100644 pelican-plugins/autopages/README.md
 create mode 100644 pelican-plugins/autopages/__init__.py
 create mode 100644 pelican-plugins/autopages/autopages.py
 create mode 100644 pelican-plugins/better_codeblock_line_numbering/Readme.md
 create mode 100644 pelican-plugins/better_codeblock_line_numbering/__init__.py
 create mode 100644 pelican-plugins/better_codeblock_line_numbering/better_codeblock_line_numbering.py
 create mode 100644 pelican-plugins/better_figures_and_images/README.rst
 create mode 100644 pelican-plugins/better_figures_and_images/__init__.py
 create mode 100644 pelican-plugins/better_figures_and_images/better_figures_and_images.py
 create mode 100644 pelican-plugins/better_figures_and_images/requirements.txt
 create mode 100644 pelican-plugins/better_figures_and_images/test_data/dummy-200x200.png
 create mode 100644 pelican-plugins/better_figures_and_images/test_data/dummy-250x300.png
 create mode 100644 pelican-plugins/better_figures_and_images/test_data/dummy-800x300.png
 create mode 100644 pelican-plugins/better_figures_and_images/test_data/images-test.html
 create mode 100644 pelican-plugins/better_figures_and_images/test_data/images-test.rst
 create mode 100644 pelican-plugins/better_tables/LICENSE
 create mode 100644 pelican-plugins/better_tables/README.md
 create mode 100644 pelican-plugins/better_tables/__init__.py
 create mode 100644 pelican-plugins/better_tables/better_tables.py
 create mode 100644 pelican-plugins/bootstrap-rst/140x140.png
 create mode 100644 pelican-plugins/bootstrap-rst/171x180.png
 create mode 100644 pelican-plugins/bootstrap-rst/300x200.png
 create mode 100644 pelican-plugins/bootstrap-rst/LICENSE
 create mode 100644 pelican-plugins/bootstrap-rst/Makefile
 create mode 100644 pelican-plugins/bootstrap-rst/README.rst
 create mode 100644 pelican-plugins/bootstrap-rst/__init__.py
 create mode 100755 pelican-plugins/bootstrap-rst/bootstrap.py
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.css
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.css.map
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.min.css
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.css
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.css.map
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.min.css
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.eot
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.svg
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.ttf
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.woff
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/js/bootstrap.js
 create mode 100644 pelican-plugins/bootstrap-rst/bootstrap/js/bootstrap.min.js
 create mode 100644 pelican-plugins/bootstrap-rst/custom.css
 create mode 100644 pelican-plugins/bootstrap-rst/directives.py
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS-buttons.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS-code.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS-grid-system.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS-helpers.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS-images.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS-overview.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS-tables.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS-typography.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/CSS.rst
 create mode 100644 pelican-plugins/bootstrap-rst/doc/bootstrap-glyphs.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/bootstrap-roles.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-alerts.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-badges.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-breadcrumbs.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-glyphicons.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-jumbotron.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-labels.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-page-header.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-pagination.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-progress.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-thumbnails.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components-wells.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/components.rst
 create mode 100644 pelican-plugins/bootstrap-rst/doc/getting-started.rst
 create mode 100644 pelican-plugins/bootstrap-rst/doc/glyphicons-defs.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/glyphicons-list.txt
 create mode 100644 pelican-plugins/bootstrap-rst/doc/index.rst
 create mode 100644 pelican-plugins/bootstrap-rst/docs-min.css
 create mode 100644 pelican-plugins/bootstrap-rst/make-glyphicons.py
 create mode 100644 pelican-plugins/bootstrap-rst/page.tmpl
 create mode 100644 pelican-plugins/bootstrap-rst/pygments.css
 create mode 100644 pelican-plugins/bootstrap-rst/roles.py
 create mode 100644 pelican-plugins/category_meta/README.md
 create mode 100644 pelican-plugins/category_meta/__init__.py
 create mode 100644 pelican-plugins/category_meta/category_meta.py
 create mode 100644 pelican-plugins/clean_summary/README.md
 create mode 100644 pelican-plugins/clean_summary/__init__.py
 create mode 100644 pelican-plugins/clean_summary/clean_summary.py
 create mode 100644 pelican-plugins/code_include/README.rst
 create mode 100644 pelican-plugins/code_include/__init__.py
 create mode 100644 pelican-plugins/code_include/code_include.py
 create mode 100644 pelican-plugins/collate_content/.gitignore
 create mode 100644 pelican-plugins/collate_content/LICENSE
 create mode 100644 pelican-plugins/collate_content/README.md
 create mode 100644 pelican-plugins/collate_content/__init__.py
 create mode 100644 pelican-plugins/collate_content/collate_content.py
 create mode 100644 pelican-plugins/collate_content/test_collate_content.py
 create mode 100644 pelican-plugins/creole_reader/Readme.md
 create mode 100644 pelican-plugins/creole_reader/__init__.py
 create mode 100644 pelican-plugins/creole_reader/creole_reader.py
 create mode 100644 pelican-plugins/css-html-js-minify/__init__.py
 create mode 100644 pelican-plugins/css-html-js-minify/css_html_js_minify.py
 create mode 100644 pelican-plugins/css-html-js-minify/readme.rst
 create mode 100644 pelican-plugins/ctags_generator/README.md
 create mode 100644 pelican-plugins/ctags_generator/__init__.py
 create mode 100644 pelican-plugins/ctags_generator/ctags_generator.py
 create mode 100644 pelican-plugins/ctags_generator/test_content/article_with_duplicate_tags_authors.md
 create mode 100644 pelican-plugins/ctags_generator/test_content/article_with_markdown_and_nonascii_summary.md
 create mode 100644 pelican-plugins/ctags_generator/test_content/article_with_md_extension.md
 create mode 100644 pelican-plugins/ctags_generator/test_ctags_generator.py
 create mode 100644 pelican-plugins/custom_article_urls/README.md
 create mode 100644 pelican-plugins/custom_article_urls/__init__.py
 create mode 100644 pelican-plugins/custom_article_urls/custom_article_urls.py
 create mode 100644 pelican-plugins/dateish/Readme.rst
 create mode 100644 pelican-plugins/dateish/__init__.py
 create mode 100644 pelican-plugins/dateish/dateish.py
 create mode 100644 pelican-plugins/disqus_static/README.rst
 create mode 100644 pelican-plugins/disqus_static/__init__.py
 create mode 100644 pelican-plugins/disqus_static/disqus_static.py
 create mode 100755 pelican-plugins/disqus_static/requirements.txt
 create mode 100644 pelican-plugins/events/README.md
 create mode 100644 pelican-plugins/events/__init__.py
 create mode 100644 pelican-plugins/events/events.py
 create mode 100644 pelican-plugins/events/events_list.html
 create mode 100755 pelican-plugins/events/requirements.txt
 create mode 100755 pelican-plugins/events/requiremets.txt
 create mode 100644 pelican-plugins/extract_toc/README.md
 create mode 100644 pelican-plugins/extract_toc/__init__.py
 create mode 100644 pelican-plugins/extract_toc/extract_toc.py
 create mode 100644 pelican-plugins/feed_summary/Readme.md
 create mode 100644 pelican-plugins/feed_summary/__init__.py
 create mode 100644 pelican-plugins/feed_summary/feed_summary.py
 create mode 100644 pelican-plugins/feed_summary/magic_set.py
 create mode 100644 pelican-plugins/figure-ref/LICENSE
 create mode 100644 pelican-plugins/figure-ref/README.md
 create mode 100644 pelican-plugins/figure-ref/__init__.py
 create mode 100644 pelican-plugins/figure-ref/figure-ref-40e04d32bff468a6b3e63c373c5d95fca39783fe.zip
 create mode 100644 pelican-plugins/figure-ref/figure-ref-40e04d32bff468a6b3e63c373c5d95fca39783fe/.gitignore
 create mode 100644 pelican-plugins/figure-ref/figure_ref.py
 create mode 100644 pelican-plugins/filetime_from_git/README.rst
 create mode 100644 pelican-plugins/filetime_from_git/__init__.py
 create mode 100755 pelican-plugins/filetime_from_git/actions.py
 create mode 100644 pelican-plugins/filetime_from_git/content_adapter.py
 create mode 100644 pelican-plugins/filetime_from_git/git_wrapper.py
 create mode 100644 pelican-plugins/filetime_from_git/registration.py
 create mode 100755 pelican-plugins/filetime_from_git/requirements.txt
 create mode 100644 pelican-plugins/filetime_from_git/utils.py
 create mode 100644 pelican-plugins/filetime_from_hg/README.rst
 create mode 100644 pelican-plugins/filetime_from_hg/__init__.py
 create mode 100755 pelican-plugins/filetime_from_hg/filetime_from_hg.py
 create mode 100755 pelican-plugins/filetime_from_hg/requirements.txt
 create mode 100644 pelican-plugins/footer_insert/README.md
 create mode 100644 pelican-plugins/footer_insert/__init__.py
 create mode 100644 pelican-plugins/footer_insert/footer_insert.py
 create mode 100644 pelican-plugins/gallery/README.md
 create mode 100644 pelican-plugins/gallery/__init__.py
 create mode 100644 pelican-plugins/gallery/gallery.py
 create mode 100644 pelican-plugins/gist_directive/README.rst
 create mode 100644 pelican-plugins/gist_directive/__init__.py
 create mode 100644 pelican-plugins/gist_directive/gist_directive.py
 create mode 100644 pelican-plugins/github-wiki/ReadMe.md
 create mode 100644 pelican-plugins/github-wiki/__init__.py
 create mode 100644 pelican-plugins/github-wiki/wiki.js
 create mode 100644 pelican-plugins/github-wiki/wiki.py
 create mode 100644 pelican-plugins/github-wiki/wikiarticle.html
 create mode 100644 pelican-plugins/github_activity/Readme.rst
 create mode 100644 pelican-plugins/github_activity/__init__.py
 create mode 100644 pelican-plugins/github_activity/github_activity.py
 create mode 100644 pelican-plugins/global_license/Readme.rst
 create mode 100644 pelican-plugins/global_license/__init__.py
 create mode 100644 pelican-plugins/global_license/global_license.py
 create mode 100644 pelican-plugins/glossary/__init__.py
 create mode 100644 pelican-plugins/glossary/glossary.py
 create mode 100644 pelican-plugins/glossary/readme.md
 create mode 100644 pelican-plugins/goodreads_activity/Readme.md
 create mode 100644 pelican-plugins/goodreads_activity/__init__.py
 create mode 100644 pelican-plugins/goodreads_activity/goodreads_activity.py
 create mode 100644 pelican-plugins/googleplus_comments/Readme.md
 create mode 100644 pelican-plugins/googleplus_comments/__init__.py
 create mode 100644 pelican-plugins/googleplus_comments/googleplus_comments.py
 create mode 100644 pelican-plugins/gravatar/Readme.rst
 create mode 100644 pelican-plugins/gravatar/__init__.py
 create mode 100644 pelican-plugins/gravatar/gravatar.py
 create mode 100644 pelican-plugins/gzip_cache/Readme.rst
 create mode 100644 pelican-plugins/gzip_cache/__init__.py
 create mode 100644 pelican-plugins/gzip_cache/gzip_cache.py
 create mode 100644 pelican-plugins/gzip_cache/test_gzip_cache.py
 create mode 100644 pelican-plugins/headerid/README.rst
 create mode 100644 pelican-plugins/headerid/__init__.py
 create mode 100644 pelican-plugins/headerid/headerid.py
 create mode 100644 pelican-plugins/html_entity/README.rst
 create mode 100644 pelican-plugins/html_entity/__init__.py
 create mode 100644 pelican-plugins/html_entity/html_entity.py
 create mode 100644 pelican-plugins/html_rst_directive/Readme.rst
 create mode 100644 pelican-plugins/html_rst_directive/__init__.py
 create mode 100644 pelican-plugins/html_rst_directive/html_rst_directive.py
 create mode 100644 pelican-plugins/i18n_subsites/README.rst
 create mode 100644 pelican-plugins/i18n_subsites/__init__.py
 create mode 100644 pelican-plugins/i18n_subsites/i18n_subsites.py
 create mode 100644 pelican-plugins/i18n_subsites/implementing_language_buttons.rst
 create mode 100644 pelican-plugins/i18n_subsites/localizing_using_jinja2.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/__init__.py
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/images/img.png
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-cz.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-de.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-en.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/pages/untranslated-page.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/translated_article-cz.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/translated_article-de.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/translated_article-en.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/content/untranslated_article-en.rst
 create mode 100644 pelican-plugins/i18n_subsites/test_data/localized_theme/babel.cfg
 create mode 100644 pelican-plugins/i18n_subsites/test_data/localized_theme/messages.pot
 create mode 100644 pelican-plugins/i18n_subsites/test_data/localized_theme/static/style.css
 create mode 100644 pelican-plugins/i18n_subsites/test_data/localized_theme/templates/base.html
 create mode 100644 pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.mo
 create mode 100644 pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.po
 create mode 100644 pelican-plugins/i18n_subsites/test_data/pelicanconf.py
 create mode 100644 pelican-plugins/i18n_subsites/test_i18n_subsites.py
 create mode 100644 pelican-plugins/ical/Readme.rst
 create mode 100644 pelican-plugins/ical/__init__.py
 create mode 100644 pelican-plugins/ical/ical.py
 create mode 100755 pelican-plugins/ical/requirements.txt
 create mode 100644 pelican-plugins/interlinks/__init__.py
 create mode 100644 pelican-plugins/interlinks/interlinks.py
 create mode 100644 pelican-plugins/interlinks/readme.md
 create mode 100644 pelican-plugins/interlinks/test_data/testme.md
 create mode 100644 pelican-plugins/jinja2content/README.md
 create mode 100644 pelican-plugins/jinja2content/__init__.py
 create mode 100644 pelican-plugins/jinja2content/jinja2content.py
 create mode 100644 pelican-plugins/jpeg_reader/.gitignore
 create mode 100644 pelican-plugins/jpeg_reader/README.md
 create mode 100644 pelican-plugins/jpeg_reader/__init__.py
 create mode 100644 pelican-plugins/jpeg_reader/constants.py
 create mode 100644 pelican-plugins/jpeg_reader/exiv2_parser.py
 create mode 100644 pelican-plugins/jpeg_reader/jpeg_reader.py
 create mode 100644 pelican-plugins/jpeg_reader/test_exiv2_parser.py
 create mode 100644 pelican-plugins/jpeg_reader/util.py
 create mode 120000 pelican-plugins/latex
 create mode 100644 pelican-plugins/libravatar/.gitignore
 create mode 100644 pelican-plugins/libravatar/Readme.md
 create mode 100644 pelican-plugins/libravatar/__init__.py
 create mode 100644 pelican-plugins/libravatar/libravatar.py
 create mode 100644 pelican-plugins/libravatar/test_data/theme/templates/article.html
 create mode 100644 pelican-plugins/libravatar/test_libravatar.py
 create mode 100644 pelican-plugins/linker/Readme.md
 create mode 100644 pelican-plugins/linker/__init__.py
 create mode 100644 pelican-plugins/linker/content_objects.py
 create mode 100644 pelican-plugins/linker/linker.py
 create mode 100644 pelican-plugins/linker/mailto.py
 create mode 100644 pelican-plugins/liquid_tags/.gitignore
 create mode 100644 pelican-plugins/liquid_tags/Readme.md
 create mode 100644 pelican-plugins/liquid_tags/__init__.py
 create mode 100644 pelican-plugins/liquid_tags/audio.py
 create mode 100644 pelican-plugins/liquid_tags/b64img.py
 create mode 100644 pelican-plugins/liquid_tags/content/test_data/main.c
 create mode 100644 pelican-plugins/liquid_tags/content/test_data/main_cz.c
 create mode 100644 pelican-plugins/liquid_tags/diag.py
 create mode 100644 pelican-plugins/liquid_tags/flickr.py
 create mode 100644 pelican-plugins/liquid_tags/generic.py
 create mode 100644 pelican-plugins/liquid_tags/giphy.py
 create mode 100644 pelican-plugins/liquid_tags/gram.py
 create mode 100644 pelican-plugins/liquid_tags/graphviz.py
 create mode 100644 pelican-plugins/liquid_tags/img.py
 create mode 100644 pelican-plugins/liquid_tags/include_code.py
 create mode 100644 pelican-plugins/liquid_tags/liquid_tags.py
 create mode 100644 pelican-plugins/liquid_tags/literal.py
 create mode 100644 pelican-plugins/liquid_tags/mdx_liquid_tags.py
 create mode 100644 pelican-plugins/liquid_tags/notebook.py
 create mode 100644 pelican-plugins/liquid_tags/pelicanhtml_1.tpl
 create mode 100644 pelican-plugins/liquid_tags/pelicanhtml_2.tpl
 create mode 100644 pelican-plugins/liquid_tags/pelicanhtml_3.tpl
 create mode 100644 pelican-plugins/liquid_tags/pygalcharts.py
 create mode 100755 pelican-plugins/liquid_tags/requirements.txt
 create mode 100644 pelican-plugins/liquid_tags/soundcloud.py
 create mode 100644 pelican-plugins/liquid_tags/speakerdeck.py
 create mode 100644 pelican-plugins/liquid_tags/spotify.py
 create mode 100644 pelican-plugins/liquid_tags/test_audio.py
 create mode 100644 pelican-plugins/liquid_tags/test_data/__init__.py
 create mode 100644 pelican-plugins/liquid_tags/test_data/content/notebooks/test_nbformat3.ipynb
 create mode 100644 pelican-plugins/liquid_tags/test_data/content/notebooks/test_nbformat4.ipynb
 create mode 100644 pelican-plugins/liquid_tags/test_data/content/test-generic-config-tag.md
 create mode 100644 pelican-plugins/liquid_tags/test_data/content/test-ipython-notebook-nbformat3.md
 create mode 100644 pelican-plugins/liquid_tags/test_data/content/test-ipython-notebook-nbformat4.md
 create mode 100644 pelican-plugins/liquid_tags/test_data/flickr.json
 create mode 100644 pelican-plugins/liquid_tags/test_data/giphy.json
 create mode 100644 pelican-plugins/liquid_tags/test_data/pelicanconf.py
 create mode 120000 pelican-plugins/liquid_tags/test_data/pelicanhtml_2.tpl
 create mode 120000 pelican-plugins/liquid_tags/test_data/pelicanhtml_3.tpl
 create mode 100644 pelican-plugins/liquid_tags/test_flickr.py
 create mode 100644 pelican-plugins/liquid_tags/test_generation.py
 create mode 100644 pelican-plugins/liquid_tags/test_generic.py
 create mode 100644 pelican-plugins/liquid_tags/test_giphy.py
 create mode 100644 pelican-plugins/liquid_tags/test_include_code.py
 create mode 100644 pelican-plugins/liquid_tags/test_notebook.py
 create mode 100644 pelican-plugins/liquid_tags/test_soundcloud.py
 create mode 100644 pelican-plugins/liquid_tags/test_video.py
 create mode 100644 pelican-plugins/liquid_tags/test_youtube.py
 create mode 100644 pelican-plugins/liquid_tags/tox.ini
 create mode 100644 pelican-plugins/liquid_tags/video.py
 create mode 100644 pelican-plugins/liquid_tags/vimeo.py
 create mode 100644 pelican-plugins/liquid_tags/youtube.py
 create mode 100644 pelican-plugins/md_inline_extension/Readme.md
 create mode 100644 pelican-plugins/md_inline_extension/__init__.py
 create mode 100644 pelican-plugins/md_inline_extension/inline.py
 create mode 100644 pelican-plugins/md_inline_extension/pelican_inline_markdown_extension.py
 create mode 100644 pelican-plugins/members/Readme.rst
 create mode 100644 pelican-plugins/members/__init__.py
 create mode 100644 pelican-plugins/members/members.py
 create mode 100644 pelican-plugins/more_categories/README.md
 create mode 100644 pelican-plugins/more_categories/__init__.py
 create mode 100644 pelican-plugins/more_categories/more_categories.py
 create mode 100644 pelican-plugins/more_categories/test_data/article_with_multiple_categories.rst
 create mode 100644 pelican-plugins/more_categories/test_data/article_with_no_category.rst
 create mode 100644 pelican-plugins/more_categories/test_more_categories.py
 create mode 100644 pelican-plugins/multi_part/Readme.md
 create mode 100644 pelican-plugins/multi_part/__init__.py
 create mode 100644 pelican-plugins/multi_part/multi_part.py
 create mode 100644 pelican-plugins/neighbors/Readme.rst
 create mode 100644 pelican-plugins/neighbors/__init__.py
 create mode 100644 pelican-plugins/neighbors/neighbors.py
 create mode 100644 pelican-plugins/neighbors/test_data/article.md
 create mode 100644 pelican-plugins/neighbors/test_neighbors.py
 create mode 100644 pelican-plugins/optimize_images/Readme.md
 create mode 100644 pelican-plugins/optimize_images/__init__.py
 create mode 100644 pelican-plugins/optimize_images/optimize_images.py
 create mode 100644 pelican-plugins/org_python_reader/LICENSE
 create mode 100644 pelican-plugins/org_python_reader/README.org
 create mode 100644 pelican-plugins/org_python_reader/__init__.py
 create mode 100644 pelican-plugins/org_python_reader/org_python_reader.py
 create mode 100755 pelican-plugins/org_python_reader/requirements.txt
 create mode 100644 pelican-plugins/org_reader/LICENSE
 create mode 100644 pelican-plugins/org_reader/README.md
 create mode 100644 pelican-plugins/org_reader/__init__.py
 create mode 100644 pelican-plugins/org_reader/org_reader.el
 create mode 100644 pelican-plugins/org_reader/org_reader.py
 create mode 100644 pelican-plugins/pdf/Readme.rst
 create mode 100644 pelican-plugins/pdf/__init__.py
 create mode 100644 pelican-plugins/pdf/pdf.py
 create mode 100755 pelican-plugins/pdf/requirements.txt
 create mode 100644 pelican-plugins/pdf/test_pdf.py
 create mode 100644 pelican-plugins/pelican-cite/LICENSE
 create mode 100644 pelican-plugins/pelican-cite/README.md
 create mode 100644 pelican-plugins/pelican-cite/__init__.py
 create mode 100644 pelican-plugins/pelican-cite/pelican-cite-master/.gitignore
 create mode 100644 pelican-plugins/pelican-cite/pyproject.toml
 create mode 100755 pelican-plugins/pelican-cite/setup.py
 create mode 100644 pelican-plugins/pelican-cite/src/__init__.py
 create mode 100644 pelican-plugins/pelican-cite/src/pelican_cite/__init__.py
 create mode 100644 pelican-plugins/pelican-cite/src/pelican_cite/author_year.py
 create mode 100644 pelican-plugins/pelican-cite/src/pelican_cite/pelican_cite.py
 create mode 100644 pelican-plugins/pelican-rdf/ReadMe.md
 create mode 100644 pelican-plugins/pelican-rdf/__init__.py
 create mode 100644 pelican-plugins/pelican-rdf/pelican_rdf.py
 create mode 100644 pelican-plugins/pelican-rdf/sparql-queries/classes.sparql
 create mode 100644 pelican-plugins/pelican-rdf/sparql-queries/lov_metadata.sparql
 create mode 100644 pelican-plugins/pelican_comment_system/CHANGELOG.md
 create mode 100644 pelican-plugins/pelican_comment_system/Readme.md
 create mode 100644 pelican-plugins/pelican_comment_system/__init__.py
 create mode 100644 pelican-plugins/pelican_comment_system/avatars.py
 create mode 100644 pelican-plugins/pelican_comment_system/comment.py
 create mode 100644 pelican-plugins/pelican_comment_system/doc/avatars.md
 create mode 100644 pelican-plugins/pelican_comment_system/doc/feed.md
 create mode 100644 pelican-plugins/pelican_comment_system/doc/import.md
 create mode 100644 pelican-plugins/pelican_comment_system/doc/installation.md
 create mode 100644 pelican-plugins/pelican_comment_system/doc/quickstart.md
 create mode 100755 pelican-plugins/pelican_comment_system/identicon/LICENSE
 create mode 100755 pelican-plugins/pelican_comment_system/identicon/README.md
 create mode 100644 pelican-plugins/pelican_comment_system/identicon/__init__.py
 create mode 100755 pelican-plugins/pelican_comment_system/identicon/identicon.py
 create mode 100644 pelican-plugins/pelican_comment_system/import/__init__.py
 create mode 100644 pelican-plugins/pelican_comment_system/import/blogger_comment_export.py
 create mode 100644 pelican-plugins/pelican_comment_system/pelican_comment_system.py
 create mode 100644 pelican-plugins/pelican_comment_system/theme/static/js/comments.js
 create mode 100644 pelican-plugins/pelican_comment_system/theme/templates/pcs/comments.html
 create mode 100644 pelican-plugins/pelican_unity_webgl/LICENSE.txt
 create mode 100644 pelican-plugins/pelican_unity_webgl/README.rst
 create mode 100644 pelican-plugins/pelican_unity_webgl/UnityGameDirective.py
 create mode 100644 pelican-plugins/pelican_unity_webgl/__init__.py
 create mode 100644 pelican-plugins/pelican_unity_webgl/config.py
 create mode 100644 pelican-plugins/pelican_unity_webgl/template.txt
 create mode 100644 pelican-plugins/pelican_unity_webgl/test_unitywebgl.py
 create mode 100644 pelican-plugins/permalinks/README.md
 create mode 100644 pelican-plugins/permalinks/__init__.py
 create mode 100644 pelican-plugins/permalinks/permalinks.py
 create mode 100644 pelican-plugins/photos/README.md
 create mode 100644 pelican-plugins/photos/SourceCodePro-Bold.otf
 create mode 100644 pelican-plugins/photos/SourceCodePro-Regular.otf
 create mode 100644 pelican-plugins/photos/__init__.py
 create mode 100644 pelican-plugins/photos/licenses.json
 create mode 100644 pelican-plugins/photos/photos.py
 create mode 100644 pelican-plugins/photos/requirements.txt
 create mode 100644 pelican-plugins/photos/test_data/agallery/best.jpg
 create mode 100644 pelican-plugins/photos/test_data/agallery/captions.txt
 create mode 100644 pelican-plugins/photos/test_data/agallery/exif.txt
 create mode 100644 pelican-plugins/photos/test_data/agallery/night.png
 create mode 100644 pelican-plugins/photos/test_data/filename.md
 create mode 100644 pelican-plugins/photos/test_data/photo.md
 create mode 100644 pelican-plugins/photos/test_photos.py
 create mode 100644 pelican-plugins/plantuml/Readme.rst
 create mode 100644 pelican-plugins/plantuml/__init__.py
 create mode 100644 pelican-plugins/plantuml/generateUmlDiagram.py
 create mode 100755 pelican-plugins/plantuml/pandoc-plantuml
 create mode 100644 pelican-plugins/plantuml/plantuml_md.py
 create mode 100644 pelican-plugins/plantuml/plantuml_rst.py
 create mode 100755 pelican-plugins/plantuml/test_data/sequence.uml
 create mode 100644 pelican-plugins/plantuml/test_plantuml.py
 create mode 100644 pelican-plugins/post_stats/__init__.py
 create mode 100644 pelican-plugins/post_stats/post_stats.py
 create mode 100644 pelican-plugins/post_stats/readability.py
 create mode 100644 pelican-plugins/post_stats/readme.rst
 create mode 100644 pelican-plugins/random_article/Readme.md
 create mode 100644 pelican-plugins/random_article/__init__.py
 create mode 100644 pelican-plugins/random_article/random_article.py
 create mode 100644 pelican-plugins/read_more_link/Readme.md
 create mode 100644 pelican-plugins/read_more_link/__init__.py
 create mode 100644 pelican-plugins/read_more_link/read_more_link.py
 create mode 100644 pelican-plugins/read_more_link/requirements.txt
 create mode 100644 pelican-plugins/readtime/README.md
 create mode 100644 pelican-plugins/readtime/__init__.py
 create mode 100644 pelican-plugins/readtime/demo.png
 create mode 100644 pelican-plugins/readtime/readtime.py
 create mode 100644 pelican-plugins/reddit_poster/.gitignore
 create mode 100644 pelican-plugins/reddit_poster/Readme.md
 create mode 100644 pelican-plugins/reddit_poster/__init__.py
 create mode 100644 pelican-plugins/reddit_poster/redditconf.py.example
 create mode 100755 pelican-plugins/reddit_poster/requirements.txt
 create mode 100644 pelican-plugins/related_posts/Readme.rst
 create mode 100644 pelican-plugins/related_posts/__init__.py
 create mode 100644 pelican-plugins/related_posts/related_posts.py
 create mode 100644 pelican-plugins/render_math/Readme.md
 create mode 100644 pelican-plugins/render_math/__init__.py
 create mode 100644 pelican-plugins/render_math/math.py
 create mode 100644 pelican-plugins/render_math/mathjax_script_template
 create mode 100644 pelican-plugins/render_math/pelican_mathjax_markdown_extension.py
 create mode 100644 pelican-plugins/render_math/requirements.txt
 create mode 100755 pelican-plugins/render_math/test_data/article.ipynb
 create mode 100755 pelican-plugins/render_math/test_data/article.nbdata
 create mode 100644 pelican-plugins/render_math/test_data/article_with_math_formulas.rst
 create mode 100644 pelican-plugins/render_math/test_render_math.py
 create mode 100644 pelican-plugins/representative_image/Readme.md
 create mode 100644 pelican-plugins/representative_image/__init__.py
 create mode 100644 pelican-plugins/representative_image/representative_image.py
 create mode 100644 pelican-plugins/representative_image/requirements.txt
 create mode 100755 pelican-plugins/representative_image/test_representative_image.py
 create mode 100644 pelican-plugins/requirements.txt
 create mode 100644 pelican-plugins/rmd_reader/Readme.md
 create mode 100644 pelican-plugins/rmd_reader/__init__.py
 create mode 100644 pelican-plugins/rmd_reader/requirements.txt
 create mode 100644 pelican-plugins/rmd_reader/rmd_reader.py
 create mode 100644 pelican-plugins/rmd_reader/test_rmd_reader.py
 create mode 100644 pelican-plugins/section_number/Readme.md
 create mode 100644 pelican-plugins/section_number/__init__.py
 create mode 100644 pelican-plugins/section_number/section_number.py
 create mode 100644 pelican-plugins/series/Readme.md
 create mode 100644 pelican-plugins/series/__init__.py
 create mode 100644 pelican-plugins/series/series.py
 create mode 100644 pelican-plugins/shaarli_poster/README.md
 create mode 100644 pelican-plugins/shaarli_poster/__init__.py
 create mode 100644 pelican-plugins/shaarli_poster/requirements.txt
 create mode 100644 pelican-plugins/shaarli_poster/shaarli_poster.py
 create mode 100644 pelican-plugins/shaarli_poster/test_content/dummy_article.md
 create mode 100644 pelican-plugins/shaarli_poster/test_content/other_dummy_article.md
 create mode 100644 pelican-plugins/shaarli_poster/test_shaarli_poster.py
 create mode 100644 pelican-plugins/share_post/README.md
 create mode 100644 pelican-plugins/share_post/__init__.py
 create mode 100644 pelican-plugins/share_post/share_post.py
 create mode 100644 pelican-plugins/shortcodes/README.md
 create mode 100644 pelican-plugins/shortcodes/__init__.py
 create mode 100644 pelican-plugins/shortcodes/shortcodes.py
 create mode 100644 pelican-plugins/shortcodes/test_shortcodes.py
 create mode 100644 pelican-plugins/show_source/ReadMe.rst
 create mode 100644 pelican-plugins/show_source/__init__.py
 create mode 100644 pelican-plugins/show_source/show_source.py
 create mode 100644 pelican-plugins/simple_footnotes/README.md
 create mode 100644 pelican-plugins/simple_footnotes/__init__.py
 create mode 100755 pelican-plugins/simple_footnotes/requirements.txt
 create mode 100644 pelican-plugins/simple_footnotes/simple_footnotes.py
 create mode 100644 pelican-plugins/simple_footnotes/test_simple_footnotes.py
 create mode 100644 pelican-plugins/sitemap/Readme.rst
 create mode 100644 pelican-plugins/sitemap/__init__.py
 create mode 100644 pelican-plugins/sitemap/sitemap.py
 create mode 100644 pelican-plugins/slim/README.md
 create mode 100644 pelican-plugins/slim/__init__.py
 create mode 100644 pelican-plugins/slim/slim.py
 create mode 100644 pelican-plugins/static_comments/Readme.md
 create mode 100644 pelican-plugins/static_comments/__init__.py
 create mode 100644 pelican-plugins/static_comments/static_comments.py
 create mode 100644 pelican-plugins/sub_parts/README.md
 create mode 100644 pelican-plugins/sub_parts/__init__.py
 create mode 100644 pelican-plugins/sub_parts/sub_parts.py
 create mode 100644 pelican-plugins/sub_parts/test_data/noparent.md
 create mode 100644 pelican-plugins/sub_parts/test_data/parent--implicit.md
 create mode 100644 pelican-plugins/sub_parts/test_data/parent-explicit.md
 create mode 100644 pelican-plugins/sub_parts/test_data/parent.md
 create mode 100644 pelican-plugins/sub_parts/test_sub_parts.py
 create mode 100644 pelican-plugins/subcategory/README.md
 create mode 100644 pelican-plugins/subcategory/__init__.py
 create mode 100644 pelican-plugins/subcategory/subcategory.py
 create mode 100644 pelican-plugins/summary/Readme.rst
 create mode 100644 pelican-plugins/summary/__init__.py
 create mode 100644 pelican-plugins/summary/requirements.txt
 create mode 100644 pelican-plugins/summary/summary.py
 create mode 100644 pelican-plugins/summary/test_summary.py
 create mode 100644 pelican-plugins/tag_cloud/README.rst
 create mode 100644 pelican-plugins/tag_cloud/__init__.py
 create mode 100644 pelican-plugins/tag_cloud/tag_cloud.py
 create mode 100644 pelican-plugins/tag_cloud/test_data/article_1.md
 create mode 100644 pelican-plugins/tag_cloud/test_data/article_2.md
 create mode 100644 pelican-plugins/tag_cloud/test_data/article_3.md
 create mode 100644 pelican-plugins/tag_cloud/test_data/article_4.md
 create mode 100644 pelican-plugins/tag_cloud/test_data/article_5.md
 create mode 100644 pelican-plugins/tag_cloud/test_tag_cloud.py
 create mode 100644 pelican-plugins/test_data/Readme.rst
 create mode 100644 pelican-plugins/test_data/__init__.py
 create mode 100644 pelican-plugins/test_data/content/2012-11-30_filename-metadata.rst
 create mode 100644 pelican-plugins/test_data/content/another_super_article-fr.rst
 create mode 100644 pelican-plugins/test_data/content/another_super_article.rst
 create mode 100644 pelican-plugins/test_data/content/article2-fr.rst
 create mode 100644 pelican-plugins/test_data/content/article2.rst
 create mode 100644 pelican-plugins/test_data/content/cat1/article1.rst
 create mode 100644 pelican-plugins/test_data/content/cat1/article2.rst
 create mode 100644 pelican-plugins/test_data/content/cat1/article3.rst
 create mode 100644 pelican-plugins/test_data/content/cat1/markdown-article.md
 create mode 100644 pelican-plugins/test_data/content/draft_article.rst
 create mode 100644 pelican-plugins/test_data/content/extra/robots.txt
 create mode 100644 pelican-plugins/test_data/content/pages/hidden_page.rst
 create mode 100644 pelican-plugins/test_data/content/pages/jinja2_template.html
 create mode 100644 pelican-plugins/test_data/content/pages/override_url_saveas.rst
 create mode 100644 pelican-plugins/test_data/content/pages/test_page.rst
 create mode 100644 pelican-plugins/test_data/content/pictures/Fat_Cat.jpg
 create mode 100644 pelican-plugins/test_data/content/pictures/Sushi.jpg
 create mode 100644 pelican-plugins/test_data/content/pictures/Sushi_Macro.jpg
 create mode 100644 pelican-plugins/test_data/content/super_article.rst
 create mode 100644 pelican-plugins/test_data/content/unbelievable.rst
 create mode 100644 pelican-plugins/test_data/content/unwanted_file
 create mode 100755 pelican-plugins/test_data/pelican.conf.py
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/css/main.css
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/css/pygment.css
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/css/reset.css
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/css/typogrify.css
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/css/wide.css
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/aboutme.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/bitbucket.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/delicious.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/facebook.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/github.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/gitorious.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/gittip.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/google-groups.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/google-plus.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/hackernews.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/lastfm.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/linkedin.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/reddit.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/rss.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/slideshare.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/speakerdeck.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/twitter.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/vimeo.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/static/images/icons/youtube.png
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/analytics.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/archives.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/article.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/article_infos.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/author.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/authors.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/base.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/category.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/comments.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/disqus_script.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/github.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/index.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/page.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/piwik.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/tag.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/taglist.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/translations.html
 create mode 100644 pelican-plugins/test_data/themes/notmyidea/templates/twitter.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/archives.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/article.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/author.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/base.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/categories.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/category.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/gosquared.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/index.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/page.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/pagination.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/tag.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/tags.html
 create mode 100644 pelican-plugins/test_data/themes/simple/templates/translations.html
 create mode 100644 pelican-plugins/textile_reader/Readme.textile
 create mode 100644 pelican-plugins/textile_reader/__init__.py
 create mode 100644 pelican-plugins/textile_reader/textile_reader.py
 create mode 100644 pelican-plugins/thumbnailer/Readme.md
 create mode 100644 pelican-plugins/thumbnailer/__init__.py
 create mode 100644 pelican-plugins/thumbnailer/test_data/expected_exact.jpg
 create mode 100644 pelican-plugins/thumbnailer/test_data/expected_height.jpg
 create mode 100644 pelican-plugins/thumbnailer/test_data/expected_square.jpg
 create mode 100644 pelican-plugins/thumbnailer/test_data/expected_width.jpg
 create mode 100644 pelican-plugins/thumbnailer/test_data/sample_image.jpg
 create mode 100644 pelican-plugins/thumbnailer/test_data/subdir/sample_image.jpg
 create mode 100644 pelican-plugins/thumbnailer/test_thumbnails.py
 create mode 100644 pelican-plugins/thumbnailer/thumbnailer.py
 create mode 100644 pelican-plugins/tipue_search/README.md
 create mode 100644 pelican-plugins/tipue_search/__init__.py
 create mode 100644 pelican-plugins/tipue_search/pelican/__init__.py
 create mode 100644 pelican-plugins/tipue_search/pelican/plugins/__init__.py
 create mode 100644 pelican-plugins/tipue_search/pelican/plugins/tipue_search/__init__.py
 create mode 100644 pelican-plugins/tipue_search/pelican/plugins/tipue_search/tipue_search.py
 create mode 100644 pelican-plugins/tipue_search/setup.py
 create mode 100644 pelican-plugins/touch/README.rst
 create mode 100644 pelican-plugins/touch/__init__.py
 create mode 100644 pelican-plugins/twitter_bootstrap_rst_directives/Demo.rst
 create mode 100644 pelican-plugins/twitter_bootstrap_rst_directives/Readme.rst
 create mode 100644 pelican-plugins/twitter_bootstrap_rst_directives/__init__.py
 create mode 100644 pelican-plugins/twitter_bootstrap_rst_directives/bootstrap_rst_directives.py
 create mode 100644 pelican-plugins/txt2tags_reader/LICENSE
 create mode 100644 pelican-plugins/txt2tags_reader/README.md
 create mode 100644 pelican-plugins/txt2tags_reader/__init__.py
 create mode 100644 pelican-plugins/txt2tags_reader/txt2tags_reader.py
 create mode 100644 pelican-plugins/video_privacy_enhancer/Readme.md
 create mode 100644 pelican-plugins/video_privacy_enhancer/__init__.py
 create mode 100644 pelican-plugins/video_privacy_enhancer/video_privacy_enhancer.py
 create mode 100644 pelican-plugins/video_privacy_enhancer/video_privacy_enhancer_jquery.js
 create mode 100644 pelican-plugins/video_privacy_enhancer/video_service_thumbnail_url_generating_functions.py
 create mode 100644 pelican-plugins/w3c_validate/README.md
 create mode 100644 pelican-plugins/w3c_validate/__init__.py
 create mode 100644 pelican-plugins/w3c_validate/requirements.txt
 create mode 100644 pelican-plugins/w3c_validate/test_content/getpelican.html
 create mode 100644 pelican-plugins/w3c_validate/test_w3c_validate.py
 create mode 100644 pelican-plugins/w3c_validate/wc3_validate.py
 create mode 100644 pelican-plugins/webring/README.md
 create mode 100644 pelican-plugins/webring/__init__.py
 create mode 100644 pelican-plugins/webring/example.png
 create mode 100644 pelican-plugins/webring/requirements.txt
 create mode 100644 pelican-plugins/webring/test_data/pelican-atom.xml
 create mode 100644 pelican-plugins/webring/test_data/pelican-rss.xml
 create mode 100644 pelican-plugins/webring/test_webring.py
 create mode 100644 pelican-plugins/webring/webring.py
 create mode 100644 pelican-plugins/yuicompressor/.gitignore
 create mode 100644 pelican-plugins/yuicompressor/README.md
 create mode 100644 pelican-plugins/yuicompressor/__init__.py
 create mode 100644 pelican-plugins/yuicompressor/yuicompressor.py

diff --git a/pelican-plugins/.gitignore b/pelican-plugins/.gitignore
new file mode 100644
index 0000000..b7d252a
--- /dev/null
+++ b/pelican-plugins/.gitignore
@@ -0,0 +1,13 @@
+*~
+._*
+.*.swp
+.*.swo
+*.pyc
+*.log
+.DS_Store
+.directory
+.idea
+.project
+.pydevproject
+__pycache__
+.vscode
diff --git a/pelican-plugins/.gitmodules b/pelican-plugins/.gitmodules
new file mode 100644
index 0000000..5310e4e
--- /dev/null
+++ b/pelican-plugins/.gitmodules
@@ -0,0 +1,144 @@
+[submodule "pelican-fontawesome"]
+	path = pelican-fontawesome
+	url = https://github.com/kura/pelican-fontawesome.git
+[submodule "pelican_youtube"]
+	path = pelican_youtube
+	url = https://github.com/kura/pelican_youtube.git
+[submodule "pelican_vimeo"]
+	path = pelican_vimeo
+	url = https://github.com/kura/pelican_vimeo.git
+[submodule "cjk-auto-spacing"]
+	path = cjk-auto-spacing
+	url = https://github.com/yuex/cjk-auto-spacing.git
+[submodule "pelican-gist"]
+	path = pelican-gist
+	url = https://github.com/streeter/pelican-gist.git
+[submodule "pelicanfly"]
+	path = pelicanfly
+	url = https://github.com/bmcorser/pelicanfly.git
+[submodule "pelican-flickr"]
+	path = pelican-flickr
+	url = https://github.com/La0/pelican-flickr.git
+[submodule "better_code_samples"]
+	path = better_code_samples
+	url = https://github.com/ChrislS/better_code_samples.git
+[submodule "pin_to_top"]
+	path = pin_to_top
+	url = https://github.com/Shaked/pin_to_top.git
+[submodule "pelican-githubprojects"]
+	path = pelican-githubprojects
+	url = https://github.com/kura/pelican-githubprojects.git
+[submodule "pelicanthemes-generator"]
+	path = pelicanthemes-generator
+	url = https://github.com/badele/pelicanthemes-generator
+[submodule "pelican-page-order"]
+	path = pelican-page-order
+	url = https://github.com/akhayyat/pelican-page-order.git
+[submodule "pelican-page-hierarchy"]
+	path = pelican-page-hierarchy
+	url = https://github.com/akhayyat/pelican-page-hierarchy.git
+[submodule "multi_neighbors"]
+	path = multi_neighbors
+	url = https://github.com/davidlesieur/multi_neighbors.git
+[submodule "pelican-langcategory"]
+	path = pelican-langcategory
+	url = https://github.com/CNBorn/pelican-langcategory.git
+[submodule "pandoc_reader"]
+	path = pandoc_reader
+	url = https://github.com/liob/pandoc_reader.git
+[submodule "bootstrapify"]
+	path = bootstrapify
+	url = https://github.com/ingwinlu/pelican-bootstrapify.git
+[submodule "pelican-jinja2content"]
+	path = pelican-jinja2content
+	url = https://github.com/joachimneu/pelican-jinja2content.git
+[submodule "panorama"]
+	path = panorama
+	url = https://github.com/romainx/panorama.git
+[submodule "pelican-genealogy"]
+	path = pelican-genealogy
+	url = https://github.com/zappala/pelican-genealogy
+[submodule "image_process"]
+	path = image_process
+	url = https://github.com/whiskyechobravo/image_process
+[submodule "pelican-open_graph"]
+	path = pelican-open_graph
+	url = https://github.com/whiskyechobravo/pelican-open_graph.git
+[submodule "replacer"]
+	path = replacer
+	url = https://github.com/narusemotoki/replacer
+[submodule "pelican-toc"]
+	path = pelican-toc
+	url = https://github.com/ingwinlu/pelican-toc
+[submodule "multimarkdown_reader"]
+	path = multimarkdown_reader
+	url = https://github.com/dames57/multimarkdown_reader.git
+[submodule "pelican_javascript"]
+	path = pelican_javascript
+	url = https://github.com/mortada/pelican_javascript.git
+[submodule "loadcsv"]
+	path = loadcsv
+	url = https://github.com/e9t/pelican-loadcsv
+[submodule "org_pandoc_reader"]
+	path = org_pandoc_reader
+	url = https://github.com/jo-tham/org_pandoc_reader.git
+[submodule "pdf-img"]
+	path = pdf-img
+	url = https://github.com/cmacmackin/pdf-img.git
+[submodule "pelican-cite"]
+	path = pelican-cite
+	url = https://github.com/cmacmackin/pelican-cite.git
+[submodule "figure-ref"]
+	path = figure-ref
+	url = https://github.com/cmacmackin/figure-ref
+[submodule "encrypt-content"]
+	path = encrypt-content
+	url = https://github.com/mindcruzer/pelican-encrypt-content
+[submodule "md-metayaml"]
+	path = md-metayaml
+	url = https://github.com/joachimneu/pelican-md-metayaml
+[submodule "backreftranslate"]
+	path = backreftranslate
+	url = https://github.com/daltonmatos/pelican-plugin-backref-translate
+[submodule "category_order"]
+	path = category_order
+	url = https://github.com/jhshi/pelican.plugins.category_order.git
+[submodule "ga_page_view"]
+	path = ga_page_view
+	url = https://github.com/jhshi/pelican.plugins.ga_page_view.git
+[submodule "post_revision"]
+	path = post_revision
+	url = https://github.com/jhshi/pelican.plugins.post_revision
+[submodule "linkclass"]
+	path = pelican-linkclass
+	url = https://github.com/rlaboiss/pelican-linkclass
+[submodule "just_table"]
+	path = just_table
+	url = https://github.com/burakkose/just_table
+[submodule "ace_editor"]
+	path = ace_editor
+	url = https://github.com/mothsART/ace_editor.git
+[submodule "mboxreader"]
+	path = pelican-mboxreader
+	url = https://github.com/TC01/pelican-mboxreader
+[submodule "pelican-version"]
+	path = pelican-version
+	url = https://github.com/Shaked/pelican-version
+[submodule "lightbox"]
+	path = lightbox
+	url = https://github.com/kura/lightbox
+[submodule "pelican-ipynb"]
+	path = pelican-ipynb
+	url = https://github.com/danielfrg/pelican-ipynb
+[submodule "deadlinks"]
+	path = deadlinks
+	url = https://github.com/silentlamb/pelican-deadlinks.git
+[submodule "pelican-ert"]
+	path = pelican-ert
+	url = https://github.com/nogaems/pelican-ert.git
+[submodule "pelican_meetup_info"]
+	path = pelican_meetup_info
+	url = https://github.com/tylerdave/pelican-meetup-info.git
+[submodule "similar_posts"]
+	path = similar_posts
+	url = https://github.com/davidlesieur/similar_posts.git
diff --git a/pelican-plugins/.travis.yml b/pelican-plugins/.travis.yml
new file mode 100644
index 0000000..3b92028
--- /dev/null
+++ b/pelican-plugins/.travis.yml
@@ -0,0 +1,33 @@
+language: python
+python:
+    - "3.7"
+cache: pip
+env:
+ - R_LIBS_USER=$TRAVIS_BUILD_DIR/R/Library
+cache:
+  directories:
+   - $R_LIBS_USER
+before_install:
+# By default R 3.2.3 is installed with xenial, but rpy2 requires R >= 3.3
+# Hence we add an extra deb package repo to get a more recent version:
+ - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
+ - sudo add-apt-repository 'deb [arch=amd64,i386] https://cloud.r-project.org/bin/linux/ubuntu xenial/'
+ - sudo apt-get update -qq
+ - sudo apt-get install -qq --no-install-recommends asciidoctor pandoc plantuml r-base ruby-sass
+ - mkdir -p $R_LIBS_USER
+ - echo 'install.packages("knitr", repos="https://cran.rstudio.com")' | R --no-save
+install:
+ - pip install -U -r requirements.txt
+ # Installing pelican in editable mode makes its tests.support package available to us
+ - pip install -e git+https://github.com/getpelican/pelican.git#egg=pelican
+ # The following commands install all plugins dependencies.
+ # The `grep` & `sed commands` below are needed because some submodules have conflicting requirements.
+ # cf. https://github.com/getpelican/pelican-plugins/issues/1170
+ - pip install -U -r <(grep -hv pelican */requirements.txt | sed 's/==/>=/')
+# We need to exclude the multimarkdown_reader & pandoc_reader plugins,
+# otherwise their BaseReader subclasses will be loaded by pelican.readers.Readers,
+# and override the default .md one.
+# We also need to exclude the image_process plugin as long as they are not fixed, cf. https://github.com/getpelican/pelican-plugins/issues/1170
+script: nosetests --with-summary-report
+   --exclude-dir=multimarkdown_reader --exclude-dir=pandoc_reader
+   --exclude-dir=image_process
diff --git a/pelican-plugins/Contributing.rst b/pelican-plugins/Contributing.rst
new file mode 100644
index 0000000..4647b3c
--- /dev/null
+++ b/pelican-plugins/Contributing.rst
@@ -0,0 +1,39 @@
+Contributing a plugin
+=====================
+
+Details regarding how to write a plugin are explained in the Pelican `docs`_.
+
+If you want to contribute, **please be sure** to read our general contributing
+`guidelines`_ first. Then you can fork this repository, create a new branch,
+make your changes, squash your commits, and issue your pull request from your
+new branch (i.e., **not** the ``master`` branch).
+
+Make sure that your plugin follows the structure below::
+
+    my_plugin
+       ├──  __init__.py
+       ├──  my_plugin.py
+       ├──  test_my_plugin.py
+       └──  ReadMe.rst / ReadMe.md
+
+``my_plugin.py`` is the actual plugin implementation. Include a brief
+explanation of what the plugin does as a module docstring. Put any further
+explanations and usage details into the ``ReadMe`` file.
+
+``__init__.py`` should contain a single line with ``from .my_plugin import *``.
+
+Place tests for your plugin in the same folder inside ``test_my_plugin.py``.
+If you need content or templates in your tests, you can use the main
+``test_data`` folder for that purpose.
+
+**Note:** Each plugin can contain a LICENSE file stating the license it's
+released under. If there is an absence of LICENSE then it defaults to the
+*GNU AFFERO GENERAL PUBLIC LICENSE Version 3*. Please refer to the ``LICENSE``
+file for the full text of the license.
+
+Before making your initial commit, please be sure to add an entry to the repo's
+top-level ``ReadMe`` file, adding your plugin to the list (in alphabetical
+order) and providing a brief description.
+
+.. _guidelines: http://docs.getpelican.com/en/latest/contribute.html#using-git-and-github
+.. _docs: http://docs.getpelican.com/en/latest/plugins.html#how-to-create-plugins
diff --git a/pelican-plugins/LICENSE b/pelican-plugins/LICENSE
new file mode 100644
index 0000000..ba67bd0
--- /dev/null
+++ b/pelican-plugins/LICENSE
@@ -0,0 +1,665 @@
+Unless the folder itself contains a LICENSE stating otherwise, all the files
+distributed here are released under the GNU AFFERO GENERAL PUBLIC LICENSE.
+
+
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+  A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+  The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+  An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU Affero General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Remote Network Interaction; Use with the GNU General Public License.
+
+  Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software.  This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/pelican-plugins/README.md b/pelican-plugins/README.md
new file mode 100644
index 0000000..b960572
--- /dev/null
+++ b/pelican-plugins/README.md
@@ -0,0 +1,81 @@
+# Pelican on GitLab Pages
+
+Example [Pelican] website using GitLab Pages. Check the resulting website here: <https://pages.gitlab.io/pelican>
+
+Learn more about [GitLab Pages](https://about.gitlab.com/stages-devops-lifecycle/pages/) and the [official
+documentation](https://docs.gitlab.com/ce/user/project/pages/), including
+[how to fork a project like this one to get started](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_two.html#fork-a-project-to-get-started-from).
+
+---
+
+## GitLab CI
+
+This project's static Pages are built by [GitLab CI][ci], following the steps
+defined in the file [`.gitlab-ci.yml`](.gitlab-ci.yml).
+
+## Building locally
+
+To work locally with this project, you'll have to follow the steps below:
+
+1. Fork, clone or download this project
+1. [Install][] Pelican
+1. Regenerate and serve on port 8000: `make devserver`
+1. Add content
+
+Read more at Pelican's [documentation].
+
+## GitLab User or Group Pages
+
+To use this project as your user/group website, you will need to perform
+some additional steps:
+
+1. Rename your project to `namespace.gitlab.io`, where `namespace` is
+your `username` or `groupname`. This can be done by navigating to your
+project's **Settings > General (Advanced)**.
+
+2. Adjust Pelican's `SITEURL` configuration setting in `publishconf.py` to
+the new URL (e.g. `https://namespace.gitlab.io`)
+
+Read more about [GitLab Pages for projects and user/group websites][pagesdoc].
+
+## Use a custom theme
+
+To use a custom theme:
+
+1. Visit <https://github.com/getpelican/pelican-themes> and pick the name of
+   the theme you want to use.
+1. Uncomment the following lines from `.gitlab-ci.yml`, replacing `<theme_name>`
+   with the name of the theme you chose:
+
+   ```yaml
+   - svn export https://github.com/getpelican/pelican-themes/trunk/<theme-name> /tmp/<theme-name>
+   - pelican-themes --install /tmp/<theme-name>
+   ```
+
+1. Edit `pelicanconf.py` and add the theme:
+
+   ```plaintext
+   THEME = '/tmp/<theme-name>'
+   ```
+
+For more information, see the discussion in [issue #1](https://gitlab.com/pages/pelican/-/issues/1).
+
+## Did you fork this project?
+
+If you forked this project for your own use, please go to your project's
+**Settings** and remove the forking relationship, which won't be necessary
+unless you want to contribute back to the upstream project.
+
+## Troubleshooting
+
+1. CSS is missing! That means two things:
+
+    Either that you have wrongly set up the CSS URL in your templates, or
+    your static generator has a configuration option that needs to be explicitly
+    set in order to serve static assets under a relative URL.
+
+[ci]: https://about.gitlab.com/gitlab-ci/
+[pelican]: http://blog.getpelican.com/
+[install]: https://docs.getpelican.com/en/stable/install.html
+[documentation]: http://docs.getpelican.com/
+[pagesdoc]: https://docs.gitlab.com/ce/user/project/pages/getting_started_part_one.html
diff --git a/pelican-plugins/Readme.rst b/pelican-plugins/Readme.rst
new file mode 100644
index 0000000..bb22b98
--- /dev/null
+++ b/pelican-plugins/Readme.rst
@@ -0,0 +1,348 @@
+Pelican Plugins
+###############
+
+**Important note:** We are in the process of migrating plugins from this monolithic repository to their own individual repositories under the new `Pelican Plugins`_ organization, a place for plugin authors to collaborate more broadly with Pelican maintainers and other members of the community. The intention is for all the plugins under the new organization to be in the new “namespace plugin” format, which means these plugins can easily be Pip-installed and recognized immediately by Pelican 4.5+ — without having to explicitly enable them.
+
+This transition process will take some time, so we appreciate your patience in the interim. If you would like to help speed up this transition, the following would be very helpful:
+
+* **If you find a plugin here that has not yet been migrated to the new organization**, create a new issue under this repository and communicate which plugin you would like to help migrate, after which a Pelican maintainer will guide you through the process.
+
+* **If you have come here to submit a pull request to add your plugin**, please consider instead moving your plugin under the `Pelican Plugins`_ organization. To get started, create a new issue under this repository with the details of your plugin, after which a Pelican maintainer will guide you through the process.
+
+Whether you are creating a new plugin or migrating an existing plugin, please use the provided `Cookiecutter template <https://github.com/getpelican/cookiecutter-pelican-plugin>`_ to generate a scaffolded namespace plugin that conforms to community conventions. Have a look at the `Simple Footnotes <https://github.com/pelican-plugins/simple-footnotes>`_ repository to see an example of a migrated plugin.
+
+The rest of the information below is relevant for legacy plugins but not for the new namespace plugins found at the `Pelican Plugins`_ organization.
+
+.. _Pelican Plugins: https://github.com/pelican-plugins
+
+How to use plugins
+==================
+
+The easiest way to install and use these plugins is to clone this repo::
+
+    git clone --recursive https://github.com/getpelican/pelican-plugins
+
+and activate the ones you want in your settings file::
+
+    PLUGIN_PATHS = ['path/to/pelican-plugins']
+    PLUGINS = ['assets', 'sitemap', 'gravatar']
+
+``PLUGIN_PATHS`` can be a path relative to your settings file or an absolute path.
+
+Alternatively, if plugins are in an importable path, you can omit ``PLUGIN_PATHS``
+and list them::
+
+    PLUGINS = ['assets', 'sitemap', 'gravatar']
+
+or you can ``import`` the plugin directly and give that::
+
+    import my_plugin
+    PLUGINS = [my_plugin, 'assets']
+
+Plugin descriptions
+===================
+
+Migration status:
+
+* (blank): Local hosted plugin is still waiting for migration work.
+* ⚠️ : Deprecated. Can be safely removed from this repository.
+* ❓: Externally maintained plugins that do not need explicit migration from the mono-repo. Migration work need to happen in the original owners' repo.
+* ✔ : Repository has been migrated to `Pelican Plugins`_ organization.
+
+================================================================  ========================================================================  ===========================================================
+Plugin                                                            ℹ️                                                                          Description
+================================================================  ========================================================================  ===========================================================
+Ace Editor                                                        `❓ <https://github.com/mothsART/ace_editor>`_                             Replace default **<code>** by an Ace__ code editor with settings configure on pelicanconf.py.
+
+`Always modified <./always_modified>`_                                                                                                       Copy created date metadata into modified date for easy "latest updates" indexes
+
+`AsciiDoc reader <./asciidoc_reader>`_                                                                                                       Use AsciiDoc to write your posts.
+
+Asset management                                                  `✔  <https://github.com/pelican-plugins/webassets>`_                       Use the Webassets module to manage assets such as CSS and JS files.
+
+`Author images <./author_images>`_                                                                                                           Adds support for author images and avatars.
+
+`Auto Pages <./autopages>`_                                                                                                                  Generate custom content for generated Author, Category, and Tag pages (e.g. author biography)
+
+Backref Translate                                                 `❓ <https://github.com/daltonmatos/pelican-plugin-backref-translate>`_    Add a new attribute (``is_translation_of``) to every article/page (which is a translation) pointing back to the original article/page which is being translated
+
+Better code samples                                               `❓ <https://github.com/classner/better_code_samples>`_                    Wraps ``table`` blocks with ``div > .hilitewrapper > .codehilitetable`` class attribute, allowing for scrollable code blocks.
+
+`Better code line numbers <./better_codeblock_line_numbering>`_                                                                              Allow code blocks with line numbers to wrap
+
+`Better figures/samples <./better_figures_and_images>`_                                                                                      Adds a ``style="width: ???px; height: auto;"`` attribute to any ``<img>`` tags in the content
+
+`Better tables <./better_tables>`_                                                                                                           Removes the excess attributes and elements in the HTML tables generated from reST.
+
+`bootstrap-rst <./bootstrap-rst>`_                                                                                                           Provides most (though not all) of Bootstrap's features as rst directives
+
+bootstrapify                                                      `❓ <https://github.com/ingwinlu/pelican-bootstrapify>`_                   Automatically add bootstraps default classes to your content
+
+`Category meta <./category_meta>`_                                                                                                           Read metadata for each category from an index file in that category's directory.
+
+Category Order                                                    `❓ <https://github.com/jhshi/pelican.plugins.category_order>`_            Order categories (and tags) by the number of articles in that category (or tag).
+
+CJK auto spacing                                                  `❓ <https://github.com/yuex/cjk-auto-spacing>`_                           Inserts spaces between Chinese/Japanese/Korean characters and English words
+
+`Clean summary <./clean_summary>`_                                                                                                           Cleans your summary of excess images
+
+`Code include <./code_include>`_                                                                                                             Includes Pygments highlighted code in reStructuredText
+
+`Collate content <./collate_content>`_                                                                                                       Makes categories of content available to the template as lists through a ``collations`` attribute
+
+`Creole reader <./creole_reader>`_                                                                                                           Allows you to write your posts using the wikicreole syntax
+
+`CSS HTML JS Minify <./css-html-js-minify>`_                                                                                                 Minifies all CSS, HTML and JavaScript files in the output path after site generation.
+
+`CTags generator <./ctags_generator>`_                                                                                                       Generates a "tags" file following the CTags in the "content/" directory, to provide autocompletion for code editors that support it.
+
+`Custom article URLs <./custom_article_urls>`_                                                                                               Adds support for defining different default URLs for different categories
+
+`Dateish <./dateish>`_                                                                                                                       Treat arbitrary metadata fields as datetime objects
+
+Dead Links                                                        `❓ <https://github.com/silentlamb/pelican-deadlinks>`_                    Manage dead links (website not available, errors such as 403, 404)
+
+`Disqus static comments <./disqus_static>`_                                                                                                  Adds a disqus_comments property to all articles. Comments are fetched at generation time using disqus API
+
+Encrypt content                                                   `❓ <https://github.com/mindcruzer/pelican-encrypt-content>`_              Password protect pages and articles
+
+`Events <./events>`_                                                                                                                         Add event start, duration, and location info to post metadata to generate an iCalendar file
+
+`Extract table of content <./extract_toc>`_                                                                                                  Extracts table of contents (ToC) from ``article.content``
+
+`Feed summary <./feed_summary>`_                                  ⚠️                                                                          Allows article summaries to be used in ATOM and RSS feeds instead of the entire article.
+
+Figure References                                                 `❓ <https://github.com/cmacmackin/figure-ref>`_                           Provides a system to number and references figures
+
+`Filetime from Git <./filetime_from_git>`_                                                                                                   Uses Git commit to determine page date
+
+`Filetime from Hg <./filetime_from_hg>`_                                                                                                     Uses Mercurial commit to determine page date
+
+`Footer Insert <./footer_insert>`_                                                                                                           Add standardized footer (e.g., author information) at end of every article
+
+GA Page View                                                      `❓ <https://github.com/jhshi/pelican.plugins.ga_page_view>`_              Display Google Analytics page views on individual articles and pages
+
+`Gallery <./gallery>`_                                                                                                                       Allows an article to contain an album of pictures
+
+`Gist directive <./gist_directive>`_                                                                                                         This plugin adds a ``gist`` reStructuredText directive.
+
+`GitHub wiki <./github-wiki>`_                                                                                                               Converts a flat github wiki into a structured read only wiki on your site
+
+`GitHub activity <./github_activity>`_                                                                                                       On the template side, you just have to iterate over the ``github_activity`` variable
+
+`Global license <./global_license>`_                                                                                                         Allows you to define a ``LICENSE`` setting and adds the contents of that license variable to the article's context
+
+`Glossary <./glossary>`_                                                                                                                     Adds a variable containing definitions extracted from definition lists in articles and pages. This variable is visible to all page templates.
+
+`Goodreads activity <./goodreads_activity>`_                                                                                                 Lists books from your Goodreads shelves
+
+`GooglePlus comments <./googleplus_comments>`_                                                                                               Adds GooglePlus comments to Pelican
+
+Gravatar                                                          `✔  <https://github.com/pelican-plugins/avatar>`_                          This plugin's functionality has been superseded by the newer Avatar plugin
+
+`Gzip cache <./gzip_cache>`_                                                                                                                 Enables certain web servers (e.g., Nginx) to use a static cache of gzip-compressed files to prevent the server from compressing files during an HTTP call
+
+`Headerid <./headerid>`_                                                                                                                     This plugin adds an anchor to each heading so you can deeplink to headers in reStructuredText articles.
+
+`HTML entities <./html_entity>`_                                                                                                             Allows you to enter HTML entities such as &copy;, &lt;, &#149; inline in a RST document
+
+`HTML tags for rST <./html_rst_directive>`_                                                                                                  Allows you to use HTML tags from within reST documents
+
+`I18N Sub-sites <./i18n_subsites>`_                                                                                                          Extends the translations functionality by creating internationalized sub-sites for the default site
+
+`ical <./ical>`_                                                                                                                             Looks for and parses an ``.ics`` file if it is defined in a given page's ``calendar`` metadata.
+
+Image Process                                                     `✔  <https://github.com/pelican-plugins/image-process>`_                   Automates the processing of images based on their class attributes
+
+`Interlinks <./interlinks>`_                                                                                                                 Lets you add frequently used URLs to your markup using short keywords
+
+Jinja2 Content                                                    `✔  <https://github.com/pelican-plugins/jinja2content>`_                   Allows the use of Jinja2 template code in articles, including ``include`` and ``import`` statements. Replacement for pelican-jinja2content.
+
+`JPEG Reader <./jpeg_reader>`_                                                                                                               Create image gallery pages based on content of JPEG metadata
+
+Just table                                                        `❓ <https://github.com/burakkose/just_table>`_                            Allows you to easily create and manage tables. You can embed the tables into posts with a simple way.
+
+Libravatar                                                        `✔  <https://github.com/pelican-plugins/avatar>`_                          Allows inclusion of user profile pictures from libravatar.org
+
+Lightbox                                                          `❓ <https://github.com/kura/lightbox>`_                                   A pure CSS lightbox for Pelican.
+
+`Linker <./linker>`_                                                                                                                         Allows the definition of custom linker commands in analogy to the builtin ``{filename}``, ``{attach}``, ``{category}``, ``{tag}``, ``{author}``, and ``{index}`` syntax
+
+Liquid-style tags                                                 `✔  <https://github.com/pelican-plugins/liquid-tags>`_                     Allows liquid-style tags to be inserted into markdown within Pelican documents
+
+Load CSV                                                          `❓ <https://github.com/e9t/pelican-loadcsv>`_                             Adds ``csv`` Jinja tag to display the contents of a CSV file as an HTML table
+
+Markdown-metaYAML                                                 `⚠️  <https://github.com/joachimneu/pelican-md-metayaml>`_                  Pelican reader to enable YAML-style metadata in markdown articles. See also: `YAML Metadata <https://github.com/pelican-plugins/yaml-metadata>`_
+
+`Markdown Inline Extension <./md_inline_extension>`_                                                                                         Enables you to add customize inline patterns to your markdown
+
+`Members <./members>`_                                                                                                                       Looks for a members metadata header containing key/value pairs and makes them available for use in templates.
+
+More Categories                                                   `✔  <https://github.com/pelican-plugins/more-categories>`_                 Multiple categories per article; nested categories (`foo/bar, foo/baz`)
+
+Multi Neighbors                                                   `❓ <https://github.com/davidlesieur/multi_neighbors>`_                    Adds a list of newer articles and a list of older articles to every article's context.
+
+`Multi parts posts <./multi_part>`_                               ⚠️                                                                          Allows you to write multi-part posts
+
+MultiMarkdown reader                                              `❓ <https://github.com/dames57/multimarkdown_reader>`_                    A MultiMarkdown reader.
+
+Neighbor articles                                                 `✔  <https://github.com/pelican-plugins/neighbors>`_                       Adds ``next_article`` (newer) and ``prev_article`` (older) variables to the article's context
+
+`Optimize images <./optimize_images>`_                                                                                                       Applies lossless compression on JPEG and PNG images
+
+Pandoc Org Reader                                                 `❓ <https://github.com/jo-tham/org_pandoc_reader>`_
+
+`Python Org Reader <./org_python_reader>`_
+
+`Org Reader <./org_reader>`_                                                                                                                 Create posts via Emacs Orgmode files
+
+Pandoc reader                                                     `✔  <https://github.com/pelican-plugins/pandoc-reader>`_
+
+Panorama                                                          `❓ <https://github.com/romainx/panorama>`_                                Creates charts from posts metadata
+
+PDF Images                                                        `❓ <https://github.com/cmacmackin/pdf-img>`_                              If an img tag contains a PDF, EPS or PS file as a source, this plugin generates a PNG preview which will then act as a link to the original file.
+
+PDF Generator                                                     `✔  <https://github.com/pelican-plugins/pdf>`_                             Automatically exports articles and pages as PDF files
+
+Pelican Cite                                                      `❓ <https://github.com/cmacmackin/pelican-cite>`_                         Produces inline citations and a bibliography in articles and pages, using a BibTeX file.
+
+pelican-ert                                                       `❓ <https://github.com/nogaems/pelican-ert>`_                             Allows you to add estimated reading time of an article
+
+Pelican-flickr                                                    `❓ <https://github.com/La0/pelican-flickr>`_                              Brings your Flickr photos & sets into your static website
+
+Pelican Genealogy                                                 `❓ <https://github.com/zappala/pelican-genealogy>`_                       Add surnames and people so metadata and context can be accessed from within a theme to provide surname and person pages
+
+Pelican Gist tag                                                  `❓ <https://github.com/streeter/pelican-gist>`_                           Easily embed GitHub Gists in your Pelican articles
+
+Pelican Github Projects                                           `❓ <https://github.com/kura/pelican-githubprojects>`_                     Embed a list of your public GitHub projects in your pages
+
+Jupyter Notebooks                                                 `❓ <https://github.com/danielfrg/pelican-jupyter>`_                       Provides two modes to use Jupyter notebooks in Pelican.
+
+Pelican Jinja2Content                                             `⚠️  <https://github.com/joachimneu/pelican-jinja2content>`_                Allows the use of Jinja2 template code in articles, including ``include`` and ``import`` statements
+
+Lang Category                                                     `❓ <https://github.com/CNBorn/pelican-langcategory>`_                     Make languages behave the same as categories (visitor can browse articles in certain language).
+
+Pelican Link Class                                                `✔  <https://github.com/pelican-plugins/linkclass>`_                       Set class attribute of ``<a>`` elements according to whether the link is external or internal
+
+Pelican Mbox Reader                                               `❓ <https://github.com/TC01/pelican-mboxreader>`_                         Generate articles automatically via email, given a path to a Unix mbox
+
+Pelican Open graph                                                `❓ <https://github.com/whiskyechobravo/pelican-open_graph>`_              Generates Open Graph tags for your articles
+
+Pelican Page Hierarchy                                            `❓ <https://github.com/akhayyat/pelican-page-hierarchy>`_                 Creates a URL hierarchy for pages that matches the filesystem hierarchy of their sources
+
+Pelican Page Order                                                `❓ <https://github.com/akhayyat/pelican-page-order>`_                     Adds a ``page_order`` attribute to all pages if one is not defined.
+
+`pelican-rdf <./pelican-rdf>`_                                                                                                               Allows the processing of .rdf vocabularies, and the generation of a lightweight documentation.
+
+pelican-toc                                                       `❓ <https://github.com/ingwinlu/pelican-toc>`_                            Generates a Table of Contents and make it available to the theme via article.toc
+
+Version Generator                                                 `❓ <https://github.com/Shaked/pelican-version>`_                          A simple version generator which generates an incremented version file.
+
+`Pelican Comment System <./pelican_comment_system>`_                                                                                         Allows you to add static comments to your articles
+
+pelican_javascript                                                `❓ <https://github.com/mortada/pelican_javascript>`_                      Allows you to embed Javascript and CSS files into individual articles
+
+Pelican Meetup Info                                               `❓ <https://github.com/tylerdave/pelican-meetup-info>`_                   Include your Meetup.com group and event information on generated pages and articles
+
+`Unity WebGL <./pelican_unity_webgl>`_                                                                                                       Easily embed Unity3d games into posts and pages
+
+Pelican Vimeo                                                     `❓ <https://github.com/kura/pelican_vimeo>`_                              Enables you to embed Vimeo videos in your pages and articles
+
+Pelican YouTube                                                   `❓ <https://github.com/kura/pelican_youtube>`_                            Enables you to embed YouTube videos in your pages and articles
+
+pelicanfly                                                        `❓ <https://github.com/bmcorser/pelicanfly>`_                             Lets you type things like ``i ♥ :fa-coffee:`` in your Markdown documents and have it come out as little Font Awesome icons in the browser
+
+Pelican Themes Generator                                          `❓ <https://github.com/badele/pelicanthemes-generator>`_                  Generates theme screenshots from the Pelican Themes repository
+
+`permalink <./permalinks>`_                                                                                                                  Enables a kind of permalink using html redirects.
+
+`Photos <./photos>`_                                               `✔  <https://github.com/pelican-plugins/photos>`                          Add a photo or a gallery of photos to an article, or include photos in the body text. Resize photos as needed.
+
+Pin to top                                                        `❓ <https://github.com/Shaked/pin_to_top>`_                               Pin Pelican's article(s) to top "Sticky article"
+
+`PlantUML <./plantuml>`_                                                                                                                     Allows you to define UML diagrams directly into rst documents using the great PlantUML tool
+
+Post Revision                                                     `❓ <https://github.com/jhshi/pelican.plugins.post_revision>`_             Extract article and page revision information from Git commit history
+
+`Post statistics <./post_stats>`_                                                                                                            Calculates various statistics about a post and store them in an article.stats dictionary
+
+`Random article <./random_article>`_                                                                                                         Generates a html file which redirect to a random article
+
+Read More link                                                    `✔  <https://github.com/pelican-plugins/read-more>`_                       Inserts an inline "read more" or "continue" link into the last html element of the object summary
+
+`Readtime <./readtime>`_                                                                                                                     Adds article estimated read time calculator to the site, in the form of '<n> minutes'.
+
+`Reddit poster <./reddit_poster>`_                                                                                                           You can use the 'subreddit' attribute in you articles to specify which subbreddit the article should be post in aside of your default sub.
+
+Related posts                                                     `✔  <https://github.com/pelican-plugins/related-posts>`_                   Adds the ``related_posts`` variable to the article's context
+
+Render Math                                                       `✔  <https://github.com/pelican-plugins/render-math>`_                     Render mathematics in content via the MathJax Javascript engine
+
+Replacer                                                          `❓ <https://github.com/narusemotoki/replacer>`_                           Replace a text of a generated HTML
+
+`Representative image <./representative_image>`_                                                                                             Extracts a representative image (i.e, featured image) from the article's summary or content
+
+`RMD Reader <./rmd_reader>`_                                                                                                                 Create posts via knitr RMarkdown files
+
+`Section number <./section_number>`_                                                                                                         Adds section numbers for article headers, in the form of ``2.3.3``
+
+Series                                                            `✔  <https://github.com/pelican-plugins/series>`_                          Groups related articles into a series
+
+`Shaarli poster <./shaarli_poster>`_                                                                                                         Upload newly redacted articles onto a specified `Shaarli <https://github.com/shaarli/Shaarli>`__ instance.
+
+Share post                                                        `✔  <https://github.com/pelican-plugins/share-post>`_                      Creates share URLs for the current article
+
+`Shortcodes <./shortcodes>`_                                                                                                                 Easy and explicit inline jinja2 macros
+
+Show Source                                                       `✔  <https://github.com/pelican-plugins/show-source>`_                     Place a link to the source text of your posts.
+
+Similar Posts                                                     `✔  <https://github.com/pelican-plugins/similar-posts>`_                   Adds a list of similar posts to every article's context.
+
+Simple footnotes                                                  `✔  <https://github.com/pelican-plugins/simple-footnotes>`_                Adds footnotes to blog posts
+
+Sitemap                                                           `✔  <https://github.com/pelican-plugins/sitemap>`_                         Generates plain-text or XML sitemaps
+
+`Slim <./slim>`_                                                                                                                             Render theme template files via Plim, a Python port of Slim, instead of Jinja
+
+`Static comments <./static_comments>`_                                                                                                       Allows you to add static comments to an article
+
+`Sub parts <./sub_parts>`_                                                                                                                   Break a very long article in parts, without polluting the timeline with lots of small articles.
+
+`Subcategory <./subcategory>`_                                                                                                               Adds support for subcategories
+
+`Summary <./summary>`_                                                                                                                       Allows easy, variable length summaries directly embedded into the body of your articles
+
+Tag Cloud                                                         `✔  <https://github.com/pelican-plugins/tag-cloud>`_                       Provides a tag cloud of frequently-used post tags
+
+`Textile Reader <./textile_reader>`_                                                                                                         Adds support for Textile markup
+
+Thumbnailer                                                       `✔  <https://github.com/pelican-plugins/thumbnailer>`_                     Creates thumbnails for all of the images found under a specific directory
+
+`Tipue Search <./tipue_search>`_                                                                                                             Serializes generated HTML to JSON that can be used by jQuery plugin - Tipue Search
+
+`Touch <./touch>`_                                                `✔  <https://github.com/pelican-plugins/touch>`_                           Does a touch on your generated files using the date metadata from the content
+
+`Twitter Bootstrap <./twitter_bootstrap_rst_directives>`_                                                                                    Defines some rst directive that enable a clean usage of the twitter bootstrap CSS and Javascript components
+
+`txt2tags_reader <./txt2tags_reader>`_                                                                                                       Reader that renders txt2tags markup in content
+
+`Video Privacy Enhancer <./video_privacy_enhancer>`_                                                                                         Increases user privacy by stopping YouTube, Google, et al from placing cookies via embedded video
+
+`W3C validate <./w3c_validate>`_                                                                                                             Submits generated HTML content to the W3C Markup Validation Service
+
+Webring                                                           `✔  <https://github.com/pelican-plugins/webring>`_                         Add a webring to your site from a list of web feeds (e.g. RSS/Atom)
+
+`Yuicompressor <./yuicompressor>`_                                                                                                           Minify CSS and JS files on building step
+================================================================  ========================================================================  ===========================================================
+
+__ https://ace.c9.io
+
+Please refer to the ``Readme`` file in a plugin's folder for detailed information about
+that plugin.
+
+Contributing a plugin
+=====================
+
+Please refer to the `Contributing`_ file.
+
+.. _Contributing: Contributing.rst
diff --git a/pelican-plugins/__init__.py b/pelican-plugins/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/always_modified/README.md b/pelican-plugins/always_modified/README.md
new file mode 100644
index 0000000..585e67b
--- /dev/null
+++ b/pelican-plugins/always_modified/README.md
@@ -0,0 +1,14 @@
+# Always Modified
+
+Say you want to sort by modified date/time in a theme template, but not all
+your articles have modified date/timestamps explicitly defined in article
+metadata. This plugin facilitates that sorting by assuming the modified date
+(if undefined) is equal to the created date.
+
+## Usage
+
+1. Add `ALWAYS_MODIFIED = True` to your settings file.
+2. Now you can sort by modified date in your templates:
+
+    {% for article in articles|sort(reverse=True,attribute='modified') %}
+
diff --git a/pelican-plugins/always_modified/__init__.py b/pelican-plugins/always_modified/__init__.py
new file mode 100644
index 0000000..1fd5e14
--- /dev/null
+++ b/pelican-plugins/always_modified/__init__.py
@@ -0,0 +1 @@
+from .always_modified import *
diff --git a/pelican-plugins/always_modified/always_modified.py b/pelican-plugins/always_modified/always_modified.py
new file mode 100644
index 0000000..0f2578b
--- /dev/null
+++ b/pelican-plugins/always_modified/always_modified.py
@@ -0,0 +1,20 @@
+"""
+If "modified" date/time is not defined in article metadata, fall back to the "created" date.
+"""
+
+from pelican import signals
+from pelican.contents import Content, Article
+
+def add_modified(content):
+    if not isinstance(content, Article):
+        return
+    
+    if not content.settings.get('ALWAYS_MODIFIED', False):
+        return
+
+    if hasattr(content, 'date') and not hasattr(content, 'modified'):
+        content.modified = content.date
+        content.locale_modified = content.locale_date
+    
+def register():
+    signals.content_object_init.connect(add_modified)
diff --git a/pelican-plugins/asciidoc_reader/README.rst b/pelican-plugins/asciidoc_reader/README.rst
new file mode 100644
index 0000000..1700c28
--- /dev/null
+++ b/pelican-plugins/asciidoc_reader/README.rst
@@ -0,0 +1,49 @@
+AsciiDoc Reader
+###############
+
+This plugin allows you to use `AsciiDoc <http://www.methods.co.nz/asciidoc/>`_
+to write your posts. File extension should be ``.asc``, ``.adoc``,
+or ``.asciidoc``.
+
+Dependency
+----------
+
+There are two command line utilities commonly used to render AsciiDoc:
+``asciidoc`` and ``asciidoctor``. One of the two will need to be installed and
+on the PATH.
+
+**Note**: The ``asciidoctor`` utility is recommended since the original
+``asciidoc`` is no longer maintained.
+
+Settings
+--------
+
+========================================  =======================================================
+Setting name (followed by default value)  What does it do?
+========================================  =======================================================
+``ASCIIDOC_CMD = 'asciidoc'``             Selects which utility to use for rendering. Will
+                                          autodetect utility if not provided.
+``ASCIIDOC_OPTIONS = []``                 A list of options to pass to AsciiDoc. See the `manpage
+                                          <http://www.methods.co.nz/asciidoc/manpage.html>`_.
+========================================  =======================================================
+
+Example file header
+-------------------
+
+Following the `example <https://github.com/getpelican/pelican/blob/master/docs/content.rst#file-metadata>`_ in the main pelican documentation:
+
+.. code-block:: none
+
+  = My super title
+
+  :date: 2010-10-03 10:20
+  :modified: 2010-10-04 18:40
+  :tags: thats, awesome
+  :category: yeah
+  :slug: my-super-post
+  :authors: Alexis Metaireau, Conan Doyle
+  :summary: Short version for index and feeds
+
+  == title level 2
+
+  and so on...
diff --git a/pelican-plugins/asciidoc_reader/__init__.py b/pelican-plugins/asciidoc_reader/__init__.py
new file mode 100644
index 0000000..5752357
--- /dev/null
+++ b/pelican-plugins/asciidoc_reader/__init__.py
@@ -0,0 +1 @@
+from .asciidoc_reader import *
diff --git a/pelican-plugins/asciidoc_reader/asciidoc_reader.py b/pelican-plugins/asciidoc_reader/asciidoc_reader.py
new file mode 100644
index 0000000..d4f90d7
--- /dev/null
+++ b/pelican-plugins/asciidoc_reader/asciidoc_reader.py
@@ -0,0 +1,115 @@
+# -*- coding: utf-8 -*-
+"""
+AsciiDoc Reader
+===============
+
+This plugin allows you to use AsciiDoc to write your posts.
+File extension should be ``.asc``, ``.adoc``, or ``asciidoc``.
+"""
+
+from pelican.readers import BaseReader
+from pelican import signals
+import os
+import re
+import subprocess
+import sys
+import tempfile
+
+import logging
+logger = logging.getLogger(__name__)
+
+
+def encoding():
+    """Return encoding used to decode shell output in call function"""
+    if os.name == 'nt':
+        from ctypes import cdll
+        return 'cp' + str(cdll.kernel32.GetOEMCP())
+    return 'utf-8'
+
+def call(cmd):
+    """Calls a CLI command and returns the stdout as string."""
+    logger.debug('AsciiDocReader: Running: %s', cmd)
+    stdoutdata, stderrdata = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True).communicate()
+    if stderrdata:
+        logger.warning('AsciiDocReader: strderr: %s', stderrdata)
+    return stdoutdata.decode(encoding())
+
+def default():
+    """Attempt to find the default AsciiDoc utility."""
+    for cmd in ALLOWED_CMDS:
+        if len(call(cmd + " --help")):
+            logger.debug('AsciiDocReader: Using cmd: %s', cmd)
+            return cmd
+
+ALLOWED_CMDS = ["asciidoc", "asciidoctor"]
+
+ENABLED = None != default()
+
+class AsciiDocReader(BaseReader):
+    """Reader for AsciiDoc files."""
+
+    enabled = ENABLED
+    file_extensions = ['asc', 'adoc', 'asciidoc']
+    default_options = ['--no-header-footer']
+
+    def read(self, source_path):
+        """Parse content and metadata of AsciiDoc files."""
+        cmd = self._get_cmd()
+        content = ""
+        if cmd:
+            logger.debug('AsciiDocReader: Reading: %s', source_path)
+            optlist = self.settings.get('ASCIIDOC_OPTIONS', []) + self.default_options
+            options = " ".join(optlist)
+            # Beware! # Don't use tempfile.NamedTemporaryFile under Windows: https://bugs.python.org/issue14243
+            # Also, use mkstemp correctly (Linux and Windows): https://www.logilab.org/blogentry/17873
+            fd, temp_name = tempfile.mkstemp()
+            content = call("%s %s -o %s \"%s\"" % (cmd, options, temp_name, source_path))
+            with open(temp_name, encoding='utf-8') as f:
+                content = f.read()
+            os.close(fd)
+            os.unlink(temp_name)
+        metadata = self._read_metadata(source_path)
+        logger.debug('AsciiDocReader: Got content (showing first 50 chars): %s', (content[:50] + '...') if len(content) > 50 else content)
+        return content, metadata
+
+    def _get_cmd(self):
+        """Returns the AsciiDoc utility command to use for rendering or None if
+        one cannot be found."""
+        if self.settings.get('ASCIIDOC_CMD') in ALLOWED_CMDS:
+            return self.settings.get('ASCIIDOC_CMD')
+        return default()
+
+    def _read_metadata(self, source_path):
+        """Parses the AsciiDoc file at the given `source_path` and returns found
+        metadata."""
+        metadata = {}
+        with open(source_path, encoding='utf-8') as fi:
+            prev = ""
+            for line in fi.readlines():
+                # Parse for doc title.
+                if 'title' not in metadata.keys():
+                    title = ""
+                    if line.startswith("= "):
+                        title = line[2:].strip()
+                    elif line.count("=") == len(prev.strip()):
+                        title = prev.strip()
+                    if title:
+                        metadata['title'] = self.process_metadata('title', title)
+
+                # Parse for other metadata.
+                regexp = re.compile(r"^:\w+:")
+                if regexp.search(line):
+                    toks = line.split(":", 2)
+                    key = toks[1].strip().lower()
+                    val = toks[2].strip()
+                    metadata[key] = self.process_metadata(key, val)
+                prev = line
+        logger.debug('AsciiDocReader: Found metadata: %s', metadata)
+        return metadata
+
+def add_reader(readers):
+    for ext in AsciiDocReader.file_extensions:
+        readers.reader_classes[ext] = AsciiDocReader
+
+def register():
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/asciidoc_reader/test_asciidoc_reader.py b/pelican-plugins/asciidoc_reader/test_asciidoc_reader.py
new file mode 100644
index 0000000..46a4dac
--- /dev/null
+++ b/pelican-plugins/asciidoc_reader/test_asciidoc_reader.py
@@ -0,0 +1,70 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import datetime
+import os
+
+from pelican.readers import Readers
+from pelican.tests.support import unittest, get_settings
+
+from .asciidoc_reader import ENABLED
+
+CUR_DIR = os.path.dirname(__file__)
+CONTENT_PATH = os.path.join(CUR_DIR, 'test_data')
+
+@unittest.skipUnless(ENABLED, "asciidoc isn't installed")
+class AsciiDocReaderTest(unittest.TestCase):
+    def read_file(self, path, **kwargs):
+        # Isolate from future API changes to readers.read_file
+        r = Readers(settings=get_settings(**kwargs))
+        return r.read_file(base_path=CONTENT_PATH, path=path)
+
+    def test_article_with_asc_extension(self):
+        # Ensure the asc extension is being processed by the correct reader
+        page = self.read_file(
+            path='article_with_asc_extension.asc')
+        expected = ('<div class="sect1">'
+                    '<h2 id="_used_for_pelican_test">'
+                    'Used for pelican test</h2>'
+                    '<div class="sectionbody">'
+                    '<div class="paragraph">'
+                    '<p>The quick brown fox jumped over '
+                    'the lazy dog&#8217;s back.</p>'
+                    '</div></div></div>')
+        actual = "".join(page.content.splitlines())
+        expected = "".join(expected.splitlines())
+        self.assertEqual(actual, expected)
+        expected = {
+            'category': 'Blog',
+            'author': 'Author O. Article',
+            'title': 'Test AsciiDoc File Header',
+            'date': datetime.datetime(2011, 9, 15, 9, 5),
+            'tags': ['Linux', 'Python', 'Pelican'],
+        }
+        for key, value in expected.items():
+            self.assertEqual(value, page.metadata[key], (
+                'Metadata attribute \'%s\' does not match expected value.\n'
+                'Expected: %s\n'
+                'Actual: %s') % (key, value, page.metadata[key]))
+
+    def test_article_with_asc_options(self):
+        # test to ensure the ASCIIDOC_OPTIONS is being used
+        page = self.read_file(path='article_with_asc_options.asc',
+            ASCIIDOC_OPTIONS=["-a revision=1.0.42"])
+        expected = ('<div class="sect1">'
+                    '<h2 id="_used_for_pelican_test">'
+                    'Used for pelican test</h2>'
+                    '<div class="sectionbody">'
+                    '<div class="paragraph">'
+                    '<p>version 1.0.42</p></div>'
+                    '<div class="paragraph">'
+                    '<p>The quick brown fox jumped over '
+                    'the lazy dog&#8217;s back.</p>'
+                    '</div></div></div>')
+        actual = "".join(page.content.splitlines())
+        expected = "".join(expected.splitlines())
+        self.assertEqual(actual, expected)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/pelican-plugins/asciidoc_reader/test_data/article_with_asc_extension.asc b/pelican-plugins/asciidoc_reader/test_data/article_with_asc_extension.asc
new file mode 100644
index 0000000..3204d8f
--- /dev/null
+++ b/pelican-plugins/asciidoc_reader/test_data/article_with_asc_extension.asc
@@ -0,0 +1,11 @@
+Test AsciiDoc File Header
+=========================
+:Author: Author O. Article
+:Email: <author@nowhere.com>
+:Date: 2011-09-15 09:05
+:Category: Blog
+:Tags: Linux, Python, Pelican
+
+== Used for pelican test
+
+The quick brown fox jumped over the lazy dog's back.
diff --git a/pelican-plugins/asciidoc_reader/test_data/article_with_asc_options.asc b/pelican-plugins/asciidoc_reader/test_data/article_with_asc_options.asc
new file mode 100644
index 0000000..620abba
--- /dev/null
+++ b/pelican-plugins/asciidoc_reader/test_data/article_with_asc_options.asc
@@ -0,0 +1,7 @@
+= Test AsciiDoc File Header
+
+== Used for pelican test
+
+version {revision}
+
+The quick brown fox jumped over the lazy dog's back.
diff --git a/pelican-plugins/assets/Readme.rst b/pelican-plugins/assets/Readme.rst
new file mode 100644
index 0000000..eecac8f
--- /dev/null
+++ b/pelican-plugins/assets/Readme.rst
@@ -0,0 +1,108 @@
+Asset management
+----------------
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/webassets>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
+
+This plugin allows you to use the `Webassets`_ module to manage assets such as
+CSS and JS files. The module must first be installed::
+
+    pip install webassets
+
+The Webassets module allows you to perform a number of useful asset management
+functions, including:
+
+* CSS minifier (``cssmin``, ``yui_css``, ...)
+* CSS compiler (``less``, ``sass``, ...)
+* JS minifier (``uglifyjs``, ``yui_js``, ``closure``, ...)
+
+Others filters include CSS URL rewriting, integration of images in CSS via data
+URIs, and more. Webassets can also append a version identifier to your asset
+URL to convince browsers to download new versions of your assets when you use
+far-future expires headers. Please refer to the `Webassets documentation`_ for
+more information.
+
+When used with Pelican, Webassets is configured to process assets in the
+``OUTPUT_PATH/theme`` directory. You can use Webassets in your templates by
+including one or more template tags. The Jinja variable ``{{ ASSET_URL }}`` can
+be used in templates and is relative to the ``theme/`` url. The
+``{{ ASSET_URL }}`` variable should be used in conjunction with the
+``{{ SITEURL }}`` variable in order to generate URLs properly. For example:
+
+.. code-block:: jinja
+
+    {% assets filters="cssmin", output="css/style.min.css", "css/inuit.css", "css/pygment-monokai.css", "css/main.css" %}
+        <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}">
+    {% endassets %}
+
+... will produce a minified css file with a version identifier that looks like:
+
+.. code-block:: html
+
+    <link href="http://{SITEURL}/theme/css/style.min.css?b3a7c807" rel="stylesheet">
+
+These filters can be combined. Here is an example that uses the SASS compiler
+and minifies the output:
+
+.. code-block:: jinja
+
+    {% assets filters="sass,cssmin", output="css/style.min.css", "css/style.scss" %}
+        <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}">
+    {% endassets %}
+
+Another example for Javascript:
+
+.. code-block:: jinja
+
+    {% assets filters="uglifyjs", output="js/packed.js", "js/jquery.js", "js/base.js", "js/widgets.js" %}
+        <script src="{{ SITEURL }}/{{ ASSET_URL }}"></script>
+    {% endassets %}
+
+The above will produce a minified JS file:
+
+.. code-block:: html
+
+    <script src="http://{SITEURL}/theme/js/packed.js?00703b9d"></script>
+
+Pelican's debug mode is propagated to Webassets to disable asset packaging
+and instead work with the uncompressed assets.
+
+If you need to create named bundles (for example, if you need to compile SASS
+files before minifying with other CSS files), you can use the ``ASSET_BUNDLES``
+variable in your settings file. This is an ordered sequence of 3-tuples, where
+the 3-tuple is defined as ``(name, args, kwargs)``. This tuple is passed to the
+`environment's register() method`_. The following will compile two SCSS files
+into a named bundle, using the ``pyscss`` filter:
+
+.. code-block:: python
+
+    ASSET_BUNDLES = (
+        ('scss', ['colors.scss', 'main.scss'], {'filters': 'pyscss'}),
+    )
+
+Many of Webasset's available compilers have additional configuration options
+(i.e. 'Less', 'Sass', 'Stylus', 'Closure_js').  You can pass these options to
+Webassets using the ``ASSET_CONFIG`` in your settings file.
+
+The following will handle Google Closure's compilation level and locate
+LessCSS's binary:
+
+.. code-block:: python
+
+    ASSET_CONFIG = (('closure_compressor_optimization', 'WHITESPACE_ONLY'),
+                    ('less_bin', 'lessc.cmd'), )
+
+If you wish to place your assets in locations other than the theme output
+directory, you can use ``ASSET_SOURCE_PATHS`` in your settings file to provide
+webassets with a list of additional directories to search, relative to the
+theme's top-level directory:
+
+.. code-block:: python
+
+   ASSET_SOURCE_PATHS = [
+       'vendor/css',
+       'scss',
+       ]
+
+.. _Webassets: https://github.com/miracle2k/webassets
+.. _Webassets documentation: http://webassets.readthedocs.org/en/latest/builtin_filters.html
+.. _environment's register() method: http://webassets.readthedocs.org/en/latest/environment.html#registering-bundles
diff --git a/pelican-plugins/assets/__init__.py b/pelican-plugins/assets/__init__.py
new file mode 100644
index 0000000..67b75dd
--- /dev/null
+++ b/pelican-plugins/assets/__init__.py
@@ -0,0 +1 @@
+from .assets import *
diff --git a/pelican-plugins/assets/assets.py b/pelican-plugins/assets/assets.py
new file mode 100644
index 0000000..e204dd6
--- /dev/null
+++ b/pelican-plugins/assets/assets.py
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+"""
+Asset management plugin for Pelican
+===================================
+
+This plugin allows you to use the `webassets`_ module to manage assets such as
+CSS and JS files.
+
+The ASSET_URL is set to a relative url to honor Pelican's RELATIVE_URLS
+setting. This requires the use of SITEURL in the templates::
+
+    <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}">
+
+.. _webassets: https://webassets.readthedocs.org/
+
+"""
+from __future__ import unicode_literals
+
+import os
+import logging
+
+from pelican import signals
+logger = logging.getLogger(__name__)
+
+try:
+    import webassets
+    from webassets import Environment
+    from webassets.ext.jinja2 import AssetsExtension
+except ImportError:
+    webassets = None
+
+def add_jinja2_ext(pelican):
+    """Add Webassets to Jinja2 extensions in Pelican settings."""
+
+    if 'JINJA_ENVIRONMENT' in pelican.settings: # pelican 3.7+
+        pelican.settings['JINJA_ENVIRONMENT']['extensions'].append(AssetsExtension)
+    else:
+        pelican.settings['JINJA_EXTENSIONS'].append(AssetsExtension)
+
+
+def create_assets_env(generator):
+    """Define the assets environment and pass it to the generator."""
+
+    theme_static_dir = generator.settings['THEME_STATIC_DIR']
+    assets_destination = os.path.join(generator.output_path, theme_static_dir)
+    generator.env.assets_environment = Environment(
+        assets_destination, theme_static_dir)
+
+    if 'ASSET_CONFIG' in generator.settings:
+        for item in generator.settings['ASSET_CONFIG']:
+            generator.env.assets_environment.config[item[0]] = item[1]
+
+    if 'ASSET_BUNDLES' in generator.settings:
+        for name, args, kwargs in generator.settings['ASSET_BUNDLES']:
+            generator.env.assets_environment.register(name, *args, **kwargs)
+
+    if 'ASSET_DEBUG' in generator.settings:
+        generator.env.assets_environment.debug = generator.settings['ASSET_DEBUG']
+    elif logging.getLevelName(logger.getEffectiveLevel()) == "DEBUG":
+        generator.env.assets_environment.debug = True
+
+    for path in (generator.settings['THEME_STATIC_PATHS'] +
+                 generator.settings.get('ASSET_SOURCE_PATHS', [])):
+        full_path = os.path.join(generator.theme, path)
+        generator.env.assets_environment.append_path(full_path)
+
+
+def register():
+    """Plugin registration."""
+    if webassets:
+        signals.initialized.connect(add_jinja2_ext)
+        signals.generator_init.connect(create_assets_env)
+    else:
+        logger.warning('`assets` failed to load dependency `webassets`.'
+                       '`assets` plugin not loaded.')
diff --git a/pelican-plugins/assets/requirements.txt b/pelican-plugins/assets/requirements.txt
new file mode 100755
index 0000000..7725d6a
--- /dev/null
+++ b/pelican-plugins/assets/requirements.txt
@@ -0,0 +1,2 @@
+cssmin
+webassets
\ No newline at end of file
diff --git a/pelican-plugins/assets/test_assets.py b/pelican-plugins/assets/test_assets.py
new file mode 100644
index 0000000..0aaebf0
--- /dev/null
+++ b/pelican-plugins/assets/test_assets.py
@@ -0,0 +1,113 @@
+# -*- coding: utf-8 -*-
+# from __future__ import unicode_literals
+
+import hashlib
+import locale
+import os
+from codecs import open
+from tempfile import mkdtemp
+from shutil import rmtree
+import unittest
+import subprocess
+
+from pelican import Pelican
+from pelican.settings import read_settings
+from pelican.tests.support import mute, skipIfNoExecutable, module_exists
+
+CUR_DIR = os.path.dirname(__file__)
+THEME_DIR = os.path.join(CUR_DIR, 'test_data')
+CSS_REF = open(os.path.join(THEME_DIR, 'static', 'css',
+                            'style.min.css')).read()
+CSS_HASH = hashlib.md5(CSS_REF.encode()).hexdigest()[0:8]
+
+
+@unittest.skipUnless(module_exists('webassets'), "webassets isn't installed")
+@skipIfNoExecutable(['sass', '-v'])
+@skipIfNoExecutable(['cssmin', '--version'])
+class TestWebAssets(unittest.TestCase):
+    """Base class for testing webassets."""
+
+    def setUp(self, override=None):
+        import assets
+        self.temp_path = mkdtemp(prefix='pelicantests.')
+        settings = {
+            'ASSET_CONFIG': [('sass_bin', 'scss')],
+            'PATH': os.path.join(os.path.dirname(CUR_DIR), 'test_data', 'content'),
+            'OUTPUT_PATH': self.temp_path,
+            'PLUGINS': [assets],
+            'THEME': THEME_DIR,
+            'LOCALE': locale.normalize('en_US'),
+            'CACHE_CONTENT': False
+        }
+        if override:
+            settings.update(override)
+
+        self.settings = read_settings(override=settings)
+        pelican = Pelican(settings=self.settings)
+        mute(True)(pelican.run)()
+
+    def tearDown(self):
+        rmtree(self.temp_path)
+
+    def check_link_tag(self, css_file, html_file):
+        """Check the presence of `css_file` in `html_file`."""
+
+        link_tag = ('<link rel="stylesheet" href="{css_file}">'
+                    .format(css_file=css_file))
+        html = open(html_file).read()
+        self.assertRegexpMatches(html, link_tag)
+
+
+class TestWebAssetsRelativeURLS(TestWebAssets):
+    """Test pelican with relative urls."""
+
+
+    def setUp(self):
+        TestWebAssets.setUp(self, override={'RELATIVE_URLS': True})
+
+    def test_jinja2_ext(self):
+        # Test that the Jinja2 extension was correctly added.
+
+        from webassets.ext.jinja2 import AssetsExtension
+        self.assertIn(AssetsExtension, self.settings['JINJA_ENVIRONMENT']['extensions'])
+
+    def test_compilation(self):
+        # Compare the compiled css with the reference.
+
+        gen_file = os.path.join(self.temp_path, 'theme', 'gen',
+                                'style.{0}.min.css'.format(CSS_HASH))
+        self.assertTrue(os.path.isfile(gen_file))
+
+        css_new = open(gen_file).read()
+        self.assertEqual(css_new, CSS_REF)
+
+    def test_template(self):
+        # Look in the output files for the link tag.
+
+        css_file = './theme/gen/style.{0}.min.css'.format(CSS_HASH)
+        html_files = ['index.html', 'archives.html',
+                      'this-is-a-super-article.html']
+        for f in html_files:
+            self.check_link_tag(css_file, os.path.join(self.temp_path, f))
+
+        self.check_link_tag(
+            '../theme/gen/style.{0}.min.css'.format(CSS_HASH),
+            os.path.join(self.temp_path, 'category/yeah.html'))
+
+
+class TestWebAssetsAbsoluteURLS(TestWebAssets):
+    """Test pelican with absolute urls."""
+
+    def setUp(self):
+        TestWebAssets.setUp(self, override={'RELATIVE_URLS': False,
+                                            'SITEURL': 'http://localhost'})
+
+    def test_absolute_url(self):
+        # Look in the output files for the link tag with absolute url.
+
+        css_file = ('http://localhost/theme/gen/style.{0}.min.css'
+                    .format(CSS_HASH))
+        html_files = ['index.html', 'archives.html',
+                      'this-is-a-super-article.html']
+        for f in html_files:
+            self.check_link_tag(css_file, os.path.join(self.temp_path, f))
diff --git a/pelican-plugins/assets/test_data/static/css/style.min.css b/pelican-plugins/assets/test_data/static/css/style.min.css
new file mode 100644
index 0000000..daf9c3c
--- /dev/null
+++ b/pelican-plugins/assets/test_data/static/css/style.min.css
@@ -0,0 +1 @@
+body{font:14px/1.5 "Droid Sans",sans-serif;background-color:#e4e4e4;color:#242424}a{color:red}a:hover{color:orange}
\ No newline at end of file
diff --git a/pelican-plugins/assets/test_data/static/css/style.scss b/pelican-plugins/assets/test_data/static/css/style.scss
new file mode 100644
index 0000000..10cd05b
--- /dev/null
+++ b/pelican-plugins/assets/test_data/static/css/style.scss
@@ -0,0 +1,19 @@
+/* -*- scss-compile-at-save: nil -*- */
+
+$baseFontFamily : "Droid Sans", sans-serif;
+$textColor      : #242424;
+$bodyBackground : #e4e4e4;
+
+body {
+  font: 14px/1.5 $baseFontFamily;
+  background-color: $bodyBackground;
+  color: $textColor;
+}
+
+a {
+  color: red;
+
+  &:hover {
+    color: orange;
+  }
+}
diff --git a/pelican-plugins/assets/test_data/templates/base.html b/pelican-plugins/assets/test_data/templates/base.html
new file mode 100644
index 0000000..05a32d0
--- /dev/null
+++ b/pelican-plugins/assets/test_data/templates/base.html
@@ -0,0 +1,7 @@
+{% extends "!simple/base.html" %}
+
+{% block head %}
+  {% assets filters="scss,cssmin", output="gen/style.%(version)s.min.css", "css/style.scss" %}
+    <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}">
+  {% endassets %}
+{% endblock %}
diff --git a/pelican-plugins/author_images/README.md b/pelican-plugins/author_images/README.md
new file mode 100644
index 0000000..a976204
--- /dev/null
+++ b/pelican-plugins/author_images/README.md
@@ -0,0 +1,55 @@
+# author_images
+
+This Pelican plugin adds support for author images and avatars. You may choose
+to display one or the other.
+
+## Configuration
+
+Add the directory to the base plugins directory to `PLUGIN_PATHS` in
+`pelicanconf.py`, and then add `author_images` to the `PLUGINS` list. For example,
+
+    PLUGIN_PATHS = ["../git/pelican-plugins"]
+    PLUGINS = ['author_images']
+
+You can also configure the directory for the author images and avatars. Note
+that both of these directories should exist in your theme, inside the static
+directory. This feels like the best way to approach this.
+
+    AUTHOR_AVATARS = 'images/author_avatars'
+    AUTHOR_IMAGES = 'images/author_images'
+
+### Adding images
+
+Now you can place images and avatars into the correct places. The location for
+these is `THEME / THEME_STATIC_DIR / AUTHOR_AVATARS`. For instance,
+`strudel/static/images/author_avatars` for my particular setup. Note that in
+this case, `strudel` is my theme.
+
+### Naming images
+
+Images have to named correctly for the plugin to find them. Currently, this
+means you need to take a `sha256` of the authors name. The extension of
+the file can be one of `svg`, `jpg`, `jpeg` or `png`. For instance, my name is
+William Pettersson, so I can run
+
+    python -c 'import hashlib; print(hashlib.sha256("William Pettersson".encode("UTF-8")).hexdigest())'
+
+to get the hash sum of my name. Then I just rename my images or avatars to have
+that name, but with the appropriate extension. For simplicity, there is a
+`generate_hashsum.py` which can also be used as follows
+
+    python generate_hashsum.py "William Pettersson"
+
+which prints out
+`a40249517dfaf4e83264ced7d802c9fe9b811c8425b1ce1b3e8b9e236b52fa3e`. This means
+my files have to be named
+`a40249517dfaf4e83264ced7d802c9fe9b811c8425b1ce1b3e8b9e236b52fa3e.png`, or
+`a40249517dfaf4e83264ced7d802c9fe9b811c8425b1ce1b3e8b9e236b52fa3e.jpg` or
+similar.
+
+
+### Using in themes
+
+These images and avatars are made available to themes through the
+`author.avatar` and `author.image` variables.
+
diff --git a/pelican-plugins/author_images/__init__.py b/pelican-plugins/author_images/__init__.py
new file mode 100644
index 0000000..b3ebd91
--- /dev/null
+++ b/pelican-plugins/author_images/__init__.py
@@ -0,0 +1 @@
+from .author_images import *
diff --git a/pelican-plugins/author_images/author_images.py b/pelican-plugins/author_images/author_images.py
new file mode 100644
index 0000000..4a8f5d5
--- /dev/null
+++ b/pelican-plugins/author_images/author_images.py
@@ -0,0 +1,47 @@
+"""
+Author images plugin for Pelican
+===========================
+
+This plugin assigns the ``author.avatar`` and ``author.image`` variables to the
+avatar and image of the author in question. Authors are identified by email
+address, and avatars are images are stored in directories configured by
+AUTHOR_AVATARS and AUTHOR_IMAGES.
+"""
+
+from pelican import signals
+from hashlib import sha256
+from os.path import exists
+
+EXTENSIONS = ['jpg', 'png', 'svg']
+
+
+def add_author_image(author, generator):
+    hashsum = sha256(author.name.encode("UTF-8")).hexdigest()
+    static = generator.settings['THEME'] + '/static/'
+    if 'AUTHOR_AVATARS' in generator.settings.keys():
+        avatar = generator.settings['AUTHOR_AVATARS'] + '/' + hashsum
+        for ext in EXTENSIONS:
+            if exists('%s%s.%s' % (static, avatar, ext)):
+                author.avatar = '%s/%s.%s' % \
+                    (generator.settings['THEME_STATIC_DIR'], avatar, ext)
+                break
+
+    if 'AUTHOR_IMAGES' in generator.settings.keys():
+        image = generator.settings['AUTHOR_IMAGES'] + '/' + hashsum
+        for ext in EXTENSIONS:
+            if exists('%s%s.%s' % (static, image, ext)):
+                author.image = '%s/%s.%s' % \
+                    (generator.settings['THEME_STATIC_DIR'], image, ext)
+                break
+
+
+def add_author_images(generator):
+    for article in generator.articles:
+        for author in article.authors:
+            add_author_image(author, generator)
+    for author, _ in generator.authors:
+        add_author_image(author, generator)
+
+
+def register():
+    signals.article_generator_finalized.connect(add_author_images)
diff --git a/pelican-plugins/author_images/generate_hashsum.py b/pelican-plugins/author_images/generate_hashsum.py
new file mode 100755
index 0000000..bc169cb
--- /dev/null
+++ b/pelican-plugins/author_images/generate_hashsum.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+
+import hashlib
+import sys
+
+print(hashlib.sha256(sys.argv[1].encode("UTF-8")).hexdigest())
diff --git a/pelican-plugins/autopages/LICENSE b/pelican-plugins/autopages/LICENSE
new file mode 100644
index 0000000..44364d3
--- /dev/null
+++ b/pelican-plugins/autopages/LICENSE
@@ -0,0 +1,28 @@
+Copyright (c) 2015, Magnetic Media Online, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+   contributors may be used to endorse or promote products derived from this
+   software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/pelican-plugins/autopages/README.md b/pelican-plugins/autopages/README.md
new file mode 100644
index 0000000..a21140d
--- /dev/null
+++ b/pelican-plugins/autopages/README.md
@@ -0,0 +1,21 @@
+# Auto Pages
+
+This plugin adds an attribute `page` to the author, category, and tag
+objects which can be used in templates by themes. The page is processed as
+an ordinary Pelican page, so it can be Markdown, reStructuredText, etc.
+
+## Configuration
+
+| Setting              | Default      | Notes                                                                                                                                                               |
+|----------------------|--------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `AUTHOR_PAGE_PATH`   | `authors`    | The location, relative to the project root where author pages can be found. The filename of the author page minus the extension must match the Author's slug.       |
+| `CATEGORY_PAGE_PATH` | `categories` | The location, relative to the project root where category pages can be found. The filename of the category page minus the extension must match the Category's slug. |
+| `TAG_PAGE_PATH`      | `tags`       | The location, relative to the project root where tag pages can be found. The filename of the tag page minus the extension must match the Tag's slug.                |
+
+## Template Variables
+
+| Variable        | Notes                                |
+|-----------------|--------------------------------------|
+| `author.page`   | `Page` object for the author page.   |
+| `category.page` | `Page` object for the category page. |
+| `tag.page`      | `Page` object for the tag page.      |
diff --git a/pelican-plugins/autopages/__init__.py b/pelican-plugins/autopages/__init__.py
new file mode 100644
index 0000000..b562ddc
--- /dev/null
+++ b/pelican-plugins/autopages/__init__.py
@@ -0,0 +1 @@
+from .autopages import *
diff --git a/pelican-plugins/autopages/autopages.py b/pelican-plugins/autopages/autopages.py
new file mode 100644
index 0000000..ea8220d
--- /dev/null
+++ b/pelican-plugins/autopages/autopages.py
@@ -0,0 +1,64 @@
+import logging
+import os
+import os.path
+
+from pelican import signals
+from pelican.contents import Page
+
+
+logger = logging.getLogger("autopages")
+
+def yield_files(root):
+    root = os.path.realpath(os.path.abspath(root))
+    for dirpath, dirnames, filenames in os.walk(root):
+        for dirname in list(dirnames):
+            try:
+                if dirname.startswith("."):
+                    dirnames.remove(dirname)
+            except IndexError:
+                # duplicate already removed?
+                pass
+        for filename in filenames:
+            if filename.startswith("."):
+                continue
+            yield os.path.join(dirpath, filename)
+
+def make_page(readers, context, filename):
+    base_path, filename = os.path.split(filename)
+    page = readers.read_file(base_path, filename, Page, None, context)
+    slug, _ = os.path.splitext(filename)
+    return slug, page
+
+def make_pages(readers, context, path):
+    pages = {}
+    for filename in yield_files(path):
+        try:
+            slug, page = make_page(readers, context, filename)
+        except Exception:
+            logger.exception("Could not make autopage for %r", filename)
+            continue
+        pages[slug] = page
+    return pages
+
+def create_autopages(article_generator):
+    settings = article_generator.settings
+    readers = article_generator.readers
+    context = article_generator.context
+
+    authors_path = settings.get("AUTHOR_PAGE_PATH", "authors")
+    categories_path = settings.get("CATEGORY_PAGE_PATH", "categories")
+    tags_path = settings.get("TAG_PAGE_PATH", "tags")
+
+    author_pages = make_pages(readers, context, authors_path)
+    category_pages = make_pages(readers, context, categories_path)
+    tag_pages = make_pages(readers, context, tags_path)
+
+    for author, _ in article_generator.authors:
+        author.page = author_pages.get(author.slug, "")
+    for category, _ in article_generator.categories:
+        category.page = category_pages.get(category.slug, "")
+    for tag in article_generator.tags:
+        tag.page = tag_pages.get(tag.slug, "")
+
+def register():
+    signals.article_generator_finalized.connect(create_autopages)
diff --git a/pelican-plugins/better_codeblock_line_numbering/Readme.md b/pelican-plugins/better_codeblock_line_numbering/Readme.md
new file mode 100644
index 0000000..cd9eeca
--- /dev/null
+++ b/pelican-plugins/better_codeblock_line_numbering/Readme.md
@@ -0,0 +1,125 @@
+# Better Code Line Numbering Plugin
+
+## Copyright, Contact, and Acknowledgements
+
+This plugin is copyright 2014 Jacob Levernier  
+It is released under the BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause). This basically means that you can do whatever you want with the code, provided that you include this copyright and license notice.
+
+Some of this code is modified from my YouTube Privacy Enhancer plugin for Pelican (https://github.com/getpelican/pelican-plugins/pull/183).
+
+
+### To contact the author:
+
+* jleverni at uoregon dot edu  
+* http://AdUnumDatum.org  
+* BitBucket: https://bitbucket.org/jlev_uo/  
+* Github: https://github.com/publicus  
+
+This is the second plugin that I've written for Pelican, and it was intended as a training project for learning Pelican as well as Python better. I would be very happy to hear constructive feedback on the plugin and for suggestions for making it more efficient and/or expandable. Also, I've heavily annotated all of the Python code in order to make it easier to understand for others looking to learn more, like I was when I wrote the plugin.
+
+### Acknowledgements
+
+I'm grateful to the authors of the plugins in the pelican-plugins repo; being able to look over other plugins' authors' code helped me immensely in learning more about how Pelican's [signals](http://docs.getpelican.com/en/3.3.0/plugins.html#how-to-create-plugins "Pelican documentation on creating plugins") system works.
+
+
+## Explanation and Rationale
+
+Pelican uses Python's built-in code highlighting extension when processing Markdown. This extension, called Code HiLite (https://pythonhosted.org/Markdown/extensions/code_hilite.html), can add line numbers to any code that is enclosed in triple backticks (and, by default, has a shebang as a first line), like this:
+
+```
+#!python
+
+code goes here
+
+more code goes here
+```
+
+This works well, except for one problem: If the lines of code are long (or if the page template is narrow), the code will run off of the page, requiring that the user scroll sideways to read it. This can be annoying in some circumstances (e.g., if the code block scrollbar is at the very bottom of a long block of code). The Code HiLite Python extension creates line numbers by making a table with all of the line numbers in one column (as a big line of text, not separated into different table rows) and the code in the second column, like this:
+
+Column 1  | Column 2  
+--------- | -------------  
+1         | Code line 1 goes here, and maybe is very very long.  
+2         | Code line 2 goes here.  
+
+It is possible to use CSS to get this code to wrap, but the line numbers can become mis-matched with the code to which they're supposed to refer, like this:
+
+Column 1  | Column 2  
+--------- | -------------  
+1         | Code line 1 goes here, and  
+2         | maybe is very very long.  
+          | Code line 2 goes here.
+
+This plugin enables the use of a CSS technique from http://bililite.com/blog/2012/08/05/line-numbering-in-pre-elements/ . All that this plugin does is wrap every individual line of a code block with <span class="code-line">...</span>. When you combine this with the CSS that's included in the setup instructions below, your code blocks will word-wrap and have nicely formatted line numbers. Since they're added with CSS, the line numbers will not be highlighted when a user wants to copy and paste the contents of the code block, making it easier for the user to benefit from what you've written.
+
+
+## Usage
+
+**After you set up the plugin (by following the steps below), any code written in triple backticks will have line numbers added to it.** Thus, to avoid line numbers, you can use a single backtick to include code `like this`, and can add line numbers by using three backticks
+
+```
+like this
+```
+
+That's all there is to it!
+
+Since this plugin builds on the Code HiLite plugin, you can change syntax highlighting by using one of two methods:
+
+```{python}
+This code will highlight as python
+```
+
+```
+#!python
+This code will also highlight as python
+```
+
+
+**In order for this plugin to work optimally, you need to do just a few things:**
+
+1. Enable the plugin in pelicanconf.py (see http://docs.getpelican.com/en/3.3.0/plugins.html for documentation):  
+    PLUGIN_PATH = "/pelican-plugins"  
+    PLUGINS = ["better_codeblock_line_numbering"]
+
+2. Add the following to your pelicanconf.py file:  
+```
+MD_EXTENSIONS = [
+    'codehilite(css_class=highlight,linenums=False)',
+    'extra'
+    ]
+```  
+This sets python's CodeHiLite Markdown extension (http://pythonhosted.org/Markdown/extensions/code_hilite.html) so that it never assigns line numbers (since we're taking care of those ourselves now), and to wrap code blocks in a div with class="highlight". As is the default for Pelican (see http://docs.getpelican.com/en/3.1.1/settings.html, under "MD_EXTENSIONS"), this also keeps the 'extra' extension (http://pythonhosted.org/Markdown/extensions/extra.html) active.
+
+3. Add the following code to your CSS file:  
+```
+/* For use with the code_line-number_word-wrap_switcher_jquery.js Pelican plugin */
+code {
+	overflow: auto;
+	/* This uses `white-space: pre-wrap` to get elements within <pre> tags to wrap. Python, for code chunks within three backticks (```), doesn't wordwrap code lines by default, because they're within <pre> tags, which don't wrap by default. See https://github.com/github/markup/issues/168 , which is specifically about this parsing issue, even though that link's discussion is talking about GitHub. */
+	white-space: pre-wrap;       /* css-3 */
+    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
+    white-space: -pre-wrap;      /* Opera 4-6 */
+    white-space: -o-pre-wrap;    /* Opera 7 */
+    word-wrap: break-word;       /* Internet Explorer 5.5+ */
+}
+
+/* Following http://bililite.com/blog/2012/08/05/line-numbering-in-pre-elements/, use CSS to add line numbers to all spans that have the class 'code-line' */
+
+.highlight pre {
+    counter-reset: linecounter;
+    padding-left: 2em;
+}
+.highlight pre span.code-line {
+	counter-increment: linecounter;
+    padding-left: 1em;
+	text-indent: -1em;
+	display: inline-block;
+}
+.highlight pre span.code-line:before {
+    content: counter(linecounter);
+    padding-right: 1em;
+    display: inline-block;
+    color: grey;
+    text-align: right;
+}
+```
+
diff --git a/pelican-plugins/better_codeblock_line_numbering/__init__.py b/pelican-plugins/better_codeblock_line_numbering/__init__.py
new file mode 100644
index 0000000..fe59e18
--- /dev/null
+++ b/pelican-plugins/better_codeblock_line_numbering/__init__.py
@@ -0,0 +1 @@
+from .better_codeblock_line_numbering import *
diff --git a/pelican-plugins/better_codeblock_line_numbering/better_codeblock_line_numbering.py b/pelican-plugins/better_codeblock_line_numbering/better_codeblock_line_numbering.py
new file mode 100644
index 0000000..2cfd7b0
--- /dev/null
+++ b/pelican-plugins/better_codeblock_line_numbering/better_codeblock_line_numbering.py
@@ -0,0 +1,47 @@
+"""
+Better Code-Block Line Numbering Plugin
+--------------------------
+
+Authored by Jacob Levernier, 2014
+Released under the BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
+
+For more information on this plugin, please see the attached Readme.md file.
+"""
+
+from pelican import signals # For making this plugin work with Pelican.
+
+import os.path # For checking whether files are present in the filesystem.
+
+import re # For using regular expressions.
+
+def add_line_wrappers(data_passed_from_pelican):
+    """A function to read through each page and post as it comes through from Pelican, find all instances of triple-backtick (```...```) code blocks, and add an HTML wrapper to each line of each of those code blocks"""
+
+    if data_passed_from_pelican._content: # If the item passed from Pelican has a "content" attribute (i.e., if it's not an image file or something else like that). NOTE: data_passed_from_pelican.content (without an underscore in front of 'content') seems to be read-only, whereas data_passed_from_pelican._content is able to be overwritten. This is somewhat explained in an IRC log from 2013-02-03 from user alexis to user webdesignhero_ at https://botbot.me/freenode/pelican/2013-02-01/?tz=America/Los_Angeles.
+        full_content_of_page_or_post = data_passed_from_pelican._content
+    else:
+        return # Exit the function, essentially passing over the (non-text) file.
+
+    all_instances_of_pre_elements = re.findall('<pre>.*?</pre>', full_content_of_page_or_post, re.DOTALL) # Use a regular expression to find every instance of '<pre>' followed by anything up to the first matching '</pre>'. re.DOTALL puts python's regular expression engine ('re') into a mode where a dot ('.') matches absolutely anything, including newline characters.
+    
+    if(len(all_instances_of_pre_elements) > 0): # If the article/page HAS any <pre>...</pre> elements, go on. Otherwise, don't (to do so would inadvertantly wipe out the output content for that article/page).
+        updated_full_content_of_page_or_post = full_content_of_page_or_post # This just gives this an initial value before going into the loop below.
+
+        # Go through each <pre> element instance that we found above, and parse it:
+        for pre_element_to_parse in all_instances_of_pre_elements:
+
+            # Wrap each line of the <pre>...</pre> section with <span class=code-line>...</span>, following http://bililite.com/blog/2012/08/05/line-numbering-in-pre-elements/. We'll use these to add line numbers using CSS later.
+            # Note that below, '^' is the beginning of a string, '$' is the end of a string, and '\n' is a newline.
+            replacement_text_with_beginning_of_each_line_wrapped_in_span = re.sub(r'(<pre.*?>|\n(?!</pre>))','\\1<span class="code-line">',pre_element_to_parse) # The (?!...) here is a Negative Lookahead (cf. http://www.regular-expressions.info/lookaround.html). This full regular expression says "Give me all code snippets that start with <pre ****> or start with a newline (\n), but NOT if the newline is followed immediately with '</pre>'. Take whatever you find, and replace it with what you found (\1) followed immediately by '<span class="code-lines">'.
+            # http://stackoverflow.com/a/14625628 explains why we need to escape the backslash in the capture group reference (the '\1'). In short, python will recognize it as "\x01" if it's not escaped.
+            replacement_text_with_full_line_wrapped_in_span = re.sub(r'((?<!</pre>)$|(?<!</pre>)\n)','</span>\\1',replacement_text_with_beginning_of_each_line_wrapped_in_span) # This regular expression says "Give me all code snippets that are the end of a string or a newline (but not preceeded by "</pre>" (this is a 'negative lookahead,' '(?<)'), and replace whatever you found with '</span'> followed by whatever you found (\1).
+            
+            updated_full_content_of_page_or_post = updated_full_content_of_page_or_post.replace(pre_element_to_parse,replacement_text_with_full_line_wrapped_in_span)
+
+        # Replace the content of the page or post with our now-updated content (having gone through all instances of <pre> elements and updated them all, exiting the loop above.
+        data_passed_from_pelican._content = updated_full_content_of_page_or_post
+
+
+# Make Pelican work (see http://docs.getpelican.com/en/3.3.0/plugins.html#how-to-create-plugins):
+def register():
+    signals.content_object_init.connect(add_line_wrappers)
diff --git a/pelican-plugins/better_figures_and_images/README.rst b/pelican-plugins/better_figures_and_images/README.rst
new file mode 100644
index 0000000..905f009
--- /dev/null
+++ b/pelican-plugins/better_figures_and_images/README.rst
@@ -0,0 +1,54 @@
+Requirements
+------------
+
+* pip install pillow beautifulsoup4 pysvg-py3
+
+Summary
+=======
+
+This plug-in:
+
+- Adds a ``style="width: ???px; height: auto;"`` attribute to any ``<img>`` tags in the content, by checking the dimensions of the image file and adding the appropriate ``style="width: ???px; height: auto;"`` to the ``<img>`` tag.
+
+- Also finds any ``div class="figures"`` tags in the content, that contain images and adds the same style to them too.
+
+- If ``RESPONSIVE_IMAGES`` setting is true, it adds ``style="width: ???px; max-width: 100%; height: auto;"`` instead.
+
+- Corrects Alt text: If an img ``alt`` attribute equals the image filename, it sets it to ""
+
+
+Assuming that the image is 250px wide, it turns this::
+
+  <div class="figure">
+    <img alt="/static/images/image.jpg" src="/static/images/image.jpg" />
+    <p class="caption">
+      This is the caption of the figure.
+    </p>
+    <div class="legend">
+      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 	        tempor incididunt ut labore et dolore magna aliqua.
+    </div>
+  </div>
+
+into this::
+
+  <div class="figure" style="width: 250px; height: auto;">
+    <img style="width: 250px; height: auto;" alt="" src="/static/images/image.jpg" />
+    <p class="caption">
+      This is the caption of the figure.
+    </p>
+    <div class="legend">
+      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+    </div>
+  </div>
+
+or this, if ``RESPONSIVE_IMAGES = True``::
+
+  <div class="figure" style="width: 250px; max-width: 100%; height: auto;">
+    <img style="width: 250px; max-width: 100%; height: auto;" alt="" src="/static/images/image.jpg" />
+    <p class="caption">
+      This is the caption of the figure.
+    </p>
+    <div class="legend">
+      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+    </div>
+  </div>
diff --git a/pelican-plugins/better_figures_and_images/__init__.py b/pelican-plugins/better_figures_and_images/__init__.py
new file mode 100644
index 0000000..b8fefc4
--- /dev/null
+++ b/pelican-plugins/better_figures_and_images/__init__.py
@@ -0,0 +1 @@
+from .better_figures_and_images import *
diff --git a/pelican-plugins/better_figures_and_images/better_figures_and_images.py b/pelican-plugins/better_figures_and_images/better_figures_and_images.py
new file mode 100644
index 0000000..91e65c0
--- /dev/null
+++ b/pelican-plugins/better_figures_and_images/better_figures_and_images.py
@@ -0,0 +1,140 @@
+"""
+Better Figures & Images
+------------------------
+
+This plugin:
+
+- Adds a style="width: ???px; height: auto;" to each image in the content
+- Also adds the width of the contained image to any parent div.figures.
+    - If RESPONSIVE_IMAGES == True, also adds style="max-width: 100%;"
+- Corrects alt text: if alt == image filename, set alt = ''
+
+TODO: Need to add a test.py for this plugin.
+
+"""
+
+from __future__ import unicode_literals
+from os import path, access, R_OK
+import os
+
+from pelican import signals
+
+from bs4 import BeautifulSoup
+from PIL import Image
+import pysvg.parser
+import cssutils
+
+import logging
+logger = logging.getLogger(__name__)
+
+def content_object_init(instance):
+
+    if instance._content is not None:
+        content = instance._content
+        soup = BeautifulSoup(content, 'html.parser')
+
+        for img in soup(['img', 'object']):
+            logger.debug('Better Fig. PATH: %s', instance.settings['PATH'])
+            if img.name == 'img':
+                logger.debug('Better Fig. img.src: %s', img['src'])
+                img_path, img_filename = path.split(img['src'])
+            else:
+                logger.debug('Better Fig. img.data: %s', img['data'])
+                img_path, img_filename = path.split(img['data'])
+            logger.debug('Better Fig. img_path: %s', img_path)
+            logger.debug('Better Fig. img_fname: %s', img_filename)
+
+            # If the image already has attributes... then we can skip it. Assuming it's already optimised
+            if 'style' in img.attrs:
+                sheet = cssutils.parseStyle(img['style'])
+                if len(sheet.width) > 0 or len(sheet.height) > 0:
+                    continue
+
+            # Pelican 3.5+ supports {attach} macro for auto copy, in this use case the content does not exist in output
+            # due to the fact it has not been copied, hence we take it from the source (same as current document)
+            src = None
+            if img_filename.startswith('{attach}'):
+                img_path = os.path.dirname(instance.source_path)
+                img_filename = img_filename[8:]
+                src = os.path.join(img_path, img_filename)
+            elif img_path.startswith(('{filename}', '|filename|')):
+                # Strip off {filename}, |filename| or /static
+                img_path = img_path[10:]
+            elif img_path.startswith('{static}'):
+                img_path = img_path[8:]
+            elif img_path.startswith('/static'):
+                img_path = img_path[7:]
+            elif img_path.startswith('data:image'):
+                # Image is encoded in-line (not a file).
+                continue
+            else:
+                # Check the location in the output as some plugins create them there.
+                output_path = path.dirname(instance.save_as)
+                image_output_location = path.join(instance.settings['OUTPUT_PATH'], output_path, img_filename)
+                if path.isfile(image_output_location):
+                    src = image_output_location
+                    logger.info('{src} located in output, missing from content.'.format(src=img_filename))
+                else:
+                    logger.warning('Better Fig. Error: img_path should start with either {attach}, {filename}, |filename|, {static} or /static')
+
+            if src is None:
+                # search src path list
+                # 1. Build the source image filename from PATH
+                # 2. Build the source image filename from STATIC_PATHS
+
+                # if img_path start with '/', remove it.
+                img_path = os.path.sep.join([el for el in img_path.split("/") if len(el) > 0])
+
+                # style: {filename}/static/foo/bar.png
+                src = os.path.join(instance.settings['PATH'], img_path, img_filename)
+                src_candidates = [src]
+
+                # style: {filename}../static/foo/bar.png
+                src_candidates += [os.path.join(instance.settings['PATH'], static_path, img_path, img_filename) for static_path in instance.settings['STATIC_PATHS']]
+
+                src_candidates = [f for f in src_candidates if path.isfile(f) and access(f, R_OK)]
+
+                if not src_candidates:
+                    logger.error('Better Fig. Error: image not found: %s', src)
+                    logger.debug('Better Fig. Skip src: %s', img_path + '/' + img_filename)
+                    continue
+
+                src = src_candidates[0]
+            logger.debug('Better Fig. src: %s', src)
+
+            # Open the source image and query dimensions; build style string
+            try:
+                if img.name == 'img':
+                    im = Image.open(src)
+                    extra_style = 'width: {}px; height: auto;'.format(im.size[0])
+                else:
+                    svg = pysvg.parser.parse(src)
+                    extra_style = 'width: {}px; height: auto;'.format(svg.get_width())
+            except IOError as e:
+                logger.debug('Better Fig. Failed to open: %s', src)
+                extra_style = 'width: 100%; height: auto;'
+
+            if 'RESPONSIVE_IMAGES' in instance.settings and instance.settings['RESPONSIVE_IMAGES']:
+                extra_style += ' max-width: 100%;'
+
+            if img.get('style'):
+                img['style'] += extra_style
+            else:
+                img['style'] = extra_style
+
+            if img.name == 'img':
+                if img['alt'] == img['src']:
+                    img['alt'] = ''
+
+            fig = img.find_parent('div', 'figure')
+            if fig:
+                if fig.get('style'):
+                    fig['style'] += extra_style
+                else:
+                    fig['style'] = extra_style
+
+        instance._content = soup.decode()
+
+
+def register():
+    signals.content_object_init.connect(content_object_init)
diff --git a/pelican-plugins/better_figures_and_images/requirements.txt b/pelican-plugins/better_figures_and_images/requirements.txt
new file mode 100644
index 0000000..f0ca748
--- /dev/null
+++ b/pelican-plugins/better_figures_and_images/requirements.txt
@@ -0,0 +1,4 @@
+beautifulsoup4
+cssutils
+pillow
+pysvg-py3
\ No newline at end of file
diff --git a/pelican-plugins/better_figures_and_images/test_data/dummy-200x200.png b/pelican-plugins/better_figures_and_images/test_data/dummy-200x200.png
new file mode 100644
index 0000000000000000000000000000000000000000..598d754f7f76e8605c48ceae31a8681f4165dc56
GIT binary patch
literal 767
zcmeAS@N?(olHy`uVBq!ia0vp^CqS5m8A!&LZC(qcqyv0HT+f_217vR6w5h(n-p9vB
zQc^N4Ep6t^na0M(i>uzpGB7aB_jGX#sfc?!Wq<x{1A*4in;VUvsZM+{(ew3|<d`eF
zdlywpEU<Ueb|_EHxNE2vu%*7NcF8O2?v1k+I!ynr`%7U$O}WU*H}y^&iY)@@#EGT1
zGv{US|6KZO-m*O(53q|X+m&x^KWM#RM|a)R;H@={1!8-|bl1wIy-|$m?r&OWl{G_=
zuaB8aUpb^&sxd5_`F-Q14D%;{O26HCT(bJRMr_<-qg&#iu01V2kUN{{-6rh?8+RQK
zzxiWvz{KfwY%?NkPyEo!KE8Exdc}rWMhA9=2wuB$Ao6W`Tk96xY`Mo*vb^-V`vQ(u
zYOmHktahT???kIk)MC!oX>R<jGLM(cP2ZX-8C3lLgU1QBw^Cuj$2P^f?+~2c{wmKw
zqfje4Z|C&4pITSg^epRHvOhg2G{+;<eE%f3UG2N3iRa#xj_~b>f5pW8QPFSBtF0NE
zGB;f>GAWwF9)BpSONNWra%)zUr}V_&45v94O^z&{xFl3M>FO3Ee<@2RRnMpM1+JQ;
zXs~`MS6aJd|4dae|94A{y}j?u<{>4yu)tRFWCZU-<<t`QcY(G+bJ}tewtDMsek|BG
z{qU<k&4y*cF*S{z)s}0ttioPTV+g%{LMSw9&b8jot9;%yJVsM2KTcRV%k5M__!Pyi
zWw8$PlBa}yuWUW^a=&WNW~t8UwQ12O&39a__g-^xRYF?*_U)-XhgRgO#8rPzd-P?S
z$CcizwrMkB@(LGi$}gT1xwSXtmKVn#Jz>|>`)qR8!@hsu@HsU7_;UFJhgP&rDSR5e
z_szui4^O+}<H{nwCU|TUnamibd^vQ&&T5?$iJXZmzqRz3M`s=h3BEMpjda6&rB&@G
quV=6JfBtmW#$V^Lq#q8&{fyFK-D?&)HGTvpV+K!GKbLh*2~7Z+^<3}(

literal 0
HcmV?d00001

diff --git a/pelican-plugins/better_figures_and_images/test_data/dummy-250x300.png b/pelican-plugins/better_figures_and_images/test_data/dummy-250x300.png
new file mode 100644
index 0000000000000000000000000000000000000000..f21336a86a999a855a34e16bb47afdf08400afc5
GIT binary patch
literal 1058
zcmeAS@N?(olHy`uVBq!ia0vp^zZe)8by%2zEQw2-JAjmQfKQ0)nKNgA%$YN1*4Nkj
z`1lwb8>gkENlHp?+O$c^Eb|is1M?wI7srr_xVP8N7Tq=zVNHlwC8}4O8u(>W)}@&`
zOE1iQ8C15cY<iITyIEPrdD8=LXKr2cDfs(F=En@p4CRfUX0cytx-TqPTwKT)u;u4{
zB?4g4#iw`g`mg=J^Yb)`{lEXcTV|U2SWn{4j$M1Izi!^>rFs5alIdP)pCi?e+uq+@
zVD73eq!as5d*icXQ-Y2$_0Ikh?)kOw$JOUy@reZnTCU;k&Fl6FS=6L`y%DIHs&n@A
z^Za_znUb$VW>qiW-t4vH=ea-0!9FKh=HKexQdT1JGkHbXw)UV?JMwx<RgHGM+RA7?
zp?9xM!g;R^MbD4j+BGFh|8vkOj`ok8CydtbJ8-Gj<(!XXRK~|fW;^|*Q+E8#Ht)Q-
zJn{L*s3yJTb)3^aM)^24&))Ov-uFEReBa+XkdkQ>y(Q0CC1u@ZkqcTO_7f|sxHHc#
zufCnM;dJ!R2hry4D-VCU|3ZZKGtbq>Ywgy&5ZHcr`iz9i#a!(7qFN@bjaeab;rG4Y
zudeQA&TIX{nUwgPefOSU%_rVVtU1K@K4n$VmWrUhqJL{Wisy>(GAgEYovyrBWqf2&
zqLh~FVNc1J(uicImr6&TU96Hbc+IxoQha08v_*==ZMw}?Vg2k1X8rY>UWI**Uem|C
zAV_4*?JME=d2#P!KQC8u3wQq<!4Mid>zeGg%@MZV7cV@Q$`0MWZg2OVs!M-(*1mpK
z^kdR1?frJ|cP+io9%`E@w>Dkwe&|>65cyQ~9~!<zuP(h34qSV@lK14w*{?-%Cq7x6
zTN<@EmnTU2#`N=h@@l6o=lSS)l>g{G!7Y8~cmH-=s=@tzp-H{N=|sJwwd@mlqxksu
zc?BMee7$0Njq~hFGyAVje*e>W>Y_KFt_AW3UhBNF?8_eKr;|SXuWj%P>^*l?zO%R9
zwRLgyuXW5OUE3x7DyJ>V{hAoFbM1|vt8On5y2W>PwdvvMq4I8-UEdngWhX=|+^np1
zV}tLlsvRzi4YEJVAGgV#x=4I=XKYOD?+LyY-D$Z=OWw`<_fq@J;ob7WA(~m;OMl*u
z+?~E;-_HG_^Y@7VT)o?OK8KFNH1o($;osLE{r>$(+P|XC^3Yj}R<lco%LY7D{HJz}
zQ}@lYld&0W|BsbqO=W6*^|j&e{jRBVugdfKRK?ob?36cnb$LqC*N<x>%7hcQ)XMNK
zJG0LCpHg$aoV)#sDT}tpe!t`5zk5BeNQnP#agBzqyWL?+|9tNt0PL8Ge;xR4&~m>W
Qn9~_NUHx3vIVCg!0Gtm9vH$=8

literal 0
HcmV?d00001

diff --git a/pelican-plugins/better_figures_and_images/test_data/dummy-800x300.png b/pelican-plugins/better_figures_and_images/test_data/dummy-800x300.png
new file mode 100644
index 0000000000000000000000000000000000000000..4122c8818d08faab78b83ab8cf9c1d245339cd8f
GIT binary patch
literal 2667
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

literal 0
HcmV?d00001

diff --git a/pelican-plugins/better_figures_and_images/test_data/images-test.html b/pelican-plugins/better_figures_and_images/test_data/images-test.html
new file mode 100644
index 0000000..98a8e64
--- /dev/null
+++ b/pelican-plugins/better_figures_and_images/test_data/images-test.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+    <head>
+        <meta charset="utf-8">
+        <title>Better Figures &amp; Images Test</title>
+    </head>
+    <body>
+        <div class="figure">
+            <img alt="map to buried treasure" src="/static/images/dummy-200x200.png">
+            <p class="caption">
+                This is the caption of the figure (a simple paragraph).
+            </p>
+            <div class="legend">
+                The legend consists of all elements after the caption. In this case, the legend consists of this paragraph.
+            </div>
+        </div>
+        <p>
+            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        </p>
+        <div class="figure align-right">
+            <img alt="map to buried treasure 2" src="/static/images/dummy-250x300.png">
+            <p class="caption">
+                This is the second image caption.
+            </p>
+            <div class="legend">
+                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+            </div>
+        </div>
+        <p>
+            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        </p>
+        <img alt="/static/images/dummy-200x200.png" src="/static/images/dummy-200x200.png">
+        <p>
+            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        </p>
+        <p>
+            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        </p>
+        <img alt="/static/images/dummy-250x300.png" class="align-right" src="/static/images/dummy-250x300.png">
+        <p>
+            Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        </p>
+    </body>
+</html>
\ No newline at end of file
diff --git a/pelican-plugins/better_figures_and_images/test_data/images-test.rst b/pelican-plugins/better_figures_and_images/test_data/images-test.rst
new file mode 100644
index 0000000..b1104ba
--- /dev/null
+++ b/pelican-plugins/better_figures_and_images/test_data/images-test.rst
@@ -0,0 +1,75 @@
+:title: Images Test
+:slug: images-test
+:date: 2013-04-23 15:59:39
+:tags: images, test
+
+.. figure:: /static/images/dummy-800x300.png
+
+	This is the caption of the figure (a simple paragraph).
+
+	The legend consists of all elements after the caption.  In this
+	case, the legend consists of this paragraph.
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+.. figure:: /static/images/dummy-200x200.png
+	:alt: map to buried treasure
+
+	This is the caption of the figure (a simple paragraph).
+
+	The legend consists of all elements after the caption.  In this
+	case, the legend consists of this paragraph.
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+.. figure:: /static/images/dummy-250x300.png
+	:alt: map to buried treasure 2
+	:align: right
+
+	This is the second image caption.
+
+	Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+	tempor incididunt ut labore et dolore magna aliqua.
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+.. image:: /static/images/dummy-200x200.png
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+.. image:: /static/images/dummy-250x300.png
+	:align: right
+
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\ No newline at end of file
diff --git a/pelican-plugins/better_tables/LICENSE b/pelican-plugins/better_tables/LICENSE
new file mode 100644
index 0000000..e41460a
--- /dev/null
+++ b/pelican-plugins/better_tables/LICENSE
@@ -0,0 +1,18 @@
+Copyright (c) 2015 Alex Waite
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/pelican-plugins/better_tables/README.md b/pelican-plugins/better_tables/README.md
new file mode 100644
index 0000000..7c456f4
--- /dev/null
+++ b/pelican-plugins/better_tables/README.md
@@ -0,0 +1,38 @@
+# Better Tables
+
+This Pelican plugin removes the excess attributes and elements in the HTML
+tables generated from reST. Trimming this fat allows them to pass HTML5
+validation. Hopefully `rst2html5` will be merged into Pelican at some point, but
+until then, this hacky approach is needed.
+
+This approach has the advantage of restoring sanity to tables, and allows their
+column width to flow normally. All styling is default and must be styled by CSS
+rather than in HTML attributes.
+
+I make no claim that **all** HTML table crimes generated are corrected — merely
+the ones that I have stumbled across.
+
+## Requirements
+
+* Beautiful Soup 4
+
+## What does it do?
+
+At the moment, the following is stripped from tables (though when in doubt,
+check the source as it may be updated and out-of-sync with this document).
+
+* `<colgroup>` element (and its evil `<col>` children)
+* `table` > `border` attribute
+* `<tbody>` and `<thead>` > `valign` attribute
+
+## Usage
+
+Enable the plugin in your pelicanconf.py:
+
+    PLUGINS = [
+        # ...
+        'better_tables',
+        # ...
+    ]
+
+And that's it. Life's simple like that sometimes.
diff --git a/pelican-plugins/better_tables/__init__.py b/pelican-plugins/better_tables/__init__.py
new file mode 100644
index 0000000..f752acf
--- /dev/null
+++ b/pelican-plugins/better_tables/__init__.py
@@ -0,0 +1,31 @@
+# Copyright (c) 2015 Alex Waite
+# 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.
+
+# -*- coding: utf-8 -*-
+__title__ = 'better-tables'
+__version__ = '0.1.0'
+__author__ = 'Alex Waite'
+__credits__ = ["Alex Waite"]
+__maintainer__ = "Alex Waite"
+__email__ = "Alexqw85@gmail.com"
+__status__ = "Stable"
+__license__ = 'MIT'
+__copyright__ = 'Copyright 2015'
+
+from .better_tables import *
diff --git a/pelican-plugins/better_tables/better_tables.py b/pelican-plugins/better_tables/better_tables.py
new file mode 100644
index 0000000..1611249
--- /dev/null
+++ b/pelican-plugins/better_tables/better_tables.py
@@ -0,0 +1,71 @@
+# Copyright (c) 2015 Alex Waite
+# 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.
+
+''' Better Tables: Restore sanity to rst->html tables
+
+This pelican plugin removes the excess attributes and elements in the HTML
+tables generated from RST. Trimming this fat allows them to pass HTML5
+validation. Hopefully rst2html5 will be merged into pelican at some point, but
+until then, this hacky approach is needed.
+
+This approach has the advantage of restoring sanity to tables, and allows their
+column with to flow normally. All styling is default and must be styled by CSS
+rather than in HTML attributes.
+
+I make no claim that /all/ HTML table crimes generated are corrected, merely
+the ones which I have stumbled across.
+
+Usage:
+    Enable the plugin in your pelicanconf.py
+
+    PLUGINS = [
+        # ...
+        'better_tables',
+        # ...
+    ]
+
+    And that's it. Life's simple like that sometimes.
+'''
+
+from pelican import signals, contents
+from bs4 import BeautifulSoup
+
+def better_tables(content):
+    if isinstance(content, contents.Static):
+        return
+
+    soup = BeautifulSoup(content._content, 'html.parser')
+
+    for table in soup.findAll('table'):
+        # table's "border" is so 1996
+        del(table['border'])
+
+        # col widths. not only /infuriating/ it's also not in HTML5
+        for tag in table.findAll('colgroup'):
+            tag.extract()
+
+        # tbody and thead's valign
+        for tag in table.findAll(['tbody', 'thead']):
+            del(tag['valign'])
+
+    soup.renderContents()
+    content._content = soup.decode()
+
+def register():
+    signals.content_object_init.connect(better_tables)
diff --git a/pelican-plugins/bootstrap-rst/140x140.png b/pelican-plugins/bootstrap-rst/140x140.png
new file mode 100644
index 0000000000000000000000000000000000000000..79e899298ae81a30376dfafc678f9ccb8cb8f7be
GIT binary patch
literal 1443
zcmeAS@N?(olHy`uVBq!ia0vp^Js`}%1|-)VaI^zbEX7WqAsj$Z!;#Vf<Z~8yL>2?p
zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4<ivthz5Jr|+3#$m7#LU;JY5_^
zD(1Yse%D|4HdEWj?aoV8#Y|_ltvBI~S+L0P&ddMxi6X+Cf&$sunk!8;FX=B>nwnOn
z$0J;QVe;R3#W&tedR}gx9lOT#<>6VbtFC7Cvi@;B=$p@Qxiuj{Q6hqaO{}SLkTR!5
z3;OK8fBoLQc~yJwP2FkHw{`#i_4)VrsU`=CtPESdGDPd;j~_RpR^QCY%Fp*Nl=)vM
ze>bl@X-$mYY9PA*K05oauy3tFqQtAm$NRHPq@;M*!k_K0`@5=Y@4B+xb9-|0^H&G0
zd~v*A{?@&FVViIM@y`BQW&8Hcn-v!`VmQ-m<kX9&C-%50@2&kE*6ZdBMA6aFQoU~f
z58uAGXC>dVyLqp_zP@f{ZT<Ug&Gy@&Yr|$sy#8ACs>CWPHumc3@byzprj%4vtgz_2
z`nF8nZ)M#2={E8*GB57#F0a3H`ryHXQ-#;Xt=H~S%FWBmDlQIAl<=EVayesF^ULqQ
zwM4k8zP-5#_Vn)EtCucSJ$vSi%H!qBmrq&}qqkgvqvZR$*tzrOX>l-J%`(l+&3*ae
zg@&bIUtgb!=kw>!t3Ezzoi=USx;3RmMT@ewu5wyvVEFHK)Xtc^q?{<<QUh&mZJ--N
zwWjVe3fG%1dVJ%x>(|wfwI5!nl37+3Hff6Aa?!Shk1VboJJz=8=9+KczXO$){Qp<G
zcI{fvN%L$f7uDF+r_McX@cHK+F)=Z<XKsrpUV6EuNg+UhW!B7@p4aAw1<Rh9zvXtW
zteo7c0F4X-i3}UL*N+}KH6K*4%w420>C0z!|D{1*K(zewts6Hk6j+3axK{o9^D{sB
zPw3XDP++v5I^|VVZfS3SJ;NkOfJL}`u0@}^-|oyQ`(E<KwEHbr_Wbqfskc#CP0gC~
z^X;<>3j;5mKfUS8XOS6m=lUMX*cvsdE-q>I*=1cvAJxaKzMH4rm%O+Bzn$dj5G|mc
zr&5f%9!CU<Xm%;}9#2j+n)&~J_q~Q_$uo~0EqZr%_jH^3A0Hg~<!mn8x-|<J0zjYb
zjSH7KZe?ld`A%-GpZnG*Uv6%0DZchqAzD>GJ}i9p{Q3VK*M9xlrKhK-;+dYFt~J$5
zORW3U^Upw=e*OEq8<_KoF8%qPo_*`isf1_Go|%}NPq$efq<Qw-IW<As+Fv2_?P`No
zU%m9_&z`QMiw+rFdG~JJyE{7<0~4n<kMrKj&u-S%)>S`0Ep2-6J^p?C;XQxuJSnnF
z-5i-}B&n;fzdCGnrj1;7Wo2Z)ob9e-=KJe_8N_toOW!*!7JZ^^iA6v6`c0p|zohEd
zf4k-XdH;Dk3jERC=&@aSiud+U`&DA(2W=rhpm_Sndb{fAr^$CdW&;aU22WQ%mvv4F
FO#rf9dxZc1

literal 0
HcmV?d00001

diff --git a/pelican-plugins/bootstrap-rst/171x180.png b/pelican-plugins/bootstrap-rst/171x180.png
new file mode 100644
index 0000000000000000000000000000000000000000..9067b5cd8ac2bedecd86a0fcdc24227b767a2c4b
GIT binary patch
literal 1553
zcmeAS@N?(olHy`uVBq!ia0vp^tATh62OE%lopC1|NU;<<d4_NRK@CSr2awNM;1O92
zRDT_W8J#p{R{#YiOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kz!zA?elbT
z45^s&_WH%_pj?LIAMck~mcBAFx+P<lq9frFd*sEU|NoUDd=Iv$BuQo+e|AUf>x(yg
z#P`a^MQ?T7bA^BZeC_gi&u`9ajz2eVvylXk5+j>XeHHV8QbFw;ff0k&{Cmm!hqtf4
z-*oobExUJXdvY~7EWVhL=%+L>U};ciy&PZrs}ieKVXM8CU%vj!`t#42^>KTHHbz{z
zySx1H>*vp(zxw_gD5W*k%WG-S$B5;ZFCOogpL+iJ)~#E=T5r$Hf0_KY#42lR)Ty-1
zg=^;exy#$tM9kQ}ZJXF}tC>C_>#v*6_1n64Z|&NM#Tr4IZvq8^jb`>F^ENqrt%}_l
z<CiG$>g((4RlmNh6zXh=T00Hs(5?IStt;ET_F{&}`$9?G(ltPZf9v8qk37nJaj==a
zYmvvKlB%jzQESEAFTMVHCCBXX$NXcDH!i!p5@>MH$|;8ouA~?Rs!a|Qajp9IXXmlU
zAD7ye?2cV}In%cClZ(2#dez5At!&MWd3Sd$Eq{M+Wr)_xhlks(tgM1|-woRuwRg+?
z)Qxk>|E|}M-}mCd1BaVAWe=;2W?p&qD(g?l?&9ZtX6ELqo{KMfR99C6LybFIPfxF;
zqGHA3#mZ-&7t6}Y0R=rL0UdGdSQ{T7pWfSr5jt5`b5~t{x#IR)t(iVr(@$sG$YtBj
z&#tYFoiyeAbJO|f>m~kdig*<vZ(Fsb#_s>+k8$glU(8rCckbLDQCp)zcg9>hb?Vfi
zJ2iIe@7|4_JAeM`o14?6dfjf_zaOqOHE3Z#hkbp1b#?SiA2*<zK_R>|Cd_JXm_*wo
zk@Y(ZAGfI-y*~Y7kUaCcPv71~i*m7wa<yikT_2(aObLe{21G|k@2dU%ZEChuZ(G{t
znR51ZYc_8--WsKwo0F4~o9lb&`tto>zMj<eT)q1A@2R?9Cw~oBo7`zv`)kXGYjsl%
zc)tGpobGw)<jKyo%{QlJ`}zA%J^i%g^E2P6r&B#I-Mkt3$7QbH@<}59*X0Z9D<}Q!
zd|062dFpA=^|;F!CMNUGZ{5CqxdG4B9JBQ?lh3A^%J6;t_qTd)<!84^AzD+XoJ|9o
zCc@JA>+ilMg@A<t3Slwd-nu^fJ$?QB%<Z?Oc-U^;ycxJO=;E_y%YgFRZ~uL|>+j!M
z(Qa2$Dc;iEvA{I!e>BNZu6vQk)+paVk(dAe{@!06{49*E*|FrS$)Eec$eZG$roVTG
zXMDf-%8*y>$){5){a@G5jNfaa`+5Jr|BoaXq>pfoBI*AOHq5yn9UDB2fW<e1r>mdK
II;Vst0GExEZvX%Q

literal 0
HcmV?d00001

diff --git a/pelican-plugins/bootstrap-rst/300x200.png b/pelican-plugins/bootstrap-rst/300x200.png
new file mode 100644
index 0000000000000000000000000000000000000000..866c67436947b2cde67986ca5e7628d9d547df28
GIT binary patch
literal 2772
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
I96potUw~j4TmS$7

literal 0
HcmV?d00001

diff --git a/pelican-plugins/bootstrap-rst/LICENSE b/pelican-plugins/bootstrap-rst/LICENSE
new file mode 100644
index 0000000..4fa4e7b
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Nicolas P. Rougier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/pelican-plugins/bootstrap-rst/Makefile b/pelican-plugins/bootstrap-rst/Makefile
new file mode 100644
index 0000000..5cc5dea
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/Makefile
@@ -0,0 +1,32 @@
+MAKE             = /usr/bin/make
+RST2HTML         = ./bootstrap.py
+STYLESHEET       =
+RST2HTML_OPTIONS = --strip-comments             \
+                   --report=3                   \
+                   --no-doc-title               \
+                   --traceback                  \
+                   --compact-lists              \
+                   --no-toc-backlinks           \
+                   --syntax-highlight=short     \
+                   --template=page.tmpl         \
+                   --cloak-email-addresses      \
+                   --stylesheet=$(STYLESHEET)   \
+                   --link-stylesheet
+
+SOURCES = $(wildcard doc/*.rst)
+TMP = $(subst .rst,.html, $(SOURCES))
+OBJECTS = $(subst doc/,, $(TMP))
+
+all:$(OBJECTS)
+
+%.html: doc/%.rst
+	@echo "  - $@"
+	@$(RST2HTML) $(RST2HTML_OPTIONS) $< $@
+
+clean:
+	@-rm -f $(OBJECTS)
+
+distclean: clean
+	@-rm -f `find . -name "*~"`
+
+.PHONY: all clean distclean
diff --git a/pelican-plugins/bootstrap-rst/README.rst b/pelican-plugins/bootstrap-rst/README.rst
new file mode 100644
index 0000000..bb34b12
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/README.rst
@@ -0,0 +1,44 @@
+Bootstrap RST for Pelican
+=========================
+
+This plugin merely adds what little glue is needed to make bootstrap-rst play
+nicely with Pelican. All credit goes to **Nicolas P. Rougier**.
+
+It is much more featureful than the 'twitter_bootstrap_rst_directives' plugin.
+
+Usage
+-----
+Enable the plugin in your `pelicanconf.py`
+
+    PLUGINS = [
+        'bootstrap-rst'
+    ]
+
+And then use any of the many fine directives made available. Peruse the `doc`
+folder for more information.
+
+Bootstrap RST
+=============
+
+Bootstrap RST offers an easy access to the `bootstrap <http://getbootstrap.com>`_
+framework using the `reStructuredText <http://docutils.sourceforge.net/rst.html>`_
+markup language. Bootstrap RST provides a set of new directives and roles (row,
+column, button, list, etc.) that allow seamless integration of the bootstrap
+framework.  Have a look at the source of this page for example and see below for
+what is available so far.
+
+See demo at: `http://rougier.github.io/bootstrap-rst/ <http://rougier.github.io/bootstrap-rst/>`_.
+
+Creators
+========
+
+**Nicolas P. Rougier** :
+
+* `http://www.labri.fr/perso/nrougier/ <http://www.labri.fr/perso/nrougier/>`_
+* `https://github.com/rougier <https://github.com/rougier>`_
+
+Copyright and License
+=====================
+
+Code and documentation copyright 2014 Nicolas P. Rougier.
+Code released under the MIT license. Docs released under CC BY 3.0.
diff --git a/pelican-plugins/bootstrap-rst/__init__.py b/pelican-plugins/bootstrap-rst/__init__.py
new file mode 100644
index 0000000..ac086b7
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/__init__.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+__title__ = 'bootstrap-rst'
+__version__ = '0.1.1'
+__author__ = 'Nicolas P. Rougier'
+__credits__ = ['Nicolas P. Rougier', 'Alex Waite', 'Trevor Morgan']
+__maintainer__ = "Alex Waite"
+__email__ = "alex@waite.eu"
+__status__ = "Development"
+__license__ = 'MIT'
+__copyright__ = 'Copyright 2014'
+
+from .bootstrap import *
diff --git a/pelican-plugins/bootstrap-rst/bootstrap.py b/pelican-plugins/bootstrap-rst/bootstrap.py
new file mode 100755
index 0000000..c1bf8f1
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap.py
@@ -0,0 +1,310 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# -----------------------------------------------------------------------------
+# Bootstrap RST
+# Copyright (c) 2014, Nicolas P. Rougier
+# Distributed under the (new) BSD License. See LICENSE.txt for more info.
+# -----------------------------------------------------------------------------
+import sys, os, re
+from docutils import nodes, utils
+from docutils.parsers.rst.directives import images
+from docutils.transforms import TransformError, Transform, parts
+from docutils.parsers.rst import Directive, directives, states, roles
+from docutils.nodes import fully_normalize_name, whitespace_normalize_name
+from docutils.parsers.rst.roles import set_classes
+
+from docutils.io import StringOutput
+from docutils.core import Publisher
+
+from pelican import signals
+from pelican.readers import RstReader, PelicanHTMLTranslator
+
+from .roles import *
+from .directives import *
+
+
+class HTMLTranslator(PelicanHTMLTranslator):
+    """
+    This is a translator class for the docutils system.
+    """
+
+    def visit_h1(self, node):
+        self.body.append('<h1>%s</h1>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_h2(self, node):
+        self.body.append('<h2>%s</h2>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_h3(self, node):
+        self.body.append('<h3>%s</h3>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_h4(self, node):
+        self.body.append('<h4>%s</h4>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_h5(self, node):
+        self.body.append('<h5>%s</h5>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_h6(self, node):
+        self.body.append('<h6>%s</h6>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_label_default(self, node):
+        self.body.append(
+            '<span class="label label-default">%s</span>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_label_primary(self, node):
+        self.body.append(
+            '<span class="label label-primary">%s</span>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_label_success(self, node):
+        self.body.append(
+            '<span class="label label-success">%s</span>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_label_info(self, node):
+        self.body.append(
+            '<span class="label label-info">%s</span>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_label_warning(self, node):
+        self.body.append(
+            '<span class="label label-warning">%s</span>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_label_danger(self, node):
+        self.body.append(
+            '<span class="label label-danger">%s</span>' % node.children[0])
+        raise nodes.SkipNode
+
+    def visit_page_row(self, node):
+        self.body.append(self.starttag(node,'div'))
+
+    def depart_page_row(self, node):
+        self.body.append('</div>\n')
+
+    def visit_page_column(self, node):
+        self.body.append(self.starttag(node,'div'))
+
+    def depart_page_column(self, node):
+        self.body.append('</div>\n')
+
+
+    def visit_button(self, node):
+        btn_classes = { 'primary' : 'btn-primary', 'success' : 'btn-success',
+                        'info'    : 'btn-info',    'warning' : 'btn-warning',
+                        'danger'  : 'btn-danger',  'link'    : 'btn-link',
+                        'outline' : 'btn-outline', 'tiny'    : 'btn-xs',
+                        'small'   : 'btn-sm',      'large'   : 'btn-lg',
+                        'block'   : 'btn-block',   'active'  : 'btn-active' }
+
+        classes = 'btn '
+        flag = False
+        for node_class in node['classes']:
+            if node_class in ['primary', 'success', 'warning'
+                              'info', 'link', 'danger', 'outline']:
+                flag = True
+            btn_class = btn_classes.get(node_class, None)
+            if btn_class:
+                classes += btn_class + ' '
+        if flag == False:
+            classes += 'btn-default'
+
+        target = node['target']
+        properties = ''
+
+        # Disabled
+        if 'disabled' in node['classes']:
+            if target:
+                properties += ' disabled="disabled"'
+            else:
+                classes += ' disabled'
+
+        # Data toggle
+        if 'toggle' in node['classes']:
+            classes += ' dropdown-toggle '
+            properties += ' data-toggle="dropdown"'
+        if target:
+            properties += ' role="button"'
+            anchor = '<a href="%s" class="%s" %s>' % (target,classes,properties)
+            self.body.append(anchor)
+        else:
+            properties += ' type="button"'
+            button = '<button class="%s" %s>' % (classes,properties)
+            self.body.append(button)
+
+    def depart_button(self, node):
+        if node['target']:
+            self.body.append('</a>\n')
+        else:
+            self.body.append('</button>\n')
+
+
+    def visit_progress(self, node):
+        prg_classes = { 'success' : 'progress-bar-success',
+                        'info'    : 'progress-bar-info',
+                        'warning' : 'progress-bar-warning',
+                        'danger'  : 'progress-bar-danger' }
+
+        label = node['label']
+        classes = 'progress-bar'
+        flag = False
+        for nodeclass in node['classes']:
+            flag = True
+            classes += ' ' + prg_classes.get(nodeclass, '')
+        if flag == False:
+            classes += ' progress-bar-default'
+        properties = 'role="progress-bar"'
+        properties += ' aria-valuenow="%d"' % int(node['value'])
+        properties += ' aria-valuemin="%d"' % int(node['value_min'])
+        properties += ' aria-valuemax="%d"' % int(node['value_max'])
+        properties += ' style="width: %d%%";' % int(node['value'])
+        if 'active' in node['classes']:
+            self.body.append('<div class="progress progress-striped active">')
+        elif 'striped' in node['classes']:
+            self.body.append('<div class="progress progress-striped">')
+        else:
+            self.body.append('<div class="progress">')
+        self.body.append(
+            '<div class="%s" %s>%s</div>' % (classes,properties,label))
+        self.body.append('</div>')
+        raise nodes.SkipNode
+
+    def visit_alert(self, node):
+        self.body.append(self.starttag(node, 'div', CLASS='alert'))
+        if node.dismissable:
+            self.body.append(
+                u"""<button type="button" class="close" data-dismiss="alert" """
+                u"""aria-hidden="true">×</button>""")
+
+    def depart_alert(self, node):
+        self.body.append('</div>\n')
+
+    def visit_callout(self, node):
+        self.body.append(self.starttag(node, 'div', CLASS='bs-callout'))
+
+    def depart_callout(self, node):
+        self.body.append('</div>\n')
+
+
+
+    # overwritten
+    def visit_definition_list(self, node):
+        list_class = node.parent.get('list-class', [])
+        list_class.append('docutils')
+        list_class = ' '.join(list_class)
+        self.body.append(self.starttag(node, 'dl', CLASS=list_class))
+
+    # overwritten
+    def visit_sidebar(self, node):
+        self.body.append(self.starttag(node, 'div', CLASS='col-md-3 col-md-push-9'))
+        self.body.append(self.starttag(node, 'div', CLASS='bs-docs-sidebar hidden-print affix-top'))
+        self.body.append(self.starttag(node, 'div', CLASS='sidebar'))
+        self.set_first_last(node)
+        self.in_sidebar = True
+
+    # overwritten
+    def depart_sidebar(self, node):
+        self.body.append('</div>\n')
+        self.body.append('</div>\n')
+        self.body.append('</div>\n')
+        #  Opening tag for body
+        self.body.append(self.starttag(node, 'div', CLASS='col-md-9 col-md-pull-3'))
+        self.in_sidebar = False
+
+    # overwritten : removed compact paragraph
+    # def visit_paragraph(self, node):
+    #     if self.should_be_compact_paragraph(node):
+    #         self.context.append('')
+    #     else:
+    #         self.body.append(self.starttag(node, 'p', ''))
+    #     self.context.append('</p>\n')
+
+    # overwritten: remove border=1, replace docutils/table class
+    def visit_table(self, node):
+        self.context.append(self.compact_p)
+        self.compact_p = True
+        #classes = ' '.join(['docutils', self.settings.table_style]).strip()
+        classes = ' '.join(['table', self.settings.table_style]).strip()
+        self.body.append(self.starttag(node, 'table', CLASS=classes))
+
+    # overwritten : removed 'container' class
+    def visit_container(self, node):
+        self.body.append(self.starttag(node, 'div', CLASS=''))
+
+    # overwritten: get rid of <hr> tag
+    def depart_header(self, node):
+        start = self.context.pop()
+        header = [self.starttag(node, 'div', CLASS='header')]
+        header.extend(self.body[start:])
+        header.append('\n</div>\n')
+        self.body_prefix.extend(header)
+        self.header.extend(header)
+        del self.body[start:]
+
+    # overwritten: get rid of <hr> tag
+    def depart_footer(self, node):
+        start = self.context.pop()
+        footer = [self.starttag(node, 'div', CLASS='footer')]
+        footer.extend(self.body[start:])
+        footer.append('\n</div>\n')
+        self.footer.extend(footer)
+        self.body_suffix[:0] = footer
+        del self.body[start:]
+
+    # overwritten
+    def depart_document(self, node):
+        self.head_prefix.extend([self.doctype,
+                                 self.head_prefix_template %
+                                 {'lang': self.settings.language_code}])
+        self.html_prolog.append(self.doctype)
+        self.meta.insert(0, self.content_type % self.settings.output_encoding)
+        self.head.insert(0, self.content_type % self.settings.output_encoding)
+        if self.math_header:
+            self.head.append(self.math_header)
+        # skip content-type meta tag with interpolated charset value:
+        self.html_head.extend(self.head[1:])
+        # self.body_prefix.append(self.starttag(node, 'div', CLASS='document'))
+        self.body_prefix.append(self.starttag(node, 'div', CLASS='container'))
+        # self.body_suffix.insert(0, '</div>\n')
+        self.fragment.extend(self.body) # self.fragment is the "naked" body
+        self.html_body.extend(self.body_prefix[1:] + self.body_pre_docinfo
+                              + self.docinfo + self.body
+                              + self.body_suffix[:-1])
+        assert not self.context, 'len(context) = %s' % len(self.context)
+
+
+# -----------------------------------------------------------------------------
+class RSTReader(RstReader):
+    """
+        A custom RST reader that behaves exactly like its parent class RstReader
+        with the difference that it uses our HTMLTranslator
+    """
+
+    def _get_publisher(self, source_path):
+        extra_params = {'initial_header_level': '2',
+                        'syntax_highlight': 'short',
+                        'input_encoding': 'utf-8'}
+        user_params = self.settings.get('DOCUTILS_SETTINGS')
+        if user_params:
+            extra_params.update(user_params)
+
+        pub = Publisher(destination_class=StringOutput)
+        pub.set_components('standalone', 'restructuredtext', 'html')
+        pub.writer.translator_class = HTMLTranslator
+        pub.process_programmatic_settings(None, extra_params, None)
+        pub.set_source(source_path=source_path)
+        pub.publish()
+        return pub
+
+
+def add_reader(readers):
+    readers.reader_classes['rst'] = RSTReader
+
+def register():
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.css b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.css
new file mode 100644
index 0000000..a406992
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.css
@@ -0,0 +1,347 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+}
+.btn-default:active,
+.btn-primary:active,
+.btn-success:active,
+.btn-info:active,
+.btn-warning:active,
+.btn-danger:active,
+.btn-default.active,
+.btn-primary.active,
+.btn-success.active,
+.btn-info.active,
+.btn-warning.active,
+.btn-danger.active {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+}
+.btn-default {
+  text-shadow: 0 1px 0 #fff;
+  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #dbdbdb;
+  border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus {
+  background-color: #e0e0e0;
+  background-position: 0 -15px;
+}
+.btn-default:active,
+.btn-default.active {
+  background-color: #e0e0e0;
+  border-color: #dbdbdb;
+}
+.btn-primary {
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #2b669a;
+}
+.btn-primary:hover,
+.btn-primary:focus {
+  background-color: #2d6ca2;
+  background-position: 0 -15px;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #2d6ca2;
+  border-color: #2b669a;
+}
+.btn-success {
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
+  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #3e8f3e;
+}
+.btn-success:hover,
+.btn-success:focus {
+  background-color: #419641;
+  background-position: 0 -15px;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #419641;
+  border-color: #3e8f3e;
+}
+.btn-info {
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #28a4c9;
+}
+.btn-info:hover,
+.btn-info:focus {
+  background-color: #2aabd2;
+  background-position: 0 -15px;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #2aabd2;
+  border-color: #28a4c9;
+}
+.btn-warning {
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #e38d13;
+}
+.btn-warning:hover,
+.btn-warning:focus {
+  background-color: #eb9316;
+  background-position: 0 -15px;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #eb9316;
+  border-color: #e38d13;
+}
+.btn-danger {
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #b92c28;
+}
+.btn-danger:hover,
+.btn-danger:focus {
+  background-color: #c12e2a;
+  background-position: 0 -15px;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #c12e2a;
+  border-color: #b92c28;
+}
+.thumbnail,
+.img-thumbnail {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  background-color: #e8e8e8;
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+  background-repeat: repeat-x;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  background-color: #357ebd;
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
+  background-repeat: repeat-x;
+}
+.navbar-default {
+  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+}
+.navbar-default .navbar-nav > .active > a {
+  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
+  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+}
+.navbar-brand,
+.navbar-nav > li > a {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
+}
+.navbar-inverse {
+  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
+  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+}
+.navbar-inverse .navbar-nav > .active > a {
+  background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
+  background-image:         linear-gradient(to bottom, #222 0%, #282828 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+}
+.navbar-inverse .navbar-brand,
+.navbar-inverse .navbar-nav > li > a {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+}
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  border-radius: 0;
+}
+.alert {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+}
+.alert-success {
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #b2dba1;
+}
+.alert-info {
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #9acfea;
+}
+.alert-warning {
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #f5e79e;
+}
+.alert-danger {
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #dca7a7;
+}
+.progress {
+  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar {
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-success {
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-info {
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-warning {
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-danger {
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
+  background-repeat: repeat-x;
+}
+.list-group {
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  text-shadow: 0 -1px 0 #3071a9;
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #3278b3;
+}
+.panel {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+}
+.panel-default > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-primary > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-success > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-info > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-warning > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-danger > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
+  background-repeat: repeat-x;
+}
+.well {
+  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #dcdcdc;
+  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+}
+/*# sourceMappingURL=bootstrap-theme.css.map */
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.css.map b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.css.map
new file mode 100644
index 0000000..b36fc9a
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/theme.less","less/mixins.less"],"names":[],"mappings":"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","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  // Reset the shadow\n  &:active,\n  &.active {\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n  #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n  .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n  background-repeat: repeat-x;\n  border-color: darken(@btn-color, 14%);\n\n  &:hover,\n  &:focus  {\n    background-color: darken(@btn-color, 12%);\n    background-position: 0 -15px;\n  }\n\n  &:active,\n  &.active {\n    background-color: darken(@btn-color, 12%);\n    border-color: darken(@btn-color, 14%);\n  }\n}\n\n// Common styles\n.btn {\n  // Remove the gradient for the pressed/active state\n  &:active,\n  &.active {\n    background-image: none;\n  }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info    { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger  { .btn-styles(@btn-danger-bg); }\n\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n  background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n  background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n  border-radius: @navbar-border-radius;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: darken(@navbar-default-bg, 5%); @end-color: darken(@navbar-default-bg, 2%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n  }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n  #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: @navbar-inverse-bg; @end-color: lighten(@navbar-inverse-bg, 2.5%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n  }\n\n  .navbar-brand,\n  .navbar-nav > li > a {\n    text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n  }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n  text-shadow: 0 1px 0 rgba(255,255,255,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n  .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n  border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success    { .alert-styles(@alert-success-bg); }\n.alert-info       { .alert-styles(@alert-info-bg); }\n.alert-warning    { .alert-styles(@alert-warning-bg); }\n.alert-danger     { .alert-styles(@alert-danger-bg); }\n\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n  #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar            { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success    { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info       { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning    { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger     { .progress-bar-styles(@progress-bar-danger-bg); }\n\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n  border-radius: @border-radius-base;\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n  #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n  border-color: darken(@list-group-active-border, 7.5%);\n}\n\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n  .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading   { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading   { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading   { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading      { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading   { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading    { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n  #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n  border-color: darken(@well-bg, 10%);\n  @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n}\n","//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n//    contenteditable attribute is included anywhere else in the document.\n//    Otherwise it causes space to appear at the top and bottom of elements\n//    that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n//    `:before` to contain the top-margins of child elements.\n.clearfix() {\n  &:before,\n  &:after {\n    content: \" \"; // 1\n    display: table; // 2\n  }\n  &:after {\n    clear: both;\n  }\n}\n\n// WebKit-style focus\n.tab-focus() {\n  // Default\n  outline: thin dotted;\n  // WebKit\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n  width: @width;\n  height: @height;\n}\n.square(@size) {\n  .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  &::-moz-placeholder           { color: @color;   // Firefox\n                                  opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n  &:-ms-input-placeholder       { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n  font: ~\"0/0\" a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n  .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n  border-top-right-radius: @radius;\n   border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n  border-bottom-right-radius: @radius;\n     border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n  border-bottom-right-radius: @radius;\n   border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n  border-bottom-left-radius: @radius;\n     border-top-left-radius: @radius;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n//   supported browsers that have box shadow capabilities now support the\n//   standard `box-shadow` property.\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n  -webkit-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n          transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n  -webkit-transform: scale(@ratio, @ratio-y);\n      -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n          transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n          transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n  -webkit-transform: skew(@x, @y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n          transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n  resize: @direction; // Options: horizontal, vertical, both\n  overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n  opacity: @opacity;\n  // IE8 filter\n  @opacity-ie: (@opacity * 100);\n  filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n    background-image:  linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and (   min--moz-device-pixel-ratio: 2),\n  only screen and (     -o-min-device-pixel-ratio: 2/1),\n  only screen and (        min-device-pixel-ratio: 2),\n  only screen and (                min-resolution: 192dpi),\n  only screen and (                min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n  height: 1px;\n  margin: ((@line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n  border-color: @border;\n\n  & > .panel-heading {\n    color: @heading-text-color;\n    background-color: @heading-bg-color;\n    border-color: @heading-border;\n\n    + .panel-collapse .panel-body {\n      border-top-color: @border;\n    }\n  }\n  & > .panel-footer {\n    + .panel-collapse .panel-body {\n      border-bottom-color: @border;\n    }\n  }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n  background-color: @background;\n  border-color: @border;\n  color: @text-color;\n\n  hr {\n    border-top-color: darken(@border, 5%);\n  }\n  .alert-link {\n    color: darken(@text-color, 10%);\n  }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      background-color: @background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.@{state}:hover,\n    > th.@{state}:hover,\n    &.@{state}:hover > td,\n    &.@{state}:hover > th {\n      background-color: darken(@background, 5%);\n    }\n  }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n  .list-group-item-@{state} {\n    color: @color;\n    background-color: @background;\n\n    a& {\n      color: @color;\n\n      .list-group-item-heading { color: inherit; }\n\n      &:hover,\n      &:focus {\n        color: @color;\n        background-color: darken(@background, 5%);\n      }\n      &.active,\n      &.active:hover,\n      &.active:focus {\n        color: #fff;\n        background-color: @color;\n        border-color: @color;\n      }\n    }\n  }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:hover,\n  &:focus,\n  &:active,\n  &.active,\n  .open .dropdown-toggle& {\n    color: @color;\n    background-color: darken(@background, 8%);\n        border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active,\n  .open .dropdown-toggle& {\n    background-image: none;\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      background-color: @background;\n          border-color: @border;\n    }\n  }\n\n  .badge {\n    color: @background;\n    background-color: @color;\n  }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: @padding-vertical @padding-horizontal;\n      font-size: @font-size;\n    }\n    &:first-child {\n      > a,\n      > span {\n        .border-left-radius(@border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius);\n      }\n    }\n  }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n  background-color: @color;\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken(@color, 10%);\n    }\n  }\n}\n\n// Contextual backgrounds\n// -------------------------\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover {\n    background-color: darken(@color, 10%);\n  }\n}\n\n// Typography\n// -------------------------\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover {\n    color: darken(@color, 10%);\n  }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n  margin-top: ((@navbar-height - @element-height) / 2);\n  margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n  background-color: @color;\n  .progress-striped & {\n    #gradient > .striped();\n  }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n  display: block !important;\n  table&  { display: table; }\n  tr&     { display: table-row !important; }\n  th&,\n  td&     { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n  display: none !important;\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left:  (@grid-gutter-width / 2);\n  padding-right: (@grid-gutter-width / 2);\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-left:  (@gutter / -2);\n  margin-right: (@gutter / -2);\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  @media (min-width: @screen-xs-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-xs-column-push(@columns) {\n  @media (min-width: @screen-xs-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-xs-column-pull(@columns) {\n  @media (min-width: @screen-xs-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) when (@index = 1) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-left:  (@grid-gutter-width / 2);\n      padding-right: (@grid-gutter-width / 2);\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) when (@index = 1) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n  // Color the label and help text\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline  {\n    color: @text-color;\n  }\n  // Set the border and box shadow on specific inputs to match\n  .form-control {\n    border-color: @border-color;\n    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n    &:focus {\n      border-color: darken(@border-color, 10%);\n      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n      .box-shadow(@shadow);\n    }\n  }\n  // Set validation states also for addons\n  .input-group-addon {\n    color: @text-color;\n    border-color: @border-color;\n    background-color: @background-color;\n  }\n  // Optional feedback icon\n  .form-control-feedback {\n    color: @text-color;\n  }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n  &:focus {\n    border-color: @color;\n    outline: 0;\n    .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n  }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  height: @input-height;\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n\n  select& {\n    height: @input-height;\n    line-height: @input-height;\n  }\n\n  textarea&,\n  select[multiple]& {\n    height: auto;\n  }\n}\n"]}
\ No newline at end of file
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.min.css b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.min.css
new file mode 100644
index 0000000..ba4bd28
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap-theme.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
\ No newline at end of file
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.css b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.css
new file mode 100644
index 0000000..7f36651
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.css
@@ -0,0 +1,5785 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
+html {
+  font-family: sans-serif;
+  -webkit-text-size-adjust: 100%;
+      -ms-text-size-adjust: 100%;
+}
+body {
+  margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+  display: block;
+}
+audio,
+canvas,
+progress,
+video {
+  display: inline-block;
+  vertical-align: baseline;
+}
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+[hidden],
+template {
+  display: none;
+}
+a {
+  background: transparent;
+}
+a:active,
+a:hover {
+  outline: 0;
+}
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+b,
+strong {
+  font-weight: bold;
+}
+dfn {
+  font-style: italic;
+}
+h1 {
+  margin: .67em 0;
+  font-size: 2em;
+}
+mark {
+  color: #000;
+  background: #ff0;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -.5em;
+}
+sub {
+  bottom: -.25em;
+}
+img {
+  border: 0;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+figure {
+  margin: 1em 40px;
+}
+hr {
+  height: 0;
+  -moz-box-sizing: content-box;
+       box-sizing: content-box;
+}
+pre {
+  overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+  margin: 0;
+  font: inherit;
+  color: inherit;
+}
+button {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+input {
+  line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box;
+  padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+fieldset {
+  padding: .35em .625em .75em;
+  margin: 0 2px;
+  border: 1px solid #c0c0c0;
+}
+legend {
+  padding: 0;
+  border: 0;
+}
+textarea {
+  overflow: auto;
+}
+optgroup {
+  font-weight: bold;
+}
+table {
+  border-spacing: 0;
+  border-collapse: collapse;
+}
+td,
+th {
+  padding: 0;
+}
+@media print {
+  * {
+    color: #000 !important;
+    text-shadow: none !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  a[href^="javascript:"]:after,
+  a[href^="#"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+  select {
+    background: #fff !important;
+  }
+  .navbar {
+    display: none;
+  }
+  .table td,
+  .table th {
+    background-color: #fff !important;
+  }
+  .btn > .caret,
+  .dropup > .btn > .caret {
+    border-top-color: #000 !important;
+  }
+  .label {
+    border: 1px solid #000;
+  }
+  .table {
+    border-collapse: collapse !important;
+  }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #ddd !important;
+  }
+}
+* {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+*:before,
+*:after {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+html {
+  font-size: 62.5%;
+
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #333;
+  background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+a {
+  color: #428bca;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #2a6496;
+  text-decoration: underline;
+}
+a:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+figure {
+  margin: 0;
+}
+img {
+  vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.img-rounded {
+  border-radius: 6px;
+}
+.img-thumbnail {
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+  padding: 4px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all .2s ease-in-out;
+          transition: all .2s ease-in-out;
+}
+.img-circle {
+  border-radius: 50%;
+}
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eee;
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+  font-family: inherit;
+  font-weight: 500;
+  line-height: 1.1;
+  color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+  font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+  font-size: 75%;
+}
+h1,
+.h1 {
+  font-size: 36px;
+}
+h2,
+.h2 {
+  font-size: 30px;
+}
+h3,
+.h3 {
+  font-size: 24px;
+}
+h4,
+.h4 {
+  font-size: 18px;
+}
+h5,
+.h5 {
+  font-size: 14px;
+}
+h6,
+.h6 {
+  font-size: 12px;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 16px;
+  font-weight: 200;
+  line-height: 1.4;
+}
+@media (min-width: 768px) {
+  .lead {
+    font-size: 21px;
+  }
+}
+small,
+.small {
+  font-size: 85%;
+}
+cite {
+  font-style: normal;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+.text-justify {
+  text-align: justify;
+}
+.text-muted {
+  color: #999;
+}
+.text-primary {
+  color: #428bca;
+}
+a.text-primary:hover {
+  color: #3071a9;
+}
+.text-success {
+  color: #3c763d;
+}
+a.text-success:hover {
+  color: #2b542c;
+}
+.text-info {
+  color: #31708f;
+}
+a.text-info:hover {
+  color: #245269;
+}
+.text-warning {
+  color: #8a6d3b;
+}
+a.text-warning:hover {
+  color: #66512c;
+}
+.text-danger {
+  color: #a94442;
+}
+a.text-danger:hover {
+  color: #843534;
+}
+.bg-primary {
+  color: #fff;
+  background-color: #428bca;
+}
+a.bg-primary:hover {
+  background-color: #3071a9;
+}
+.bg-success {
+  background-color: #dff0d8;
+}
+a.bg-success:hover {
+  background-color: #c1e2b3;
+}
+.bg-info {
+  background-color: #d9edf7;
+}
+a.bg-info:hover {
+  background-color: #afd9ee;
+}
+.bg-warning {
+  background-color: #fcf8e3;
+}
+a.bg-warning:hover {
+  background-color: #f7ecb5;
+}
+.bg-danger {
+  background-color: #f2dede;
+}
+a.bg-danger:hover {
+  background-color: #e4b9b9;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+  margin-bottom: 0;
+}
+.list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+.list-inline {
+  padding-left: 0;
+  margin-left: -5px;
+  list-style: none;
+}
+.list-inline > li {
+  display: inline-block;
+  padding-right: 5px;
+  padding-left: 5px;
+}
+dl {
+  margin-top: 0;
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 1.42857143;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .dl-horizontal dt {
+    float: left;
+    width: 160px;
+    overflow: hidden;
+    clear: left;
+    text-align: right;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .dl-horizontal dd {
+    margin-left: 180px;
+  }
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #999;
+}
+.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  font-size: 17.5px;
+  border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+  margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+  display: block;
+  font-size: 80%;
+  line-height: 1.42857143;
+  color: #999;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+  content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  text-align: right;
+  border-right: 5px solid #eee;
+  border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+  content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+  content: '\00A0 \2014';
+}
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  white-space: nowrap;
+  background-color: #f9f2f4;
+  border-radius: 4px;
+}
+kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #fff;
+  background-color: #333;
+  border-radius: 3px;
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.42857143;
+  color: #333;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border-radius: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+.container {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+@media (min-width: 768px) {
+  .container {
+    width: 750px;
+  }
+}
+@media (min-width: 992px) {
+  .container {
+    width: 970px;
+  }
+}
+@media (min-width: 1200px) {
+  .container {
+    width: 1170px;
+  }
+}
+.container-fluid {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+.row {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+  float: left;
+}
+.col-xs-12 {
+  width: 100%;
+}
+.col-xs-11 {
+  width: 91.66666667%;
+}
+.col-xs-10 {
+  width: 83.33333333%;
+}
+.col-xs-9 {
+  width: 75%;
+}
+.col-xs-8 {
+  width: 66.66666667%;
+}
+.col-xs-7 {
+  width: 58.33333333%;
+}
+.col-xs-6 {
+  width: 50%;
+}
+.col-xs-5 {
+  width: 41.66666667%;
+}
+.col-xs-4 {
+  width: 33.33333333%;
+}
+.col-xs-3 {
+  width: 25%;
+}
+.col-xs-2 {
+  width: 16.66666667%;
+}
+.col-xs-1 {
+  width: 8.33333333%;
+}
+.col-xs-pull-12 {
+  right: 100%;
+}
+.col-xs-pull-11 {
+  right: 91.66666667%;
+}
+.col-xs-pull-10 {
+  right: 83.33333333%;
+}
+.col-xs-pull-9 {
+  right: 75%;
+}
+.col-xs-pull-8 {
+  right: 66.66666667%;
+}
+.col-xs-pull-7 {
+  right: 58.33333333%;
+}
+.col-xs-pull-6 {
+  right: 50%;
+}
+.col-xs-pull-5 {
+  right: 41.66666667%;
+}
+.col-xs-pull-4 {
+  right: 33.33333333%;
+}
+.col-xs-pull-3 {
+  right: 25%;
+}
+.col-xs-pull-2 {
+  right: 16.66666667%;
+}
+.col-xs-pull-1 {
+  right: 8.33333333%;
+}
+.col-xs-pull-0 {
+  right: 0;
+}
+.col-xs-push-12 {
+  left: 100%;
+}
+.col-xs-push-11 {
+  left: 91.66666667%;
+}
+.col-xs-push-10 {
+  left: 83.33333333%;
+}
+.col-xs-push-9 {
+  left: 75%;
+}
+.col-xs-push-8 {
+  left: 66.66666667%;
+}
+.col-xs-push-7 {
+  left: 58.33333333%;
+}
+.col-xs-push-6 {
+  left: 50%;
+}
+.col-xs-push-5 {
+  left: 41.66666667%;
+}
+.col-xs-push-4 {
+  left: 33.33333333%;
+}
+.col-xs-push-3 {
+  left: 25%;
+}
+.col-xs-push-2 {
+  left: 16.66666667%;
+}
+.col-xs-push-1 {
+  left: 8.33333333%;
+}
+.col-xs-push-0 {
+  left: 0;
+}
+.col-xs-offset-12 {
+  margin-left: 100%;
+}
+.col-xs-offset-11 {
+  margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+  margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+.col-xs-offset-8 {
+  margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+  margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+.col-xs-offset-5 {
+  margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+  margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+.col-xs-offset-2 {
+  margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+  margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+    float: left;
+  }
+  .col-sm-12 {
+    width: 100%;
+  }
+  .col-sm-11 {
+    width: 91.66666667%;
+  }
+  .col-sm-10 {
+    width: 83.33333333%;
+  }
+  .col-sm-9 {
+    width: 75%;
+  }
+  .col-sm-8 {
+    width: 66.66666667%;
+  }
+  .col-sm-7 {
+    width: 58.33333333%;
+  }
+  .col-sm-6 {
+    width: 50%;
+  }
+  .col-sm-5 {
+    width: 41.66666667%;
+  }
+  .col-sm-4 {
+    width: 33.33333333%;
+  }
+  .col-sm-3 {
+    width: 25%;
+  }
+  .col-sm-2 {
+    width: 16.66666667%;
+  }
+  .col-sm-1 {
+    width: 8.33333333%;
+  }
+  .col-sm-pull-12 {
+    right: 100%;
+  }
+  .col-sm-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-sm-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-sm-pull-9 {
+    right: 75%;
+  }
+  .col-sm-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-sm-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-sm-pull-6 {
+    right: 50%;
+  }
+  .col-sm-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-sm-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-sm-pull-3 {
+    right: 25%;
+  }
+  .col-sm-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-sm-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-sm-pull-0 {
+    right: 0;
+  }
+  .col-sm-push-12 {
+    left: 100%;
+  }
+  .col-sm-push-11 {
+    left: 91.66666667%;
+  }
+  .col-sm-push-10 {
+    left: 83.33333333%;
+  }
+  .col-sm-push-9 {
+    left: 75%;
+  }
+  .col-sm-push-8 {
+    left: 66.66666667%;
+  }
+  .col-sm-push-7 {
+    left: 58.33333333%;
+  }
+  .col-sm-push-6 {
+    left: 50%;
+  }
+  .col-sm-push-5 {
+    left: 41.66666667%;
+  }
+  .col-sm-push-4 {
+    left: 33.33333333%;
+  }
+  .col-sm-push-3 {
+    left: 25%;
+  }
+  .col-sm-push-2 {
+    left: 16.66666667%;
+  }
+  .col-sm-push-1 {
+    left: 8.33333333%;
+  }
+  .col-sm-push-0 {
+    left: 0;
+  }
+  .col-sm-offset-12 {
+    margin-left: 100%;
+  }
+  .col-sm-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-sm-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+  .col-sm-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-sm-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+  .col-sm-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-sm-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+  .col-sm-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-sm-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-sm-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 992px) {
+  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+    float: left;
+  }
+  .col-md-12 {
+    width: 100%;
+  }
+  .col-md-11 {
+    width: 91.66666667%;
+  }
+  .col-md-10 {
+    width: 83.33333333%;
+  }
+  .col-md-9 {
+    width: 75%;
+  }
+  .col-md-8 {
+    width: 66.66666667%;
+  }
+  .col-md-7 {
+    width: 58.33333333%;
+  }
+  .col-md-6 {
+    width: 50%;
+  }
+  .col-md-5 {
+    width: 41.66666667%;
+  }
+  .col-md-4 {
+    width: 33.33333333%;
+  }
+  .col-md-3 {
+    width: 25%;
+  }
+  .col-md-2 {
+    width: 16.66666667%;
+  }
+  .col-md-1 {
+    width: 8.33333333%;
+  }
+  .col-md-pull-12 {
+    right: 100%;
+  }
+  .col-md-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-md-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-md-pull-9 {
+    right: 75%;
+  }
+  .col-md-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-md-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-md-pull-6 {
+    right: 50%;
+  }
+  .col-md-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-md-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-md-pull-3 {
+    right: 25%;
+  }
+  .col-md-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-md-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-md-pull-0 {
+    right: 0;
+  }
+  .col-md-push-12 {
+    left: 100%;
+  }
+  .col-md-push-11 {
+    left: 91.66666667%;
+  }
+  .col-md-push-10 {
+    left: 83.33333333%;
+  }
+  .col-md-push-9 {
+    left: 75%;
+  }
+  .col-md-push-8 {
+    left: 66.66666667%;
+  }
+  .col-md-push-7 {
+    left: 58.33333333%;
+  }
+  .col-md-push-6 {
+    left: 50%;
+  }
+  .col-md-push-5 {
+    left: 41.66666667%;
+  }
+  .col-md-push-4 {
+    left: 33.33333333%;
+  }
+  .col-md-push-3 {
+    left: 25%;
+  }
+  .col-md-push-2 {
+    left: 16.66666667%;
+  }
+  .col-md-push-1 {
+    left: 8.33333333%;
+  }
+  .col-md-push-0 {
+    left: 0;
+  }
+  .col-md-offset-12 {
+    margin-left: 100%;
+  }
+  .col-md-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-md-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+  .col-md-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-md-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+  .col-md-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-md-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+  .col-md-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-md-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-md-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 1200px) {
+  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+    float: left;
+  }
+  .col-lg-12 {
+    width: 100%;
+  }
+  .col-lg-11 {
+    width: 91.66666667%;
+  }
+  .col-lg-10 {
+    width: 83.33333333%;
+  }
+  .col-lg-9 {
+    width: 75%;
+  }
+  .col-lg-8 {
+    width: 66.66666667%;
+  }
+  .col-lg-7 {
+    width: 58.33333333%;
+  }
+  .col-lg-6 {
+    width: 50%;
+  }
+  .col-lg-5 {
+    width: 41.66666667%;
+  }
+  .col-lg-4 {
+    width: 33.33333333%;
+  }
+  .col-lg-3 {
+    width: 25%;
+  }
+  .col-lg-2 {
+    width: 16.66666667%;
+  }
+  .col-lg-1 {
+    width: 8.33333333%;
+  }
+  .col-lg-pull-12 {
+    right: 100%;
+  }
+  .col-lg-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-lg-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-lg-pull-9 {
+    right: 75%;
+  }
+  .col-lg-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-lg-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-lg-pull-6 {
+    right: 50%;
+  }
+  .col-lg-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-lg-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-lg-pull-3 {
+    right: 25%;
+  }
+  .col-lg-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-lg-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-lg-pull-0 {
+    right: 0;
+  }
+  .col-lg-push-12 {
+    left: 100%;
+  }
+  .col-lg-push-11 {
+    left: 91.66666667%;
+  }
+  .col-lg-push-10 {
+    left: 83.33333333%;
+  }
+  .col-lg-push-9 {
+    left: 75%;
+  }
+  .col-lg-push-8 {
+    left: 66.66666667%;
+  }
+  .col-lg-push-7 {
+    left: 58.33333333%;
+  }
+  .col-lg-push-6 {
+    left: 50%;
+  }
+  .col-lg-push-5 {
+    left: 41.66666667%;
+  }
+  .col-lg-push-4 {
+    left: 33.33333333%;
+  }
+  .col-lg-push-3 {
+    left: 25%;
+  }
+  .col-lg-push-2 {
+    left: 16.66666667%;
+  }
+  .col-lg-push-1 {
+    left: 8.33333333%;
+  }
+  .col-lg-push-0 {
+    left: 0;
+  }
+  .col-lg-offset-12 {
+    margin-left: 100%;
+  }
+  .col-lg-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-lg-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+  .col-lg-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-lg-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+  .col-lg-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-lg-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+  .col-lg-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-lg-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-lg-offset-0 {
+    margin-left: 0;
+  }
+}
+table {
+  max-width: 100%;
+  background-color: transparent;
+}
+th {
+  text-align: left;
+}
+.table {
+  width: 100%;
+  margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+  padding: 8px;
+  line-height: 1.42857143;
+  vertical-align: top;
+  border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+  vertical-align: bottom;
+  border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+  border-top: 0;
+}
+.table > tbody + tbody {
+  border-top: 2px solid #ddd;
+}
+.table .table {
+  background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+  padding: 5px;
+}
+.table-bordered {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+  border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-child(odd) > td,
+.table-striped > tbody > tr:nth-child(odd) > th {
+  background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover > td,
+.table-hover > tbody > tr:hover > th {
+  background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+  position: static;
+  display: table-column;
+  float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+  position: static;
+  display: table-cell;
+  float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+  background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr.active:hover > th {
+  background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+  background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+  background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr.info:hover > th {
+  background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+  background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+  background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc;
+}
+@media (max-width: 767px) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-x: scroll;
+    overflow-y: hidden;
+    -webkit-overflow-scrolling: touch;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #ddd;
+  }
+  .table-responsive > .table {
+    margin-bottom: 0;
+  }
+  .table-responsive > .table > thead > tr > th,
+  .table-responsive > .table > tbody > tr > th,
+  .table-responsive > .table > tfoot > tr > th,
+  .table-responsive > .table > thead > tr > td,
+  .table-responsive > .table > tbody > tr > td,
+  .table-responsive > .table > tfoot > tr > td {
+    white-space: nowrap;
+  }
+  .table-responsive > .table-bordered {
+    border: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:first-child,
+  .table-responsive > .table-bordered > tbody > tr > th:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+  .table-responsive > .table-bordered > thead > tr > td:first-child,
+  .table-responsive > .table-bordered > tbody > tr > td:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+    border-left: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:last-child,
+  .table-responsive > .table-bordered > tbody > tr > th:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+  .table-responsive > .table-bordered > thead > tr > td:last-child,
+  .table-responsive > .table-bordered > tbody > tr > td:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+    border-right: 0;
+  }
+  .table-responsive > .table-bordered > tbody > tr:last-child > th,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+  .table-responsive > .table-bordered > tbody > tr:last-child > td,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+    border-bottom: 0;
+  }
+}
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 21px;
+  line-height: inherit;
+  color: #333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+label {
+  display: inline-block;
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+input[type="search"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9;
+  /* IE8-9 */
+  line-height: normal;
+}
+input[type="file"] {
+  display: block;
+}
+input[type="range"] {
+  display: block;
+  width: 100%;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+}
+.form-control {
+  display: block;
+  width: 100%;
+  height: 34px;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+  color: #999;
+  opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+  color: #999;
+}
+.form-control::-webkit-input-placeholder {
+  color: #999;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+  cursor: not-allowed;
+  background-color: #eee;
+  opacity: 1;
+}
+textarea.form-control {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-appearance: none;
+}
+input[type="date"] {
+  line-height: 34px;
+}
+.form-group {
+  margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+  display: block;
+  min-height: 20px;
+  padding-left: 20px;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+  display: inline;
+  font-weight: normal;
+  cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  float: left;
+  margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+.radio[disabled],
+.radio-inline[disabled],
+.checkbox[disabled],
+.checkbox-inline[disabled],
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"],
+fieldset[disabled] .radio,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox,
+fieldset[disabled] .checkbox-inline {
+  cursor: not-allowed;
+}
+.input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-sm {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+  height: auto;
+}
+.input-lg {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+select.input-lg {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+  height: auto;
+}
+.has-feedback {
+  position: relative;
+}
+.has-feedback .form-control {
+  padding-right: 42.5px;
+}
+.has-feedback .form-control-feedback {
+  position: absolute;
+  top: 25px;
+  right: 0;
+  display: block;
+  width: 34px;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline {
+  color: #3c763d;
+}
+.has-success .form-control {
+  border-color: #3c763d;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+  border-color: #2b542c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+  color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline {
+  color: #8a6d3b;
+}
+.has-warning .form-control {
+  border-color: #8a6d3b;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+  border-color: #66512c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+  color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline {
+  color: #a94442;
+}
+.has-error .form-control {
+  border-color: #a94442;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+  border-color: #843534;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #a94442;
+}
+.has-error .form-control-feedback {
+  color: #a94442;
+}
+.form-control-static {
+  margin-bottom: 0;
+}
+.help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: #737373;
+}
+@media (min-width: 768px) {
+  .form-inline .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .form-inline .input-group > .form-control {
+    width: 100%;
+  }
+  .form-inline .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio,
+  .form-inline .checkbox {
+    display: inline-block;
+    padding-left: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio input[type="radio"],
+  .form-inline .checkbox input[type="checkbox"] {
+    float: none;
+    margin-left: 0;
+  }
+  .form-inline .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+.form-horizontal .control-label,
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+  padding-top: 7px;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+  min-height: 27px;
+}
+.form-horizontal .form-group {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+.form-horizontal .form-control-static {
+  padding-top: 7px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .control-label {
+    text-align: right;
+  }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+  top: 0;
+  right: 15px;
+}
+.btn {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus {
+  color: #333;
+  text-decoration: none;
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+  pointer-events: none;
+  cursor: not-allowed;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  opacity: .65;
+}
+.btn-default {
+  color: #333;
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+  color: #333;
+  background-color: #ebebeb;
+  border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+  background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default .badge {
+  color: #fff;
+  background-color: #333;
+}
+.btn-primary {
+  color: #fff;
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+  color: #fff;
+  background-color: #3276b1;
+  border-color: #285e8e;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+  background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.btn-primary .badge {
+  color: #428bca;
+  background-color: #fff;
+}
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+  color: #fff;
+  background-color: #47a447;
+  border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+  background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #fff;
+}
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+  color: #fff;
+  background-color: #39b3d7;
+  border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+  background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #fff;
+}
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+  color: #fff;
+  background-color: #ed9c28;
+  border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+  background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning .badge {
+  color: #f0ad4e;
+  background-color: #fff;
+}
+.btn-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+  color: #fff;
+  background-color: #d2322d;
+  border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+  background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #fff;
+}
+.btn-link {
+  font-weight: normal;
+  color: #428bca;
+  cursor: pointer;
+  border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+  border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #2a6496;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+  color: #999;
+  text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+  padding-right: 0;
+  padding-left: 0;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.fade {
+  opacity: 0;
+  -webkit-transition: opacity .15s linear;
+          transition: opacity .15s linear;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  display: none;
+}
+.collapse.in {
+  display: block;
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition: height .35s ease;
+          transition: height .35s ease;
+}
+@font-face {
+  font-family: 'Glyphicons Halflings';
+
+  src: url('../fonts/glyphicons-halflings-regular.eot');
+  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+  content: "\2a";
+}
+.glyphicon-plus:before {
+  content: "\2b";
+}
+.glyphicon-euro:before {
+  content: "\20ac";
+}
+.glyphicon-minus:before {
+  content: "\2212";
+}
+.glyphicon-cloud:before {
+  content: "\2601";
+}
+.glyphicon-envelope:before {
+  content: "\2709";
+}
+.glyphicon-pencil:before {
+  content: "\270f";
+}
+.glyphicon-glass:before {
+  content: "\e001";
+}
+.glyphicon-music:before {
+  content: "\e002";
+}
+.glyphicon-search:before {
+  content: "\e003";
+}
+.glyphicon-heart:before {
+  content: "\e005";
+}
+.glyphicon-star:before {
+  content: "\e006";
+}
+.glyphicon-star-empty:before {
+  content: "\e007";
+}
+.glyphicon-user:before {
+  content: "\e008";
+}
+.glyphicon-film:before {
+  content: "\e009";
+}
+.glyphicon-th-large:before {
+  content: "\e010";
+}
+.glyphicon-th:before {
+  content: "\e011";
+}
+.glyphicon-th-list:before {
+  content: "\e012";
+}
+.glyphicon-ok:before {
+  content: "\e013";
+}
+.glyphicon-remove:before {
+  content: "\e014";
+}
+.glyphicon-zoom-in:before {
+  content: "\e015";
+}
+.glyphicon-zoom-out:before {
+  content: "\e016";
+}
+.glyphicon-off:before {
+  content: "\e017";
+}
+.glyphicon-signal:before {
+  content: "\e018";
+}
+.glyphicon-cog:before {
+  content: "\e019";
+}
+.glyphicon-trash:before {
+  content: "\e020";
+}
+.glyphicon-home:before {
+  content: "\e021";
+}
+.glyphicon-file:before {
+  content: "\e022";
+}
+.glyphicon-time:before {
+  content: "\e023";
+}
+.glyphicon-road:before {
+  content: "\e024";
+}
+.glyphicon-download-alt:before {
+  content: "\e025";
+}
+.glyphicon-download:before {
+  content: "\e026";
+}
+.glyphicon-upload:before {
+  content: "\e027";
+}
+.glyphicon-inbox:before {
+  content: "\e028";
+}
+.glyphicon-play-circle:before {
+  content: "\e029";
+}
+.glyphicon-repeat:before {
+  content: "\e030";
+}
+.glyphicon-refresh:before {
+  content: "\e031";
+}
+.glyphicon-list-alt:before {
+  content: "\e032";
+}
+.glyphicon-lock:before {
+  content: "\e033";
+}
+.glyphicon-flag:before {
+  content: "\e034";
+}
+.glyphicon-headphones:before {
+  content: "\e035";
+}
+.glyphicon-volume-off:before {
+  content: "\e036";
+}
+.glyphicon-volume-down:before {
+  content: "\e037";
+}
+.glyphicon-volume-up:before {
+  content: "\e038";
+}
+.glyphicon-qrcode:before {
+  content: "\e039";
+}
+.glyphicon-barcode:before {
+  content: "\e040";
+}
+.glyphicon-tag:before {
+  content: "\e041";
+}
+.glyphicon-tags:before {
+  content: "\e042";
+}
+.glyphicon-book:before {
+  content: "\e043";
+}
+.glyphicon-bookmark:before {
+  content: "\e044";
+}
+.glyphicon-print:before {
+  content: "\e045";
+}
+.glyphicon-camera:before {
+  content: "\e046";
+}
+.glyphicon-font:before {
+  content: "\e047";
+}
+.glyphicon-bold:before {
+  content: "\e048";
+}
+.glyphicon-italic:before {
+  content: "\e049";
+}
+.glyphicon-text-height:before {
+  content: "\e050";
+}
+.glyphicon-text-width:before {
+  content: "\e051";
+}
+.glyphicon-align-left:before {
+  content: "\e052";
+}
+.glyphicon-align-center:before {
+  content: "\e053";
+}
+.glyphicon-align-right:before {
+  content: "\e054";
+}
+.glyphicon-align-justify:before {
+  content: "\e055";
+}
+.glyphicon-list:before {
+  content: "\e056";
+}
+.glyphicon-indent-left:before {
+  content: "\e057";
+}
+.glyphicon-indent-right:before {
+  content: "\e058";
+}
+.glyphicon-facetime-video:before {
+  content: "\e059";
+}
+.glyphicon-picture:before {
+  content: "\e060";
+}
+.glyphicon-map-marker:before {
+  content: "\e062";
+}
+.glyphicon-adjust:before {
+  content: "\e063";
+}
+.glyphicon-tint:before {
+  content: "\e064";
+}
+.glyphicon-edit:before {
+  content: "\e065";
+}
+.glyphicon-share:before {
+  content: "\e066";
+}
+.glyphicon-check:before {
+  content: "\e067";
+}
+.glyphicon-move:before {
+  content: "\e068";
+}
+.glyphicon-step-backward:before {
+  content: "\e069";
+}
+.glyphicon-fast-backward:before {
+  content: "\e070";
+}
+.glyphicon-backward:before {
+  content: "\e071";
+}
+.glyphicon-play:before {
+  content: "\e072";
+}
+.glyphicon-pause:before {
+  content: "\e073";
+}
+.glyphicon-stop:before {
+  content: "\e074";
+}
+.glyphicon-forward:before {
+  content: "\e075";
+}
+.glyphicon-fast-forward:before {
+  content: "\e076";
+}
+.glyphicon-step-forward:before {
+  content: "\e077";
+}
+.glyphicon-eject:before {
+  content: "\e078";
+}
+.glyphicon-chevron-left:before {
+  content: "\e079";
+}
+.glyphicon-chevron-right:before {
+  content: "\e080";
+}
+.glyphicon-plus-sign:before {
+  content: "\e081";
+}
+.glyphicon-minus-sign:before {
+  content: "\e082";
+}
+.glyphicon-remove-sign:before {
+  content: "\e083";
+}
+.glyphicon-ok-sign:before {
+  content: "\e084";
+}
+.glyphicon-question-sign:before {
+  content: "\e085";
+}
+.glyphicon-info-sign:before {
+  content: "\e086";
+}
+.glyphicon-screenshot:before {
+  content: "\e087";
+}
+.glyphicon-remove-circle:before {
+  content: "\e088";
+}
+.glyphicon-ok-circle:before {
+  content: "\e089";
+}
+.glyphicon-ban-circle:before {
+  content: "\e090";
+}
+.glyphicon-arrow-left:before {
+  content: "\e091";
+}
+.glyphicon-arrow-right:before {
+  content: "\e092";
+}
+.glyphicon-arrow-up:before {
+  content: "\e093";
+}
+.glyphicon-arrow-down:before {
+  content: "\e094";
+}
+.glyphicon-share-alt:before {
+  content: "\e095";
+}
+.glyphicon-resize-full:before {
+  content: "\e096";
+}
+.glyphicon-resize-small:before {
+  content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+  content: "\e101";
+}
+.glyphicon-gift:before {
+  content: "\e102";
+}
+.glyphicon-leaf:before {
+  content: "\e103";
+}
+.glyphicon-fire:before {
+  content: "\e104";
+}
+.glyphicon-eye-open:before {
+  content: "\e105";
+}
+.glyphicon-eye-close:before {
+  content: "\e106";
+}
+.glyphicon-warning-sign:before {
+  content: "\e107";
+}
+.glyphicon-plane:before {
+  content: "\e108";
+}
+.glyphicon-calendar:before {
+  content: "\e109";
+}
+.glyphicon-random:before {
+  content: "\e110";
+}
+.glyphicon-comment:before {
+  content: "\e111";
+}
+.glyphicon-magnet:before {
+  content: "\e112";
+}
+.glyphicon-chevron-up:before {
+  content: "\e113";
+}
+.glyphicon-chevron-down:before {
+  content: "\e114";
+}
+.glyphicon-retweet:before {
+  content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+  content: "\e116";
+}
+.glyphicon-folder-close:before {
+  content: "\e117";
+}
+.glyphicon-folder-open:before {
+  content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+  content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+  content: "\e120";
+}
+.glyphicon-hdd:before {
+  content: "\e121";
+}
+.glyphicon-bullhorn:before {
+  content: "\e122";
+}
+.glyphicon-bell:before {
+  content: "\e123";
+}
+.glyphicon-certificate:before {
+  content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+  content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+  content: "\e126";
+}
+.glyphicon-hand-right:before {
+  content: "\e127";
+}
+.glyphicon-hand-left:before {
+  content: "\e128";
+}
+.glyphicon-hand-up:before {
+  content: "\e129";
+}
+.glyphicon-hand-down:before {
+  content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+  content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+  content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+  content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+  content: "\e134";
+}
+.glyphicon-globe:before {
+  content: "\e135";
+}
+.glyphicon-wrench:before {
+  content: "\e136";
+}
+.glyphicon-tasks:before {
+  content: "\e137";
+}
+.glyphicon-filter:before {
+  content: "\e138";
+}
+.glyphicon-briefcase:before {
+  content: "\e139";
+}
+.glyphicon-fullscreen:before {
+  content: "\e140";
+}
+.glyphicon-dashboard:before {
+  content: "\e141";
+}
+.glyphicon-paperclip:before {
+  content: "\e142";
+}
+.glyphicon-heart-empty:before {
+  content: "\e143";
+}
+.glyphicon-link:before {
+  content: "\e144";
+}
+.glyphicon-phone:before {
+  content: "\e145";
+}
+.glyphicon-pushpin:before {
+  content: "\e146";
+}
+.glyphicon-usd:before {
+  content: "\e148";
+}
+.glyphicon-gbp:before {
+  content: "\e149";
+}
+.glyphicon-sort:before {
+  content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+  content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+  content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+  content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+  content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+  content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+  content: "\e156";
+}
+.glyphicon-unchecked:before {
+  content: "\e157";
+}
+.glyphicon-expand:before {
+  content: "\e158";
+}
+.glyphicon-collapse-down:before {
+  content: "\e159";
+}
+.glyphicon-collapse-up:before {
+  content: "\e160";
+}
+.glyphicon-log-in:before {
+  content: "\e161";
+}
+.glyphicon-flash:before {
+  content: "\e162";
+}
+.glyphicon-log-out:before {
+  content: "\e163";
+}
+.glyphicon-new-window:before {
+  content: "\e164";
+}
+.glyphicon-record:before {
+  content: "\e165";
+}
+.glyphicon-save:before {
+  content: "\e166";
+}
+.glyphicon-open:before {
+  content: "\e167";
+}
+.glyphicon-saved:before {
+  content: "\e168";
+}
+.glyphicon-import:before {
+  content: "\e169";
+}
+.glyphicon-export:before {
+  content: "\e170";
+}
+.glyphicon-send:before {
+  content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+  content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+  content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+  content: "\e174";
+}
+.glyphicon-floppy-save:before {
+  content: "\e175";
+}
+.glyphicon-floppy-open:before {
+  content: "\e176";
+}
+.glyphicon-credit-card:before {
+  content: "\e177";
+}
+.glyphicon-transfer:before {
+  content: "\e178";
+}
+.glyphicon-cutlery:before {
+  content: "\e179";
+}
+.glyphicon-header:before {
+  content: "\e180";
+}
+.glyphicon-compressed:before {
+  content: "\e181";
+}
+.glyphicon-earphone:before {
+  content: "\e182";
+}
+.glyphicon-phone-alt:before {
+  content: "\e183";
+}
+.glyphicon-tower:before {
+  content: "\e184";
+}
+.glyphicon-stats:before {
+  content: "\e185";
+}
+.glyphicon-sd-video:before {
+  content: "\e186";
+}
+.glyphicon-hd-video:before {
+  content: "\e187";
+}
+.glyphicon-subtitles:before {
+  content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+  content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+  content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+  content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+  content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+  content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+  content: "\e194";
+}
+.glyphicon-registration-mark:before {
+  content: "\e195";
+}
+.glyphicon-cloud-download:before {
+  content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+  content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+  content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+  content: "\e200";
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px solid;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle:focus {
+  outline: 0;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  font-size: 14px;
+  list-style: none;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  color: #262626;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #fff;
+  text-decoration: none;
+  background-color: #428bca;
+  outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.open > a {
+  outline: 0;
+}
+.dropdown-menu-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu-left {
+  right: auto;
+  left: 0;
+}
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: 12px;
+  line-height: 1.42857143;
+  color: #999;
+}
+.dropdown-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 990;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  content: "";
+  border-top: 0;
+  border-bottom: 4px solid;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 1px;
+}
+@media (min-width: 768px) {
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;
+  }
+  .navbar-right .dropdown-menu-left {
+    right: auto;
+    left: 0;
+  }
+}
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+  z-index: 2;
+}
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus {
+  outline: none;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+  margin-left: -1px;
+}
+.btn-toolbar {
+  margin-left: -5px;
+}
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+  float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+  margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child > .btn:last-child,
+.btn-group > .btn-group:first-child > .dropdown-toggle {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child > .btn:first-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-right: 12px;
+  padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn .caret {
+  margin-left: 0;
+}
+.btn-lg .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+  border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+  display: block;
+  float: none;
+  width: 100%;
+  max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+  float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+  margin-top: -1px;
+  margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+  border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+  display: table-cell;
+  float: none;
+  width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+  width: 100%;
+}
+[data-toggle="buttons"] > .btn > input[type="radio"],
+[data-toggle="buttons"] > .btn > input[type="checkbox"] {
+  display: none;
+}
+.input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate;
+}
+.input-group[class*="col-"] {
+  float: none;
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-group .form-control {
+  position: relative;
+  z-index: 2;
+  float: left;
+  width: 100%;
+  margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+  display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.input-group-addon {
+  padding: 6px 12px;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1;
+  color: #555;
+  text-align: center;
+  background-color: #eee;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+.input-group-addon.input-sm {
+  padding: 5px 10px;
+  font-size: 12px;
+  border-radius: 3px;
+}
+.input-group-addon.input-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+  margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+  border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+  border-left: 0;
+}
+.input-group-btn {
+  position: relative;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-group-btn > .btn {
+  position: relative;
+}
+.input-group-btn > .btn + .btn {
+  margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+  z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+  margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+  margin-left: -1px;
+}
+.nav {
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.nav > li {
+  position: relative;
+  display: block;
+}
+.nav > li > a {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.nav > li.disabled > a {
+  color: #999;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+  color: #999;
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+  background-color: #eee;
+  border-color: #428bca;
+}
+.nav .nav-divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  float: left;
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  margin-right: 2px;
+  line-height: 1.42857143;
+  border: 1px solid transparent;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+  color: #555;
+  cursor: default;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+  width: 100%;
+  border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+  float: none;
+}
+.nav-tabs.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-tabs.nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs.nav-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs.nav-justified > .active > a,
+  .nav-tabs.nav-justified > .active > a:hover,
+  .nav-tabs.nav-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.nav-pills > li {
+  float: left;
+}
+.nav-pills > li > a {
+  border-radius: 4px;
+}
+.nav-pills > li + li {
+  margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+  color: #fff;
+  background-color: #428bca;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li + li {
+  margin-top: 2px;
+  margin-left: 0;
+}
+.nav-justified {
+  width: 100%;
+}
+.nav-justified > li {
+  float: none;
+}
+.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs-justified {
+  border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs-justified > .active > a,
+  .nav-tabs-justified > .active > a:hover,
+  .nav-tabs-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.tab-content > .tab-pane {
+  display: none;
+}
+.tab-content > .active {
+  display: block;
+}
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar {
+  position: relative;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+  .navbar {
+    border-radius: 4px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left;
+  }
+}
+.navbar-collapse {
+  max-height: 340px;
+  padding-right: 15px;
+  padding-left: 15px;
+  overflow-x: visible;
+  -webkit-overflow-scrolling: touch;
+  border-top: 1px solid transparent;
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+  overflow-y: auto;
+}
+@media (min-width: 768px) {
+  .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    box-shadow: none;
+  }
+  .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important;
+  }
+  .navbar-collapse.in {
+    overflow-y: visible;
+  }
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-static-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .container > .navbar-header,
+  .container-fluid > .navbar-header,
+  .container > .navbar-collapse,
+  .container-fluid > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0;
+  }
+}
+.navbar-static-top {
+  z-index: 1000;
+  border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+  .navbar-static-top {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+@media (min-width: 768px) {
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0;
+  border-width: 1px 0 0;
+}
+.navbar-brand {
+  float: left;
+  height: 50px;
+  padding: 15px 15px;
+  font-size: 18px;
+  line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+  text-decoration: none;
+}
+@media (min-width: 768px) {
+  .navbar > .container .navbar-brand,
+  .navbar > .container-fluid .navbar-brand {
+    margin-left: -15px;
+  }
+}
+.navbar-toggle {
+  position: relative;
+  float: right;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-right: 15px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.navbar-toggle:focus {
+  outline: none;
+}
+.navbar-toggle .icon-bar {
+  display: block;
+  width: 22px;
+  height: 2px;
+  border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+  margin-top: 4px;
+}
+@media (min-width: 768px) {
+  .navbar-toggle {
+    display: none;
+  }
+}
+.navbar-nav {
+  margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+  padding-top: 10px;
+  padding-bottom: 10px;
+  line-height: 20px;
+}
+@media (max-width: 767px) {
+  .navbar-nav .open .dropdown-menu {
+    position: static;
+    float: none;
+    width: auto;
+    margin-top: 0;
+    background-color: transparent;
+    border: 0;
+    box-shadow: none;
+  }
+  .navbar-nav .open .dropdown-menu > li > a,
+  .navbar-nav .open .dropdown-menu .dropdown-header {
+    padding: 5px 15px 5px 25px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a {
+    line-height: 20px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-nav .open .dropdown-menu > li > a:focus {
+    background-image: none;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-nav {
+    float: left;
+    margin: 0;
+  }
+  .navbar-nav > li {
+    float: left;
+  }
+  .navbar-nav > li > a {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+  .navbar-nav.navbar-right:last-child {
+    margin-right: -15px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+  }
+}
+.navbar-form {
+  padding: 10px 15px;
+  margin-top: 8px;
+  margin-right: -15px;
+  margin-bottom: 8px;
+  margin-left: -15px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+  .navbar-form .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .navbar-form .input-group > .form-control {
+    width: 100%;
+  }
+  .navbar-form .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio,
+  .navbar-form .checkbox {
+    display: inline-block;
+    padding-left: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio input[type="radio"],
+  .navbar-form .checkbox input[type="checkbox"] {
+    float: none;
+    margin-left: 0;
+  }
+  .navbar-form .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+@media (max-width: 767px) {
+  .navbar-form .form-group {
+    margin-bottom: 5px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-form {
+    width: auto;
+    padding-top: 0;
+    padding-bottom: 0;
+    margin-right: 0;
+    margin-left: 0;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-form.navbar-right:last-child {
+    margin-right: -15px;
+  }
+}
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.navbar-btn {
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+  margin-top: 14px;
+  margin-bottom: 14px;
+}
+.navbar-text {
+  margin-top: 15px;
+  margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+  .navbar-text {
+    float: left;
+    margin-right: 15px;
+    margin-left: 15px;
+  }
+  .navbar-text.navbar-right:last-child {
+    margin-right: 0;
+  }
+}
+.navbar-default {
+  background-color: #f8f8f8;
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+  color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+  color: #5e5e5e;
+  background-color: transparent;
+}
+.navbar-default .navbar-text {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+  color: #333;
+  background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+  color: #ccc;
+  background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+  border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+  background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+  background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+@media (max-width: 767px) {
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+    color: #777;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #333;
+    background-color: transparent;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #555;
+    background-color: #e7e7e7;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #ccc;
+    background-color: transparent;
+  }
+}
+.navbar-default .navbar-link {
+  color: #777;
+}
+.navbar-default .navbar-link:hover {
+  color: #333;
+}
+.navbar-inverse {
+  background-color: #222;
+  border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+  color: #999;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+  color: #999;
+}
+.navbar-inverse .navbar-nav > li > a {
+  color: #999;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+  color: #444;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+  border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+  background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+  background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+  border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+@media (max-width: 767px) {
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+    border-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+    color: #999;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #fff;
+    background-color: transparent;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #fff;
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #444;
+    background-color: transparent;
+  }
+}
+.navbar-inverse .navbar-link {
+  color: #999;
+}
+.navbar-inverse .navbar-link:hover {
+  color: #fff;
+}
+.breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: 20px;
+  list-style: none;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+}
+.breadcrumb > li {
+  display: inline-block;
+}
+.breadcrumb > li + li:before {
+  padding: 0 5px;
+  color: #ccc;
+  content: "/\00a0";
+}
+.breadcrumb > .active {
+  color: #999;
+}
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: 20px 0;
+  border-radius: 4px;
+}
+.pagination > li {
+  display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+  position: relative;
+  float: left;
+  padding: 6px 12px;
+  margin-left: -1px;
+  line-height: 1.42857143;
+  color: #428bca;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+  margin-left: 0;
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+  color: #2a6496;
+  background-color: #eee;
+  border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+  z-index: 2;
+  color: #fff;
+  cursor: default;
+  background-color: #428bca;
+  border-color: #428bca;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+  color: #999;
+  cursor: not-allowed;
+  background-color: #fff;
+  border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+  padding: 10px 16px;
+  font-size: 18px;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+  padding: 5px 10px;
+  font-size: 12px;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.pager {
+  padding-left: 0;
+  margin: 20px 0;
+  text-align: center;
+  list-style: none;
+}
+.pager li {
+  display: inline;
+}
+.pager li > a,
+.pager li > span {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+  float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+  float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+  color: #999;
+  cursor: not-allowed;
+  background-color: #fff;
+}
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+}
+.label[href]:hover,
+.label[href]:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.label:empty {
+  display: none;
+}
+.btn .label {
+  position: relative;
+  top: -1px;
+}
+.label-default {
+  background-color: #999;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+  background-color: #808080;
+}
+.label-primary {
+  background-color: #428bca;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+  background-color: #3071a9;
+}
+.label-success {
+  background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+  background-color: #449d44;
+}
+.label-info {
+  background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+  background-color: #31b0d5;
+}
+.label-warning {
+  background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+  background-color: #ec971f;
+}
+.label-danger {
+  background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+  background-color: #c9302c;
+}
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: 12px;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  background-color: #999;
+  border-radius: 10px;
+}
+.badge:empty {
+  display: none;
+}
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+.btn-xs .badge {
+  top: 0;
+  padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+a.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: #428bca;
+  background-color: #fff;
+}
+.nav-pills > li > a > .badge {
+  margin-left: 3px;
+}
+.jumbotron {
+  padding: 30px;
+  margin-bottom: 30px;
+  color: inherit;
+  background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+  color: inherit;
+}
+.jumbotron p {
+  margin-bottom: 15px;
+  font-size: 21px;
+  font-weight: 200;
+}
+.container .jumbotron {
+  border-radius: 6px;
+}
+.jumbotron .container {
+  max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+  .jumbotron {
+    padding-top: 48px;
+    padding-bottom: 48px;
+  }
+  .container .jumbotron {
+    padding-right: 60px;
+    padding-left: 60px;
+  }
+  .jumbotron h1,
+  .jumbotron .h1 {
+    font-size: 63px;
+  }
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  margin-bottom: 20px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all .2s ease-in-out;
+          transition: all .2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+  margin-right: auto;
+  margin-left: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: #428bca;
+}
+.thumbnail .caption {
+  padding: 9px;
+  color: #333;
+}
+.alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.alert h4 {
+  margin-top: 0;
+  color: inherit;
+}
+.alert .alert-link {
+  font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+  margin-bottom: 0;
+}
+.alert > p + p {
+  margin-top: 5px;
+}
+.alert-dismissable {
+  padding-right: 35px;
+}
+.alert-dismissable .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  color: inherit;
+}
+.alert-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.alert-success hr {
+  border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+  color: #2b542c;
+}
+.alert-info {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.alert-info hr {
+  border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+  color: #245269;
+}
+.alert-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.alert-warning hr {
+  border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+  color: #66512c;
+}
+.alert-danger {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.alert-danger hr {
+  border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+  color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+.progress {
+  height: 20px;
+  margin-bottom: 20px;
+  overflow: hidden;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+.progress-bar {
+  float: left;
+  width: 0;
+  height: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  color: #fff;
+  text-align: center;
+  background-color: #428bca;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+  -webkit-transition: width .6s ease;
+          transition: width .6s ease;
+}
+.progress-striped .progress-bar {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-size: 40px 40px;
+}
+.progress.active .progress-bar {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+          animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+  background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+  background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+  background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+  background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.media,
+.media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+.media,
+.media .media {
+  margin-top: 15px;
+}
+.media:first-child {
+  margin-top: 0;
+}
+.media-object {
+  display: block;
+}
+.media-heading {
+  margin: 0 0 5px;
+}
+.media > .pull-left {
+  margin-right: 10px;
+}
+.media > .pull-right {
+  margin-left: 10px;
+}
+.media-list {
+  padding-left: 0;
+  list-style: none;
+}
+.list-group {
+  padding-left: 0;
+  margin-bottom: 20px;
+}
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  margin-bottom: -1px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.list-group-item:first-child {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+  margin-bottom: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.list-group-item > .badge {
+  float: right;
+}
+.list-group-item > .badge + .badge {
+  margin-right: 5px;
+}
+a.list-group-item {
+  color: #555;
+}
+a.list-group-item .list-group-item-heading {
+  color: #333;
+}
+a.list-group-item:hover,
+a.list-group-item:focus {
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+a.list-group-item.active,
+a.list-group-item.active:hover,
+a.list-group-item.active:focus {
+  z-index: 2;
+  color: #fff;
+  background-color: #428bca;
+  border-color: #428bca;
+}
+a.list-group-item.active .list-group-item-heading,
+a.list-group-item.active:hover .list-group-item-heading,
+a.list-group-item.active:focus .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item.active .list-group-item-text,
+a.list-group-item.active:hover .list-group-item-text,
+a.list-group-item.active:focus .list-group-item-text {
+  color: #e1edf7;
+}
+.list-group-item-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+}
+a.list-group-item-success {
+  color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-success:hover,
+a.list-group-item-success:focus {
+  color: #3c763d;
+  background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus {
+  color: #fff;
+  background-color: #3c763d;
+  border-color: #3c763d;
+}
+.list-group-item-info {
+  color: #31708f;
+  background-color: #d9edf7;
+}
+a.list-group-item-info {
+  color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-info:hover,
+a.list-group-item-info:focus {
+  color: #31708f;
+  background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus {
+  color: #fff;
+  background-color: #31708f;
+  border-color: #31708f;
+}
+.list-group-item-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+}
+a.list-group-item-warning {
+  color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-warning:hover,
+a.list-group-item-warning:focus {
+  color: #8a6d3b;
+  background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus {
+  color: #fff;
+  background-color: #8a6d3b;
+  border-color: #8a6d3b;
+}
+.list-group-item-danger {
+  color: #a94442;
+  background-color: #f2dede;
+}
+a.list-group-item-danger {
+  color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-danger:hover,
+a.list-group-item-danger:focus {
+  color: #a94442;
+  background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus {
+  color: #fff;
+  background-color: #a94442;
+  border-color: #a94442;
+}
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
+.panel {
+  margin-bottom: 20px;
+  background-color: #fff;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+.panel-body {
+  padding: 15px;
+}
+.panel-heading {
+  padding: 10px 15px;
+  border-bottom: 1px solid transparent;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+  color: inherit;
+}
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: 16px;
+  color: inherit;
+}
+.panel-title > a {
+  color: inherit;
+}
+.panel-footer {
+  padding: 10px 15px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .list-group {
+  margin-bottom: 0;
+}
+.panel > .list-group .list-group-item {
+  border-width: 1px 0;
+  border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child {
+  border-top: 0;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child {
+  border-bottom: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table {
+  margin-bottom: 0;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+  border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+  border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+  border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive {
+  border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+  border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+  border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+  border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+  border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+  border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+  border-bottom: 0;
+}
+.panel > .table-responsive {
+  margin-bottom: 0;
+  border: 0;
+}
+.panel-group {
+  margin-bottom: 20px;
+}
+.panel-group .panel {
+  margin-bottom: 0;
+  overflow: hidden;
+  border-radius: 4px;
+}
+.panel-group .panel + .panel {
+  margin-top: 5px;
+}
+.panel-group .panel-heading {
+  border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse .panel-body {
+  border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+  border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+  border-bottom: 1px solid #ddd;
+}
+.panel-default {
+  border-color: #ddd;
+}
+.panel-default > .panel-heading {
+  color: #333;
+  background-color: #f5f5f5;
+  border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #ddd;
+}
+.panel-default > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #ddd;
+}
+.panel-primary {
+  border-color: #428bca;
+}
+.panel-primary > .panel-heading {
+  color: #fff;
+  background-color: #428bca;
+  border-color: #428bca;
+}
+.panel-primary > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #428bca;
+}
+.panel-primary > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #428bca;
+}
+.panel-success {
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #d6e9c6;
+}
+.panel-success > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #d6e9c6;
+}
+.panel-info {
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #bce8f1;
+}
+.panel-info > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #bce8f1;
+}
+.panel-warning {
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #faebcc;
+}
+.panel-warning > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #faebcc;
+}
+.panel-danger {
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #ebccd1;
+}
+.panel-danger > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #ebccd1;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, .15);
+}
+.well-lg {
+  padding: 24px;
+  border-radius: 6px;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: 3px;
+}
+.close {
+  float: right;
+  font-size: 21px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  filter: alpha(opacity=20);
+  opacity: .2;
+}
+.close:hover,
+.close:focus {
+  color: #000;
+  text-decoration: none;
+  cursor: pointer;
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+button.close {
+  -webkit-appearance: none;
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+}
+.modal-open {
+  overflow: hidden;
+}
+.modal {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1050;
+  display: none;
+  overflow: auto;
+  overflow-y: scroll;
+  -webkit-overflow-scrolling: touch;
+  outline: 0;
+}
+.modal.fade .modal-dialog {
+  -webkit-transition: -webkit-transform .3s ease-out;
+     -moz-transition:    -moz-transform .3s ease-out;
+       -o-transition:      -o-transform .3s ease-out;
+          transition:         transform .3s ease-out;
+  -webkit-transform: translate(0, -25%);
+      -ms-transform: translate(0, -25%);
+          transform: translate(0, -25%);
+}
+.modal.in .modal-dialog {
+  -webkit-transform: translate(0, 0);
+      -ms-transform: translate(0, 0);
+          transform: translate(0, 0);
+}
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 10px;
+}
+.modal-content {
+  position: relative;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  outline: none;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000;
+}
+.modal-backdrop.fade {
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.modal-backdrop.in {
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.modal-header {
+  min-height: 16.42857143px;
+  padding: 15px;
+  border-bottom: 1px solid #e5e5e5;
+}
+.modal-header .close {
+  margin-top: -2px;
+}
+.modal-title {
+  margin: 0;
+  line-height: 1.42857143;
+}
+.modal-body {
+  position: relative;
+  padding: 20px;
+}
+.modal-footer {
+  padding: 19px 20px 20px;
+  margin-top: 15px;
+  text-align: right;
+  border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+  margin-bottom: 0;
+  margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .modal-dialog {
+    width: 600px;
+    margin: 30px auto;
+  }
+  .modal-content {
+    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+  }
+  .modal-sm {
+    width: 300px;
+  }
+}
+@media (min-width: 992px) {
+  .modal-lg {
+    width: 900px;
+  }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1030;
+  display: block;
+  font-size: 12px;
+  line-height: 1.4;
+  visibility: visible;
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.tooltip.in {
+  filter: alpha(opacity=90);
+  opacity: .9;
+}
+.tooltip.top {
+  padding: 5px 0;
+  margin-top: -3px;
+}
+.tooltip.right {
+  padding: 0 5px;
+  margin-left: 3px;
+}
+.tooltip.bottom {
+  padding: 5px 0;
+  margin-top: 3px;
+}
+.tooltip.left {
+  padding: 0 5px;
+  margin-left: -3px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #fff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+  right: 5px;
+  bottom: 0;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  right: 5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1010;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  text-align: left;
+  white-space: normal;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+}
+.popover.top {
+  margin-top: -10px;
+}
+.popover.right {
+  margin-left: 10px;
+}
+.popover.bottom {
+  margin-top: 10px;
+}
+.popover.left {
+  margin-left: -10px;
+}
+.popover-title {
+  padding: 8px 14px;
+  margin: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 18px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+.popover-content {
+  padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.popover > .arrow {
+  border-width: 11px;
+}
+.popover > .arrow:after {
+  content: "";
+  border-width: 10px;
+}
+.popover.top > .arrow {
+  bottom: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-color: #999;
+  border-top-color: rgba(0, 0, 0, .25);
+  border-bottom-width: 0;
+}
+.popover.top > .arrow:after {
+  bottom: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-color: #fff;
+  border-bottom-width: 0;
+}
+.popover.right > .arrow {
+  top: 50%;
+  left: -11px;
+  margin-top: -11px;
+  border-right-color: #999;
+  border-right-color: rgba(0, 0, 0, .25);
+  border-left-width: 0;
+}
+.popover.right > .arrow:after {
+  bottom: -10px;
+  left: 1px;
+  content: " ";
+  border-right-color: #fff;
+  border-left-width: 0;
+}
+.popover.bottom > .arrow {
+  top: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-width: 0;
+  border-bottom-color: #999;
+  border-bottom-color: rgba(0, 0, 0, .25);
+}
+.popover.bottom > .arrow:after {
+  top: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-width: 0;
+  border-bottom-color: #fff;
+}
+.popover.left > .arrow {
+  top: 50%;
+  right: -11px;
+  margin-top: -11px;
+  border-right-width: 0;
+  border-left-color: #999;
+  border-left-color: rgba(0, 0, 0, .25);
+}
+.popover.left > .arrow:after {
+  right: 1px;
+  bottom: -10px;
+  content: " ";
+  border-right-width: 0;
+  border-left-color: #fff;
+}
+.carousel {
+  position: relative;
+}
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.carousel-inner > .item {
+  position: relative;
+  display: none;
+  -webkit-transition: .6s ease-in-out left;
+          transition: .6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  line-height: 1;
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  display: block;
+}
+.carousel-inner > .active {
+  left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel-inner > .next {
+  left: 100%;
+}
+.carousel-inner > .prev {
+  left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+  left: 0;
+}
+.carousel-inner > .active.left {
+  left: -100%;
+}
+.carousel-inner > .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 15%;
+  font-size: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.carousel-control.left {
+  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control.right {
+  right: 0;
+  left: auto;
+  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control:hover,
+.carousel-control:focus {
+  color: #fff;
+  text-decoration: none;
+  filter: alpha(opacity=90);
+  outline: none;
+  opacity: .9;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+  position: absolute;
+  top: 50%;
+  z-index: 5;
+  display: inline-block;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+  left: 50%;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+  right: 50%;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+  width: 20px;
+  height: 20px;
+  margin-top: -10px;
+  margin-left: -10px;
+  font-family: serif;
+}
+.carousel-control .icon-prev:before {
+  content: '\2039';
+}
+.carousel-control .icon-next:before {
+  content: '\203a';
+}
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  padding-left: 0;
+  margin-left: -30%;
+  text-align: center;
+  list-style: none;
+}
+.carousel-indicators li {
+  display: inline-block;
+  width: 10px;
+  height: 10px;
+  margin: 1px;
+  text-indent: -999px;
+  cursor: pointer;
+  background-color: #000 \9;
+  background-color: rgba(0, 0, 0, 0);
+  border: 1px solid #fff;
+  border-radius: 10px;
+}
+.carousel-indicators .active {
+  width: 12px;
+  height: 12px;
+  margin: 0;
+  background-color: #fff;
+}
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 20px;
+  left: 15%;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+.carousel-caption .btn {
+  text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -15px;
+    margin-left: -15px;
+    font-size: 30px;
+  }
+  .carousel-caption {
+    right: 20%;
+    left: 20%;
+    padding-bottom: 30px;
+  }
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}
+.clearfix:before,
+.clearfix:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: " ";
+}
+.clearfix:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-footer:after {
+  clear: both;
+}
+.center-block {
+  display: block;
+  margin-right: auto;
+  margin-left: auto;
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.hidden {
+  display: none !important;
+  visibility: hidden !important;
+}
+.affix {
+  position: fixed;
+}
+@-ms-viewport {
+  width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important;
+  }
+  table.visible-xs {
+    display: table;
+  }
+  tr.visible-xs {
+    display: table-row !important;
+  }
+  th.visible-xs,
+  td.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important;
+  }
+  table.visible-sm {
+    display: table;
+  }
+  tr.visible-sm {
+    display: table-row !important;
+  }
+  th.visible-sm,
+  td.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important;
+  }
+  table.visible-md {
+    display: table;
+  }
+  tr.visible-md {
+    display: table-row !important;
+  }
+  th.visible-md,
+  td.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg {
+    display: block !important;
+  }
+  table.visible-lg {
+    display: table;
+  }
+  tr.visible-lg {
+    display: table-row !important;
+  }
+  th.visible-lg,
+  td.visible-lg {
+    display: table-cell !important;
+  }
+}
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important;
+  }
+}
+.visible-print {
+  display: none !important;
+}
+@media print {
+  .visible-print {
+    display: block !important;
+  }
+  table.visible-print {
+    display: table;
+  }
+  tr.visible-print {
+    display: table-row !important;
+  }
+  th.visible-print,
+  td.visible-print {
+    display: table-cell !important;
+  }
+}
+@media print {
+  .hidden-print {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap.css.map */
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.css.map b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.css.map
new file mode 100644
index 0000000..6bc5a2d
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/normalize.less","less/print.less","less/scaffolding.less","less/mixins.less","less/variables.less","less/thumbnails.less","less/carousel.less","less/type.less","less/code.less","less/grid.less","less/tables.less","less/forms.less","less/buttons.less","less/button-groups.less","less/component-animations.less","less/glyphicons.less","less/dropdowns.less","less/input-groups.less","less/navs.less","less/navbar.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/pager.less","less/labels.less","less/badges.less","less/jumbotron.less","less/alerts.less","less/progress-bars.less","less/media.less","less/list-group.less","less/panels.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/popovers.less","less/responsive-utilities.less"],"names":[],"mappings":"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","sourcesContent":["/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n//    user zoom.\n//\n\nhtml {\n  font-family: sans-serif; // 1\n  -ms-text-size-adjust: 100%; // 2\n  -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n  margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined in IE 8/9.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; // 1\n  vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9.\n// Hide the `template` element in IE, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n  background: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n  outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9, Safari 5, and Chrome.\n//\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n//\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n//\n// Address styling not present in Safari 5 and Chrome.\n//\n\ndfn {\n  font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari 5, and Chrome.\n//\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n  font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9.\n//\n\nimg {\n  border: 0;\n}\n\n//\n// Correct overflow displayed oddly in IE 9.\n//\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari 5.\n//\n\nfigure {\n  margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n  overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n//    Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; // 1\n  font: inherit; // 2\n  margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10.\n//\n\nbutton {\n  overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8+, and Opera\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n//    and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n//    `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n  cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n  line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; // 1\n  padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n//    (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; // 1\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box; // 2\n  box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n  border: 0; // 1\n  padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9.\n//\n\ntextarea {\n  overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n  font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}","//\n// Basic print styles\n// --------------------------------------------------\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css\n\n@media print {\n\n  * {\n    text-shadow: none !important;\n    color: #000 !important; // Black prints faster: h5bp.com/s\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n\n  // Don't show links for images, or javascript/internal links\n  a[href^=\"javascript:\"]:after,\n  a[href^=\"#\"]:after {\n    content: \"\";\n  }\n\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n\n  thead {\n    display: table-header-group; // h5bp.com/t\n  }\n\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n\n  img {\n    max-width: 100% !important;\n  }\n\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n\n  // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n  // Once fixed, we can just straight up remove this.\n  select {\n    background: #fff !important;\n  }\n\n  // Bootstrap components\n  .navbar {\n    display: none;\n  }\n  .table {\n    td,\n    th {\n      background-color: #fff !important;\n    }\n  }\n  .btn,\n  .dropup > .btn {\n    > .caret {\n      border-top-color: #000 !important;\n    }\n  }\n  .label {\n    border: 1px solid #000;\n  }\n\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table-bordered {\n    th,\n    td {\n      border: 1px solid #ddd !important;\n    }\n  }\n\n}\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n  .box-sizing(border-box);\n}\n*:before,\n*:after {\n  .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n  font-size: 62.5%;\n  -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n  font-family: @font-family-base;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @text-color;\n  background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n\n// Links\n\na {\n  color: @link-color;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: underline;\n  }\n\n  &:focus {\n    .tab-focus();\n  }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n  margin: 0;\n}\n\n\n// Images\n\nimg {\n  vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n  .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n  border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n  padding: @thumbnail-padding;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  // Keep them at most 100% wide\n  .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n  border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n  margin-top:    @line-height-computed;\n  margin-bottom: @line-height-computed;\n  border: 0;\n  border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0,0,0,0);\n  border: 0;\n}\n","//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n//    contenteditable attribute is included anywhere else in the document.\n//    Otherwise it causes space to appear at the top and bottom of elements\n//    that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n//    `:before` to contain the top-margins of child elements.\n.clearfix() {\n  &:before,\n  &:after {\n    content: \" \"; // 1\n    display: table; // 2\n  }\n  &:after {\n    clear: both;\n  }\n}\n\n// WebKit-style focus\n.tab-focus() {\n  // Default\n  outline: thin dotted;\n  // WebKit\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n  width: @width;\n  height: @height;\n}\n.square(@size) {\n  .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n  &::-moz-placeholder           { color: @color;   // Firefox\n                                  opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n  &:-ms-input-placeholder       { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n  font: ~\"0/0\" a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n  .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n  border-top-right-radius: @radius;\n   border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n  border-bottom-right-radius: @radius;\n     border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n  border-bottom-right-radius: @radius;\n   border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n  border-bottom-left-radius: @radius;\n     border-top-left-radius: @radius;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n//   supported browsers that have box shadow capabilities now support the\n//   standard `box-shadow` property.\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n  -webkit-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-property) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n          transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n  -webkit-transform: scale(@ratio, @ratio-y);\n      -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n          transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n          transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n  -webkit-transform: skew(@x, @y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n          transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-timing-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @select; // IE10+\n          user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n  resize: @direction; // Options: horizontal, vertical, both\n  overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n  opacity: @opacity;\n  // IE8 filter\n  @opacity-ie: (@opacity * 100);\n  filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n    background-image:  linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and (   min--moz-device-pixel-ratio: 2),\n  only screen and (     -o-min-device-pixel-ratio: 2/1),\n  only screen and (        min-device-pixel-ratio: 2),\n  only screen and (                min-resolution: 192dpi),\n  only screen and (                min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n  height: 1px;\n  margin: ((@line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n  border-color: @border;\n\n  & > .panel-heading {\n    color: @heading-text-color;\n    background-color: @heading-bg-color;\n    border-color: @heading-border;\n\n    + .panel-collapse .panel-body {\n      border-top-color: @border;\n    }\n  }\n  & > .panel-footer {\n    + .panel-collapse .panel-body {\n      border-bottom-color: @border;\n    }\n  }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n  background-color: @background;\n  border-color: @border;\n  color: @text-color;\n\n  hr {\n    border-top-color: darken(@border, 5%);\n  }\n  .alert-link {\n    color: darken(@text-color, 10%);\n  }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      background-color: @background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.@{state}:hover,\n    > th.@{state}:hover,\n    &.@{state}:hover > td,\n    &.@{state}:hover > th {\n      background-color: darken(@background, 5%);\n    }\n  }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n  .list-group-item-@{state} {\n    color: @color;\n    background-color: @background;\n\n    a& {\n      color: @color;\n\n      .list-group-item-heading { color: inherit; }\n\n      &:hover,\n      &:focus {\n        color: @color;\n        background-color: darken(@background, 5%);\n      }\n      &.active,\n      &.active:hover,\n      &.active:focus {\n        color: #fff;\n        background-color: @color;\n        border-color: @color;\n      }\n    }\n  }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:hover,\n  &:focus,\n  &:active,\n  &.active,\n  .open .dropdown-toggle& {\n    color: @color;\n    background-color: darken(@background, 8%);\n        border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active,\n  .open .dropdown-toggle& {\n    background-image: none;\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      background-color: @background;\n          border-color: @border;\n    }\n  }\n\n  .badge {\n    color: @background;\n    background-color: @color;\n  }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: @padding-vertical @padding-horizontal;\n      font-size: @font-size;\n    }\n    &:first-child {\n      > a,\n      > span {\n        .border-left-radius(@border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius);\n      }\n    }\n  }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n  background-color: @color;\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken(@color, 10%);\n    }\n  }\n}\n\n// Contextual backgrounds\n// -------------------------\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover {\n    background-color: darken(@color, 10%);\n  }\n}\n\n// Typography\n// -------------------------\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover {\n    color: darken(@color, 10%);\n  }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n  margin-top: ((@navbar-height - @element-height) / 2);\n  margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n  background-color: @color;\n  .progress-striped & {\n    #gradient > .striped();\n  }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n  display: block !important;\n  table&  { display: table; }\n  tr&     { display: table-row !important; }\n  th&,\n  td&     { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n  display: none !important;\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left:  (@grid-gutter-width / 2);\n  padding-right: (@grid-gutter-width / 2);\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-left:  (@gutter / -2);\n  margin-right: (@gutter / -2);\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  @media (min-width: @screen-xs-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-xs-column-push(@columns) {\n  @media (min-width: @screen-xs-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-xs-column-pull(@columns) {\n  @media (min-width: @screen-xs-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) when (@index = 1) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-left:  (@grid-gutter-width / 2);\n      padding-right: (@grid-gutter-width / 2);\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) when (@index = 1) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n  // Color the label and help text\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline  {\n    color: @text-color;\n  }\n  // Set the border and box shadow on specific inputs to match\n  .form-control {\n    border-color: @border-color;\n    .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n    &:focus {\n      border-color: darken(@border-color, 10%);\n      @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n      .box-shadow(@shadow);\n    }\n  }\n  // Set validation states also for addons\n  .input-group-addon {\n    color: @text-color;\n    border-color: @border-color;\n    background-color: @background-color;\n  }\n  // Optional feedback icon\n  .form-control-feedback {\n    color: @text-color;\n  }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n  @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n  &:focus {\n    border-color: @color;\n    outline: 0;\n    .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n  }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n  height: @input-height;\n  padding: @padding-vertical @padding-horizontal;\n  font-size: @font-size;\n  line-height: @line-height;\n  border-radius: @border-radius;\n\n  select& {\n    height: @input-height;\n    line-height: @input-height;\n  }\n\n  textarea&,\n  select[multiple]& {\n    height: auto;\n  }\n}\n","//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-darker:            lighten(#000, 13.5%); // #222\n@gray-dark:              lighten(#000, 20%);   // #333\n@gray:                   lighten(#000, 33.5%); // #555\n@gray-light:             lighten(#000, 60%);   // #999\n@gray-lighter:           lighten(#000, 93.5%); // #eee\n\n@brand-primary:         #428bca;\n@brand-success:         #5cb85c;\n@brand-info:            #5bc0de;\n@brand-warning:         #f0ad4e;\n@brand-danger:          #d9534f;\n\n\n//== Scaffolding\n//\n// ## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n@body-bg:               #fff;\n//** Global text color on `<body>`.\n@text-color:            @gray-dark;\n\n//** Global textual link color.\n@link-color:            @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color:      darken(@link-color, 15%);\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif:  \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif:       Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n@font-family-monospace:   Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base:        @font-family-sans-serif;\n\n@font-size-base:          14px;\n@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5:            @font-size-base;\n@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base:        1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n@headings-font-family:    inherit;\n@headings-font-weight:    500;\n@headings-line-height:    1.1;\n@headings-color:          inherit;\n\n\n//-- Iconography\n//\n//## Specify custom locations of the include Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n@icon-font-path:          \"../fonts/\";\n@icon-font-name:          \"glyphicons-halflings-regular\";\n@icon-font-svg-id:        \"glyphicons_halflingsregular\";\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical:     6px;\n@padding-base-horizontal:   12px;\n\n@padding-large-vertical:    10px;\n@padding-large-horizontal:  16px;\n\n@padding-small-vertical:    5px;\n@padding-small-horizontal:  10px;\n\n@padding-xs-vertical:       1px;\n@padding-xs-horizontal:     5px;\n\n@line-height-large:         1.33;\n@line-height-small:         1.5;\n\n@border-radius-base:        4px;\n@border-radius-large:       6px;\n@border-radius-small:       3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color:    #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg:       @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base:          4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large:         5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n@table-cell-padding:            8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding:  5px;\n\n//** Default background color used for all tables.\n@table-bg:                      transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent:               #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover:                #f5f5f5;\n@table-bg-active:               @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color:            #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n@btn-font-weight:                normal;\n\n@btn-default-color:              #333;\n@btn-default-bg:                 #fff;\n@btn-default-border:             #ccc;\n\n@btn-primary-color:              #fff;\n@btn-primary-bg:                 @brand-primary;\n@btn-primary-border:             darken(@btn-primary-bg, 5%);\n\n@btn-success-color:              #fff;\n@btn-success-bg:                 @brand-success;\n@btn-success-border:             darken(@btn-success-bg, 5%);\n\n@btn-info-color:                 #fff;\n@btn-info-bg:                    @brand-info;\n@btn-info-border:                darken(@btn-info-bg, 5%);\n\n@btn-warning-color:              #fff;\n@btn-warning-bg:                 @brand-warning;\n@btn-warning-border:             darken(@btn-warning-bg, 5%);\n\n@btn-danger-color:               #fff;\n@btn-danger-bg:                  @brand-danger;\n@btn-danger-border:              darken(@btn-danger-bg, 5%);\n\n@btn-link-disabled-color:        @gray-light;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n@input-bg:                       #fff;\n//** `<input disabled>` background color\n@input-bg-disabled:              @gray-lighter;\n\n//** Text color for `<input>`s\n@input-color:                    @gray;\n//** `<input>` border color\n@input-border:                   #ccc;\n//** `<input>` border radius\n@input-border-radius:            @border-radius-base;\n//** Border color for inputs on focus\n@input-border-focus:             #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder:        @gray-light;\n\n//** Default `.form-control` height\n@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n@legend-color:                   @gray-dark;\n@legend-border-color:            #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg:           @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg:                    #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border:                rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border:       #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg:            #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color:            @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color:      darken(@gray-dark, 5%);\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg:         #f5f5f5;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color:     @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg:        @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color:   @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color:          @gray-light;\n\n// Note: Deprecated @dropdown-caret-color as of v3.1.0\n@dropdown-caret-color:           #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar:            1000;\n@zindex-dropdown:          1000;\n@zindex-popover:           1010;\n@zindex-tooltip:           1030;\n@zindex-navbar-fixed:      1030;\n@zindex-modal-background:  1040;\n@zindex-modal:             1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1\n@screen-xs:                  480px;\n@screen-xs-min:              @screen-xs;\n@screen-phone:               @screen-xs-min;\n\n// Small screen / tablet\n// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1\n@screen-sm:                  768px;\n@screen-sm-min:              @screen-sm;\n@screen-tablet:              @screen-sm-min;\n\n// Medium screen / desktop\n// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1\n@screen-md:                  992px;\n@screen-md-min:              @screen-md;\n@screen-desktop:             @screen-md-min;\n\n// Large screen / wide desktop\n// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1\n@screen-lg:                  1200px;\n@screen-lg-min:              @screen-lg;\n@screen-lg-desktop:          @screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n@screen-xs-max:              (@screen-sm-min - 1);\n@screen-sm-max:              (@screen-md-min - 1);\n@screen-md-max:              (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns:              12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width:         30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint:     @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet:             ((720px + @grid-gutter-width));\n//** For `@screen-sm-min` and up.\n@container-sm:                 @container-tablet;\n\n// Medium screen / desktop\n@container-desktop:            ((940px + @grid-gutter-width));\n//** For `@screen-md-min` and up.\n@container-md:                 @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop:      ((1140px + @grid-gutter-width));\n//** For `@screen-lg-min` and up.\n@container-lg:                 @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height:                    50px;\n@navbar-margin-bottom:             @line-height-computed;\n@navbar-border-radius:             @border-radius-base;\n@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));\n@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height:       340px;\n\n@navbar-default-color:             #777;\n@navbar-default-bg:                #f8f8f8;\n@navbar-default-border:            darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color:                #777;\n@navbar-default-link-hover-color:          #333;\n@navbar-default-link-hover-bg:             transparent;\n@navbar-default-link-active-color:         #555;\n@navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color:       #ccc;\n@navbar-default-link-disabled-bg:          transparent;\n\n// Navbar brand label\n@navbar-default-brand-color:               @navbar-default-link-color;\n@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);\n@navbar-default-brand-hover-bg:            transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg:           #ddd;\n@navbar-default-toggle-icon-bar-bg:        #888;\n@navbar-default-toggle-border-color:       #ddd;\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color:                      @gray-light;\n@navbar-inverse-bg:                         #222;\n@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color:                 @gray-light;\n@navbar-inverse-link-hover-color:           #fff;\n@navbar-inverse-link-hover-bg:              transparent;\n@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color:        #444;\n@navbar-inverse-link-disabled-bg:           transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color:                @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color:          #fff;\n@navbar-inverse-brand-hover-bg:             transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg:            #333;\n@navbar-inverse-toggle-icon-bar-bg:         #fff;\n@navbar-inverse-toggle-border-color:        #333;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding:                          10px 15px;\n@nav-link-hover-bg:                         @gray-lighter;\n\n@nav-disabled-link-color:                   @gray-light;\n@nav-disabled-link-hover-color:             @gray-light;\n\n@nav-open-link-hover-color:                 #fff;\n\n//== Tabs\n@nav-tabs-border-color:                     #ddd;\n\n@nav-tabs-link-hover-border-color:          @gray-lighter;\n\n@nav-tabs-active-link-hover-bg:             @body-bg;\n@nav-tabs-active-link-hover-color:          @gray;\n@nav-tabs-active-link-hover-border-color:   #ddd;\n\n@nav-tabs-justified-link-border-color:            #ddd;\n@nav-tabs-justified-active-link-border-color:     @body-bg;\n\n//== Pills\n@nav-pills-border-radius:                   @border-radius-base;\n@nav-pills-active-link-hover-bg:            @component-active-bg;\n@nav-pills-active-link-hover-color:         @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color:                     @link-color;\n@pagination-bg:                        #fff;\n@pagination-border:                    #ddd;\n\n@pagination-hover-color:               @link-hover-color;\n@pagination-hover-bg:                  @gray-lighter;\n@pagination-hover-border:              #ddd;\n\n@pagination-active-color:              #fff;\n@pagination-active-bg:                 @brand-primary;\n@pagination-active-border:             @brand-primary;\n\n@pagination-disabled-color:            @gray-light;\n@pagination-disabled-bg:               #fff;\n@pagination-disabled-border:           #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg:                             @pagination-bg;\n@pager-border:                         @pagination-border;\n@pager-border-radius:                  15px;\n\n@pager-hover-bg:                       @pagination-hover-bg;\n\n@pager-active-bg:                      @pagination-active-bg;\n@pager-active-color:                   @pagination-active-color;\n\n@pager-disabled-color:                 @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding:              30px;\n@jumbotron-color:                inherit;\n@jumbotron-bg:                   @gray-lighter;\n@jumbotron-heading-color:        inherit;\n@jumbotron-font-size:            ceil((@font-size-base * 1.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text:             #3c763d;\n@state-success-bg:               #dff0d8;\n@state-success-border:           darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text:                #31708f;\n@state-info-bg:                  #d9edf7;\n@state-info-border:              darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text:             #8a6d3b;\n@state-warning-bg:               #fcf8e3;\n@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text:              #a94442;\n@state-danger-bg:                #f2dede;\n@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width:           200px;\n//** Tooltip text color\n@tooltip-color:               #fff;\n//** Tooltip background color\n@tooltip-bg:                  #000;\n@tooltip-opacity:             .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width:         5px;\n//** Tooltip arrow color\n@tooltip-arrow-color:         @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg:                          #fff;\n//** Popover maximum width\n@popover-max-width:                   276px;\n//** Popover border color\n@popover-border-color:                rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color:       #ccc;\n\n//** Popover title background color\n@popover-title-bg:                    darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width:                 10px;\n//** Popover arrow color\n@popover-arrow-color:                 #fff;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width:           (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg:            @gray-light;\n//** Primary label background color\n@label-primary-bg:            @brand-primary;\n//** Success label background color\n@label-success-bg:            @brand-success;\n//** Info label background color\n@label-info-bg:               @brand-info;\n//** Warning label background color\n@label-warning-bg:            @brand-warning;\n//** Danger label background color\n@label-danger-bg:             @brand-danger;\n\n//** Default label text color\n@label-color:                 #fff;\n//** Default text color of a linked label\n@label-link-hover-color:      #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding:         20px;\n\n//** Padding applied to the modal title\n@modal-title-padding:         15px;\n//** Modal title line-height\n@modal-title-line-height:     @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg:                             #fff;\n//** Modal content border color\n@modal-content-border-color:                   rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color:          #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg:           #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity:      .5;\n//** Modal header border color\n@modal-header-border-color:   #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color:   @modal-header-border-color;\n\n@modal-lg:                    900px;\n@modal-md:                    600px;\n@modal-sm:                    300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding:               15px;\n@alert-border-radius:         @border-radius-base;\n@alert-link-font-weight:      bold;\n\n@alert-success-bg:            @state-success-bg;\n@alert-success-text:          @state-success-text;\n@alert-success-border:        @state-success-border;\n\n@alert-info-bg:               @state-info-bg;\n@alert-info-text:             @state-info-text;\n@alert-info-border:           @state-info-border;\n\n@alert-warning-bg:            @state-warning-bg;\n@alert-warning-text:          @state-warning-text;\n@alert-warning-border:        @state-warning-border;\n\n@alert-danger-bg:             @state-danger-bg;\n@alert-danger-text:           @state-danger-text;\n@alert-danger-border:         @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg:                 #f5f5f5;\n//** Progress bar text color\n@progress-bar-color:          #fff;\n\n//** Default progress bar color\n@progress-bar-bg:             @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg:     @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg:     @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg:      @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg:        @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg:                 #fff;\n//** `.list-group-item` border color\n@list-group-border:             #ddd;\n//** List group border radius\n@list-group-border-radius:      @border-radius-base;\n\n//** Background color of single list elements on hover\n@list-group-hover-bg:           #f5f5f5;\n//** Text color of active list elements\n@list-group-active-color:       @component-active-color;\n//** Background color of active list elements\n@list-group-active-bg:          @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border:      @list-group-active-bg;\n@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);\n\n@list-group-link-color:         #555;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg:                    #fff;\n@panel-body-padding:          15px;\n@panel-border-radius:         @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border:          #ddd;\n@panel-footer-bg:             #f5f5f5;\n\n@panel-default-text:          @gray-dark;\n@panel-default-border:        #ddd;\n@panel-default-heading-bg:    #f5f5f5;\n\n@panel-primary-text:          #fff;\n@panel-primary-border:        @brand-primary;\n@panel-primary-heading-bg:    @brand-primary;\n\n@panel-success-text:          @state-success-text;\n@panel-success-border:        @state-success-border;\n@panel-success-heading-bg:    @state-success-bg;\n\n@panel-info-text:             @state-info-text;\n@panel-info-border:           @state-info-border;\n@panel-info-heading-bg:       @state-info-bg;\n\n@panel-warning-text:          @state-warning-text;\n@panel-warning-border:        @state-warning-border;\n@panel-warning-heading-bg:    @state-warning-bg;\n\n@panel-danger-text:           @state-danger-text;\n@panel-danger-border:         @state-danger-border;\n@panel-danger-heading-bg:     @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding:           4px;\n//** Thumbnail background color\n@thumbnail-bg:                @body-bg;\n//** Thumbnail border color\n@thumbnail-border:            #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius:     @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color:     @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding:   9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg:                     #f5f5f5;\n@well-border:                 darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color:                 #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color:      #fff;\n@badge-bg:                    @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color:          @link-color;\n//** Badge background color in active nav link\n@badge-active-bg:             #fff;\n\n@badge-font-weight:           bold;\n@badge-line-height:           1;\n@badge-border-radius:         10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical:   8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg:                 #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color:              #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color:       @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator:          \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color:                      #fff;\n@carousel-control-width:                      15%;\n@carousel-control-opacity:                    .5;\n@carousel-control-font-size:                  20px;\n\n@carousel-indicator-active-bg:                #fff;\n@carousel-indicator-border-color:             #fff;\n\n@carousel-caption-color:                      #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight:           bold;\n@close-color:                 #000;\n@close-text-shadow:           0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color:                  #c7254e;\n@code-bg:                     #f9f2f4;\n\n@kbd-color:                   #fff;\n@kbd-bg:                      #333;\n\n@pre-bg:                      #f5f5f5;\n@pre-color:                   @gray-dark;\n@pre-border-color:            #ccc;\n@pre-scrollable-max-height:   340px;\n\n\n//== Type\n//\n//##\n\n//** Text muted color\n@text-muted:                  @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color:           @gray-light;\n//** Headings small color\n@headings-small-color:        @gray-light;\n//** Blockquote small color\n@blockquote-small-color:      @gray-light;\n//** Blockquote font size\n@blockquote-font-size:        (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color:     @gray-lighter;\n//** Page header border color\n@page-header-border-color:    @gray-lighter;\n\n\n//== Miscellaneous\n//\n//##\n\n//** Horizontal line color.\n@hr-border:                   @gray-lighter;\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    position: relative;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev { display: block; }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: @carousel-control-width;\n  .opacity(@carousel-control-opacity);\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n  }\n  &.right {\n    left: auto;\n    right: 0;\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    outline: none;\n    color: @carousel-control-color;\n    text-decoration: none;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    margin-top: -10px;\n    margin-left: -10px;\n    font-family: serif;\n  }\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n    cursor: pointer;\n\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0,0,0,0); // IE9\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: 30px;\n      height: 30px;\n      margin-top: -15px;\n      margin-left: -15px;\n      font-size: 30px;\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 200;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: 14px base font * 85% = about 12px\nsmall,\n.small  { font-size: 85%; }\n\n// Undo browser default styling\ncite    { font-style: normal; }\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// --------------------------------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n@media (min-width: @grid-float-breakpoint) {\n  .dl-horizontal {\n    dt {\n      float: left;\n      width: (@component-offset-horizontal - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @component-offset-horizontal;\n      &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n    }\n  }\n}\n\n// MISC\n// ----\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Quotes\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  white-space: nowrap;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  max-width: 100%;\n  background-color: @table-bg;\n}\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-child(odd) {\n    > td,\n    > th {\n      background-color: @table-bg-accent;\n    }\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    > td,\n    > th {\n      background-color: @table-bg-hover;\n    }\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n@media (max-width: @screen-xs-max) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: (@line-height-computed * 0.75);\n    overflow-y: hidden;\n    overflow-x: scroll;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n    -webkit-overflow-scrolling: touch;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: -webkit-min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; /* IE8-9 */\n  line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius;\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n\n\n// Special styles for iOS date input\n//\n// In Mobile Safari, date inputs require a pixel line-height that matches the\n// given height of the input.\n\ninput[type=\"date\"] {\n  line-height: @input-height-base;\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  display: block;\n  min-height: @line-height-computed; // clear the floating input if there is no label text\n  margin-top: 10px;\n  margin-bottom: 10px;\n  padding-left: 20px;\n  label {\n    display: inline;\n    font-weight: normal;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"],\n.radio,\n.radio-inline,\n.checkbox,\n.checkbox-inline {\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm {\n  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n.input-lg {\n  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: (@input-height-base * 1.25);\n  }\n\n  // Feedback icon (requires .glyphicon classes)\n  .form-control-feedback {\n    position: absolute;\n    top: (@line-height-computed + 5); // Height of the `label` and its margin\n    right: 0;\n    display: block;\n    width: @input-height-base;\n    height: @input-height-base;\n    line-height: @input-height-base;\n    text-align: center;\n  }\n}\n\n// Feedback states\n.has-success {\n  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  margin-bottom: 0; // Remove default margin from `p`\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n  // Kick in the inline\n  @media (min-width: @screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match (which also avoids\n    // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      padding-left: 0;\n      vertical-align: middle;\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      float: none;\n      margin-left: 0;\n    }\n\n    // Validation states\n    //\n    // Reposition the icon because it's now within a grid column and columns have\n    // `position: relative;` on them. Also accounts for the grid gutter padding.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of labels, radios, and checkboxes\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: (@line-height-computed + (@padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    .make-row();\n  }\n\n  .form-control-static {\n    padding-top: (@padding-base-vertical + 1);\n  }\n\n  // Only right align form labels here when the columns stop stacking\n  @media (min-width: @screen-sm-min) {\n    .control-label {\n      text-align: right;\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    top: 0;\n    right: (@grid-gutter-width / 2);\n  }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  vertical-align: middle;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  white-space: nowrap;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n    pointer-events: none; // Future-proof disabling of clicks\n    .opacity(.65);\n    .box-shadow(none);\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: @link-color;\n  font-weight: normal;\n  cursor: pointer;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: underline;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-left: 0;\n  padding-right: 0;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n    &:focus {\n      // Remove focus outline when dropdown JS adds it after closing the menu\n      outline: none;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    border-top-right-radius: @border-radius-base;\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    border-bottom-left-radius: @border-radius-base;\n    .border-top-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n}\n\n\n// Checkbox and radio options\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n  display: none;\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n  &.in {\n    display: block;\n  }\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition(height .35s ease);\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: ~\"url('@{icon-font-path}@{icon-font-name}.eot')\";\n  src: ~\"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg')\";\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\2a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\2b\"; } }\n.glyphicon-euro                   { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   @caret-width-base solid;\n  border-right: @caret-width-base solid transparent;\n  border-left:  @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: @font-size-base;\n  background-color: @dropdown-bg;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @dropdown-link-hover-color;\n    background-color: @dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: @dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n    cursor: not-allowed;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  left: auto; // Reset the default from `.dropdown-menu`\n  right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    border-top: 0;\n    border-bottom: @caret-width-base solid;\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 1px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn { .input-lg(); }\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn { .input-sm(); }\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @border-radius-base;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      margin-left: -1px;\n    }\n  }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  margin-bottom: 0;\n  padding-left: 0; // Override default ul/ol\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        background-color: transparent;\n        cursor: not-allowed;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n        cursor: default;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n     > a {\n      text-align: center;\n      margin-bottom: 5px;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  max-height: @navbar-collapse-max-height;\n  overflow-x: visible;\n  padding-right: @navbar-padding-horizontal;\n  padding-left:  @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left:  -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left:  0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n  height: @navbar-height;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: @navbar-padding-horizontal;\n  padding: 9px 10px;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: none;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top:    10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top:    @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n\n    &.navbar-right:last-child {\n      margin-right: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right { .pull-right(); }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  margin-left: -@navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  padding: 10px @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    .box-shadow(none);\n\n    // Outdent the form if last child to line up with content down the page\n    &.navbar-right:last-child {\n      margin-right: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-left: @navbar-padding-horizontal;\n    margin-right: @navbar-padding-horizontal;\n\n    // Outdent the form if last child to line up with content down the page\n    &.navbar-right:last-child {\n      margin-right: 0;\n    }\n  }\n}\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n  // Dropdown menu items\n  .navbar-nav {\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-default-link-active-bg;\n        color: @navbar-default-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  // Dropdowns\n  .navbar-nav {\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-inverse-link-active-bg;\n        color: @navbar-inverse-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n  visibility: hidden !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: @breadcrumb-color;\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      line-height: @line-height-base;\n      text-decoration: none;\n      color: @pagination-color;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n      margin-left: -1px;\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > li > a,\n  > li > span {\n    &:hover,\n    &:focus {\n      color: @pagination-hover-color;\n      background-color: @pagination-hover-bg;\n      border-color: @pagination-hover-border;\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 2;\n      color: @pagination-active-color;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n      cursor: default;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n      cursor: not-allowed;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  list-style: none;\n  text-align: center;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      background-color: @pager-bg;\n      cursor: not-allowed;\n    }\n  }\n\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  &[href] {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  color: @badge-color;\n  line-height: @badge-line-height;\n  vertical-align: baseline;\n  white-space: nowrap;\n  text-align: center;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n  .btn-xs & {\n    top: 0;\n    padding: 1px 5px;\n  }\n}\n\n// Hover state, but only for links\na.badge {\n  &:hover,\n  &:focus {\n    color: @badge-link-hover-color;\n    text-decoration: none;\n    cursor: pointer;\n  }\n}\n\n// Account for counters in navs\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: @badge-active-color;\n  background-color: @badge-active-bg;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  .container & {\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top:    (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container & {\n      padding-left:  (@jumbotron-padding * 2);\n      padding-right: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: (@font-size-base * 4.5);\n    }\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing @headings-color\n    color: inherit;\n  }\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissable alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable {\n padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  overflow: hidden;\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  background-color: @progress-bg;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n.progress-striped .progress-bar {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n.progress.active .progress-bar {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Media objects\n// Source: http://stubbornella.org/content/?p=497\n// --------------------------------------------------\n\n\n// Common styles\n// -------------------------\n\n// Clear the floats\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n\n// Proper spacing between instances of .media\n.media,\n.media .media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n\n// For images and videos, set to block\n.media-object {\n  display: block;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin: 0 0 5px;\n}\n\n\n// Media image alignment\n// -------------------------\n\n.media {\n  > .pull-left {\n    margin-right: 10px;\n  }\n  > .pull-right {\n    margin-left: 10px;\n  }\n}\n\n\n// Media list variation\n// -------------------------\n\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // No need to set list-style: none; since .list-group-item is block level\n  margin-bottom: 20px;\n  padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  // Place the border on the list items and negative margin up for better styling\n  margin-bottom: -1px;\n  background-color: @list-group-bg;\n  border: 1px solid @list-group-border;\n\n  // Round the first and last items\n  &:first-child {\n    .border-top-radius(@list-group-border-radius);\n  }\n  &:last-child {\n    margin-bottom: 0;\n    .border-bottom-radius(@list-group-border-radius);\n  }\n\n  // Align badges within list items\n  > .badge {\n    float: right;\n  }\n  > .badge + .badge {\n    margin-right: 5px;\n  }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n  color: @list-group-link-color;\n\n  .list-group-item-heading {\n    color: @list-group-link-heading-color;\n  }\n\n  // Hover state\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: @list-group-hover-bg;\n  }\n\n  // Active class on item itself, not parent\n  &.active,\n  &.active:hover,\n  &.active:focus {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: @list-group-active-color;\n    background-color: @list-group-active-bg;\n    border-color: @list-group-active-border;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: @list-group-active-text-color;\n    }\n  }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n  margin-bottom: @line-height-computed;\n  background-color: @panel-bg;\n  border: 1px solid transparent;\n  border-radius: @panel-border-radius;\n  .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n  padding: @panel-body-padding;\n  &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  .border-top-radius((@panel-border-radius - 1));\n\n  > .dropdown .dropdown-toggle {\n    color: inherit;\n  }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: ceil((@font-size-base * 1.125));\n  color: inherit;\n\n  > a {\n    color: inherit;\n  }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n  padding: 10px 15px;\n  background-color: @panel-footer-bg;\n  border-top: 1px solid @panel-inner-border;\n  .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n  > .list-group {\n    margin-bottom: 0;\n\n    .list-group-item {\n      border-width: 1px 0;\n      border-radius: 0;\n    }\n\n    // Add border top radius for first one\n    &:first-child {\n      .list-group-item:first-child {\n        border-top: 0;\n        .border-top-radius((@panel-border-radius - 1));\n      }\n    }\n    // Add border bottom radius for last one\n    &:last-child {\n      .list-group-item:last-child {\n        border-bottom: 0;\n        .border-bottom-radius((@panel-border-radius - 1));\n      }\n    }\n  }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n  .list-group-item:first-child {\n    border-top-width: 0;\n  }\n}\n\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n  > .table,\n  > .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  // Add border top radius for first one\n  > .table:first-child,\n  > .table-responsive:first-child > .table:first-child {\n    .border-top-radius((@panel-border-radius - 1));\n\n    > thead:first-child,\n    > tbody:first-child {\n      > tr:first-child {\n        td:first-child,\n        th:first-child {\n          border-top-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-top-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  // Add border bottom radius for last one\n  > .table:last-child,\n  > .table-responsive:last-child > .table:last-child {\n    .border-bottom-radius((@panel-border-radius - 1));\n\n    > tbody:last-child,\n    > tfoot:last-child {\n      > tr:last-child {\n        td:first-child,\n        th:first-child {\n          border-bottom-left-radius: (@panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-bottom-right-radius: (@panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  > .panel-body + .table,\n  > .panel-body + .table-responsive {\n    border-top: 1px solid @table-border-color;\n  }\n  > .table > tbody:first-child > tr:first-child th,\n  > .table > tbody:first-child > tr:first-child td {\n    border-top: 0;\n  }\n  > .table-bordered,\n  > .table-responsive > .table-bordered {\n    border: 0;\n    > thead,\n    > tbody,\n    > tfoot {\n      > tr {\n        > th:first-child,\n        > td:first-child {\n          border-left: 0;\n        }\n        > th:last-child,\n        > td:last-child {\n          border-right: 0;\n        }\n      }\n    }\n    > thead,\n    > tbody {\n      > tr:first-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n    > tbody,\n    > tfoot {\n      > tr:last-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n  }\n  > .table-responsive {\n    border: 0;\n    margin-bottom: 0;\n  }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n  margin-bottom: @line-height-computed;\n\n  // Tighten up margin so it's only between panels\n  .panel {\n    margin-bottom: 0;\n    border-radius: @panel-border-radius;\n    overflow: hidden; // crop contents when collapsed\n    + .panel {\n      margin-top: 5px;\n    }\n  }\n\n  .panel-heading {\n    border-bottom: 0;\n    + .panel-collapse .panel-body {\n      border-top: 1px solid @panel-inner-border;\n    }\n  }\n  .panel-footer {\n    border-top: 0;\n    + .panel-collapse .panel-body {\n      border-bottom: 1px solid @panel-inner-border;\n    }\n  }\n}\n\n\n// Contextual variations\n.panel-default {\n  .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n  .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n  .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n  .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n  .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n  .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: @well-bg;\n  border: 1px solid @well-border;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n  blockquote {\n    border-color: #ddd;\n    border-color: rgba(0,0,0,.15);\n  }\n}\n\n// Sizes\n.well-lg {\n  padding: 24px;\n  border-radius: @border-radius-large;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: (@font-size-base * 1.5);\n  font-weight: @close-font-weight;\n  line-height: 1;\n  color: @close-color;\n  text-shadow: @close-text-shadow;\n  .opacity(.2);\n\n  &:hover,\n  &:focus {\n    color: @close-color;\n    text-decoration: none;\n    cursor: pointer;\n    .opacity(.5);\n  }\n\n  // Additional properties for button version\n  // iOS requires the button element instead of an anchor tag.\n  // If you want the anchor version, it requires `href=\"#\"`.\n  button& {\n    padding: 0;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    -webkit-appearance: none;\n  }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n  overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n  display: none;\n  overflow: auto;\n  overflow-y: scroll;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal;\n  -webkit-overflow-scrolling: touch;\n\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n\n  // When fading in the modal, animate it to slide down\n  &.fade .modal-dialog {\n    .translate(0, -25%);\n    .transition-transform(~\"0.3s ease-out\");\n  }\n  &.in .modal-dialog { .translate(0, 0)}\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  background-color: @modal-content-bg;\n  border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n  border: 1px solid @modal-content-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 3px 9px rgba(0,0,0,.5));\n  background-clip: padding-box;\n  // Remove focus outline from opened modal\n  outline: none;\n}\n\n// Modal background\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: @zindex-modal-background;\n  background-color: @modal-backdrop-bg;\n  // Fade for backdrop\n  &.fade { .opacity(0); }\n  &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  padding: @modal-title-padding;\n  border-bottom: 1px solid @modal-header-border-color;\n  min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n  margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n  margin: 0;\n  line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  margin-top: 15px;\n  padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;\n  text-align: right; // right align buttons\n  border-top: 1px solid @modal-footer-border-color;\n  &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n  // Properly space out buttons\n  .btn + .btn {\n    margin-left: 5px;\n    margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n  }\n  // but override that for button groups\n  .btn-group .btn + .btn {\n    margin-left: -1px;\n  }\n  // and override it for block buttons as well\n  .btn-block + .btn-block {\n    margin-left: 0;\n  }\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    width: @modal-md;\n    margin: 30px auto;\n  }\n  .modal-content {\n    .box-shadow(0 5px 15px rgba(0,0,0,.5));\n  }\n\n  // Modal sizes\n  .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n  .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n  position: absolute;\n  z-index: @zindex-tooltip;\n  display: block;\n  visibility: visible;\n  font-size: @font-size-small;\n  line-height: 1.4;\n  .opacity(0);\n\n  &.in     { .opacity(@tooltip-opacity); }\n  &.top    { margin-top:  -3px; padding: @tooltip-arrow-width 0; }\n  &.right  { margin-left:  3px; padding: 0 @tooltip-arrow-width; }\n  &.bottom { margin-top:   3px; padding: @tooltip-arrow-width 0; }\n  &.left   { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: @tooltip-max-width;\n  padding: 3px 8px;\n  color: @tooltip-color;\n  text-align: center;\n  text-decoration: none;\n  background-color: @tooltip-bg;\n  border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip {\n  &.top .tooltip-arrow {\n    bottom: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-left .tooltip-arrow {\n    bottom: 0;\n    left: @tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.top-right .tooltip-arrow {\n    bottom: 0;\n    right: @tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-top-color: @tooltip-arrow-color;\n  }\n  &.right .tooltip-arrow {\n    top: 50%;\n    left: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n    border-right-color: @tooltip-arrow-color;\n  }\n  &.left .tooltip-arrow {\n    top: 50%;\n    right: 0;\n    margin-top: -@tooltip-arrow-width;\n    border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-left-color: @tooltip-arrow-color;\n  }\n  &.bottom .tooltip-arrow {\n    top: 0;\n    left: 50%;\n    margin-left: -@tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-left .tooltip-arrow {\n    top: 0;\n    left: @tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n  &.bottom-right .tooltip-arrow {\n    top: 0;\n    right: @tooltip-arrow-width;\n    border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n    border-bottom-color: @tooltip-arrow-color;\n  }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: @zindex-popover;\n  display: none;\n  max-width: @popover-max-width;\n  padding: 1px;\n  text-align: left; // Reset given new insertion method\n  background-color: @popover-bg;\n  background-clip: padding-box;\n  border: 1px solid @popover-fallback-border-color;\n  border: 1px solid @popover-border-color;\n  border-radius: @border-radius-large;\n  .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n  // Overrides for proper insertion\n  white-space: normal;\n\n  // Offset the popover to account for the popover arrow\n  &.top     { margin-top: -@popover-arrow-width; }\n  &.right   { margin-left: @popover-arrow-width; }\n  &.bottom  { margin-top: @popover-arrow-width; }\n  &.left    { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n  margin: 0; // reset heading margin\n  padding: 8px 14px;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 18px;\n  background-color: @popover-title-bg;\n  border-bottom: 1px solid darken(@popover-title-bg, 5%);\n  border-radius: 5px 5px 0 0;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n  &,\n  &:after {\n    position: absolute;\n    display: block;\n    width: 0;\n    height: 0;\n    border-color: transparent;\n    border-style: solid;\n  }\n}\n.popover > .arrow {\n  border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n  border-width: @popover-arrow-width;\n  content: \"\";\n}\n\n.popover {\n  &.top > .arrow {\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-bottom-width: 0;\n    border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-top-color: @popover-arrow-outer-color;\n    bottom: -@popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      bottom: 1px;\n      margin-left: -@popover-arrow-width;\n      border-bottom-width: 0;\n      border-top-color: @popover-arrow-color;\n    }\n  }\n  &.right > .arrow {\n    top: 50%;\n    left: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-left-width: 0;\n    border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-right-color: @popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      left: 1px;\n      bottom: -@popover-arrow-width;\n      border-left-width: 0;\n      border-right-color: @popover-arrow-color;\n    }\n  }\n  &.bottom > .arrow {\n    left: 50%;\n    margin-left: -@popover-arrow-outer-width;\n    border-top-width: 0;\n    border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-bottom-color: @popover-arrow-outer-color;\n    top: -@popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      top: 1px;\n      margin-left: -@popover-arrow-width;\n      border-top-width: 0;\n      border-bottom-color: @popover-arrow-color;\n    }\n  }\n\n  &.left > .arrow {\n    top: 50%;\n    right: -@popover-arrow-outer-width;\n    margin-top: -@popover-arrow-outer-width;\n    border-right-width: 0;\n    border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n    border-left-color: @popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      right: 1px;\n      border-right-width: 0;\n      border-left-color: @popover-arrow-color;\n      bottom: -@popover-arrow-width;\n    }\n  }\n\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#browsers\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n  width: device-width;\n}\n\n\n// Visibility utilities\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  .responsive-invisibility();\n}\n\n.visible-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-visibility();\n  }\n}\n.visible-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-visibility();\n  }\n}\n.visible-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-visibility();\n  }\n}\n.visible-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-visibility();\n  }\n}\n\n.hidden-xs {\n  @media (max-width: @screen-xs-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-sm {\n  @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-md {\n  @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n    .responsive-invisibility();\n  }\n}\n.hidden-lg {\n  @media (min-width: @screen-lg-min) {\n    .responsive-invisibility();\n  }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n.visible-print {\n  .responsive-invisibility();\n\n  @media print {\n    .responsive-visibility();\n  }\n}\n\n.hidden-print {\n  @media print {\n    .responsive-invisibility();\n  }\n}\n"]}
\ No newline at end of file
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.min.css b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.min.css
new file mode 100644
index 0000000..679272d
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.eot b/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000000000000000000000000000000000000..4a4ca865d67e86f961bc6e2ef00bffa4e34bb9ed
GIT binary patch
literal 20335
zcma%iRa9Lu*X_aGIXLtH2X}XOcXxM};>BGK?k>gMi@Uo+afec%&=$Y_zI(@iAMVRd
zMzYtMnVHGh`(bBgBrYld0G2WU0R1n+0{)ZW{#ye8Pyh%N;2)-_`hS4`dHjR_o8s?3
z%Kr!aAA=Sk15gC$0aO9906BmJKn0)-&;Wq`d1e4dfc3v(2XF@106hNnKnJJ;tp3?v
z|4=i4`#;17p#2YV|JP~<aQVjr0oVY{0M>t*4IuDO^FK=e+xx$$?LVd`z~aAr@Bit+
z4B+|46aYB=Q+D{L`5%t;Kdt|aZw_GpXL0?v@B%pgd3^uI=KcSkIq3hHHvk~6A@l#d
zDHwovCxFWvz!d;sGQ^&}h@CLq(3!MVaFhSyL!rg*&d8F%X_&hML`QYBTiRZ}i=N8C
zfX|m2SCm$2B^?XKJ=3POS<xXNB{p2XXK+_wMOGVZnBZVi5e}6Y|6&<yQ)U%t_?I)|
z$UxGPI3f<gbzDcS=uvd*F-hJ48@*B~rQ%a$ce$2W*h2m|CL*EzQysJG(21!-486pi
z9Op(2E~L-}(eO7?`oQPh!vSmW(NSH=-))ZKL~;2xY%vBbW>}r1sVM9Nj*l5q`5#S%
zQ}FD^zy1Pj*xUGOm4;*C;l80oktO?~%SdX8H^8@@idBFWyOINSr_!xo{REWRlXgw|
z3-(h5XcHaEdPKzyy2-P+Rljn4lR?IelEOtWLiC?_9FW&x@kpuRtfsn*-QLS4E<Fz)
zG9ld#Bnh;*Rbk?ER9!Ta)FqrS7@C4{EAs~A!V%DK>oN{{q0u8pt_^hD_!V);D{hen
z-XpV~5QeQTYTIl1+B^5r72`!7FRQQ$Jh74=Gm*OkaIoNUC<v*|(E(8Aj*LvEM{1C?
zyZ{#C??5QU&iBe&ZNxqGYA?UnmFg=wgvPZ$3)LsZ<b+4p4zbj9^8U=85Dk&+ntVHr
z-r%wsOFM1J-)x^j=IMDx@M(3Dm-KN|ZXVOBlKmw$OFqyu(Llh8E3%Y~Y1Zon!|%`h
zMcSPk^tyruyKs(okWegQr7FUGWbEIh%zF!S#n>7!wk7rRZVuVK6urnp@}QDpB~9*S
zkVWg8LyXz8-%53>GXb$%*H0(bqkUIN`Oz8g=bse?bAumC8`5XqA+(_y{fV^j(1$BZ
za*@mJ(&?Dl2k;8tW}O6OaavJE|17u#1t>M^0!@SDJc2)cLZL`m7!-)74CQUXoksM*
z9m|Sjh}@dm-Tnc8<77&TfjT<DBnM~uOZbdpn&3nTeG7&uB2JuE_!o?tRkNOzP3&=A
zEDuTrGt7%gwS6eHB2ZxuiO)~H$16mlbPgX8`65kyA_0q9Jew6Q1?oKNFm36(NeDbT
zyoAZuFs$gjT7S+q9g&=H<@4}a3NYbc%Huc5)Gu8~{PLXe11y!f4`DxY+GU7$<OPgI
zKA&H2TehO}XUXyf6XLWE)!&2|tW?qu6)DUjXH&lLih<2cjkXGyG^Kb@F}{FN`O7_A
zha#<!6v2V|85wmU=0->6H{3)kXMM774`D!eA0|(<upEfJww;oFGKR9TK`B-XFHDiJ
zgfovK8YC}?nt?-yJ3&V9yEw2GTcsxSag$w)zxt#lHbo&aNr)yz=t;gG@-99WW(#3&
zouaUeY$ja)`Gzz_iZln>RuQz@iQO(4-7lX|aK*M`Y=f%R{_&<<ZCpgesc!3o%>*A?
zB(AZUl6JXgz^9c9q7ZW~Lpncpv1I^6O4mGX@3P^Q)?jBgx(f#RD_4y0q5aC_beGG>
zn%RbEy_vdx`sL?|Jvlgyxal-}XM^FDQYp|Euiu=%8o(=wic+XSimJ4(Adn3`QH6^D
zQ}H@oBN{|Zg^2u|@8c~h7Kv&HCx??xy^J$3{B0{XnlrThDaoQqjXjXHi#b!KIjA7(
z$hT;Ah_VP&j)(Z6&(xn;KF3rHsF^A#il?$)q4Pp#sly?|%OmoRG|MiNW3+)?3Wd9=
zgbUjzTLX+!G&oYj9P;jnHmT91qKPzxkj@>rsqi|=M5$PfrRCY%E7${xLDZFtYcC%k
zorpLj$T65dN+HV@=yRlKSS8W~SMxFkK1~U-XW2@DXcG`4-V)z|605uD4Q{MP10fD5
zc!T#)n57))zXXfg=dwnZuD_`DCJc3cHE6HuA(>36o_neqgoF0pRK0eEc~{rD8%Pfh
z@dtE6ovkazKj3fd{)*&tB0YA^1d^^?2oeNyB7u(P+O4$@lCNc~%mb5iP)dLGM|z;x
zEkRYM_^U`g%s5j<P^+nOOTy8^iNh+21HwPm!4tDZXyB_m{E__A7TT$++afF&z$%d5
zdbJfD%=H6{Yf~cV?+Rzx^RMpdNs;Rbegf65K#JCFs?Aj|Pp-_KSh;iZ)`&d5KF8sA
zSTK1}bE2=(sOE}r@EuJD5`xOEryD%18G?xM;om|M5-F!#&|Y)1#1=-H$E8L9ld~*p
z`={=|ZfPBqdY-{($JY@KNU3*2U3j;NB|GEwg&yTp_<`fG+2#^DECE%f(&>iH=8Q2h
zlS%BdC6DaYEWi0UNhnc*zFT$fV`4_VMNU~nH;q(Ld?!#lIvm)K;W_4C(l3+4TZ=QI
zD%siB%cY+Y7vMFM_KAg?sxm(^nJsMIV?v|vAS8l;zotv$#Ml-Y!n7|X5Y5C)=TiGZ
zQ+=(9%lk0&L&hDtwRD=Ua6wQeS{g2mvwc>^|4$ot-2Hi`z)|V$N{mNAEZC3gw_8%z
zq(L3Bcwr2gin62<CFE6*m7X=38JYv0`R+-1aFSbE%?6(FH>dXM8cG-D-auD7HayLz
zJI2|m=8$F?Ko>v@P4{(W5g=}-b$%tJgfywp`6&A96|Zx{9N;1@_>hto7TQf3EIMm+
zJ`;@@4ycXnHM>|iJ?FXkWGc8YuGviO&L*^ajd+vyLIxAAT{isADQQM5S;YP+jAYp7
z3E1Nm1HDd%SXi``NR*so7XidvRPj#BM7A`S{cU%VISQOhrMLr08;N36AYg9}40Ml#
zU)GUxQy(D1%P`@`HDaXn&%m8`hOu~_2a`%P{v7w2;KUNhll)N(y4wD#p#{+($uLOB
z!X;K=sci1erRm1=Qcx#ja(r=E8*89RNH8`C7T4|#uVRc=Kaf}0Xw)>8g0(4H!ZrK^
zh-Kf(V#NQcMU79on9bk?`U7eI{Nu-CdboLYH-7lJI|7VCob2872$p->3n)-J>N|b%
zIn3vzKet~nvHB=bP6rDRV|&&4LL}S7`iu2ok&r8ecw~yUROul?44VSV3;<PPWZ~5!
z_|9gZYsa;uPFf1MZVUgTD4Fk3FD8RN+a+VIvQkXq2WiEoh9-D5rq2+~kYwFByFH0V
zmHBgwt2=Um#HqKIE8^q*HOkzSb3#IJqMAe+j8?%H+JkNk9xlmNWT?fmFz7?eR#L2R
zp($LHR$)v1K2`$HpZoUZ#WqP3-t6C)MpAtsT1cc2)CUfH#!oyXo<noD#b!SlX%D&X
zhuWjVqw@fXq<RZa15$&L!{AKrHIJFY`&jXv7?sAhaU_dse&o*RNB(ip($=~<v#*(~
z?lmG+0~@igA~er}*y6#PA6I-!k;^$fAg#%n>z7qSQWl+y^cX=$j~O<Bq?IYYtt*Av
zr`(RTVdzagmx?Srl~9;7Pzk3?abKG2R}WIw<Z=}$WIZ}_#0FlU31&cp!!iS}79B$!
zH<OV9U;Iy3cs0)u>Q;o~0+_)5WDRF0^JbuD_umr4Mn$EPEyB-_e<pQ3H010%gdgQ9
zH0;sXO{u1bNMkXf4|e&kIYW{QvjZ>og^1*P#Ui}dCDH6-GndXgi$XV2SNHe#HHQoU
z`2f{kT*~Y-Gtyd}I#v=*PbShJzp4hgaK>cr++;2GSGr7^2gA_3H1F;=<l9$`^knte
zpQ^;CAfUc8JdE2Jgu={Rs`bMCvm#r_W3-mRiZjX=QJ@T*0UVz%hey|>06B{L4@fTs
zD?F!vb_51Hnzb3BJlYiI4qZ5fDt|CaKX-N&2aP_DVX`bH*FN93cV*3fPvociz|dFF
zDI@_;;4`*j9yW7pmnXjE<g**}4Sp!*=R~NKa2H(U*twWCy6bfcYbY3I%V(c!2|r{7
zY31<}TcSMa)NDLaz|=u;BON-McI&lS$B}9Qio7;d+%{vkxIcB`O&Byf=^ODKX}vXE
zF{&$m8RE37?XNMPViooY02Ob3_b`fD>wqe@BEQw*5Kcl$=zJxCo$}$5>0aU8*UXir
zlo6vuHSn81M=rz-M|tYukSa7I2M$#Q-7`8&2-+UvW25@8gOf1VSR}3RdVFr|-&}4T
zky0u`XuQc%0#b=LJWu5hm&cbB$Zk<Hwb(>2FeYD~v-Cc92u|%sI<e~IKs@PAPBFWb
zlR*CsinQd$1x+D9hF|0+awrW08Mg>Uh-6<!tT`|@EG}TQY7ag)w=g`+g5$LeDEOl*
zhZ0f(LyYXxp_<HTr91$1QKsLh42R0!XSK4JDUG~Y=w5Ju2P=rh3jA{D(CfDrtt6bq
z!!67fVC;8^+g%as8;~hF!vyz}g%6k#-(ash9?6;-)s}HWjB}Z3&?dxmQsg_h>5dJR
zZ3)g?oGWe-H6(Dl5E)k2)Hal?$9R73FM9`l`qB^<^f4kuce&|T)yCo{^=_a`TY*c$
zRRh_284jJjLoW$Wjv_@n$8LbXuW0pZw;g`-3$XUHD0Me!pbdD8z$3+L^KKYOabFdl
zZW8&J8yRWfjLh?e7QJEkgl<&QwDnZ2^WwgBH0{AjxI^@Q)51nlGRVgj8j^jL0%{L5
zg~N&QybX0(ldaaot?}x4%vuVeTbZ96fpg*k(_p?a+IFGn!YUuS;~_Z0CLyGFeQ=ow
zhS}^5R4dLfu9Q@MFw7c5_Tg`%mq$XF81YXSFD~rt=E6o|lVBQmHpMG(*<)M(E(4f*
zifS(;Yjenr?~y*l>F20zQ%mciliU45f-wznJZdw(tS7t6>004*2#X3Ej3pco3fi`a
z?|gM_ckVQxZ*D!nTeU<CtC+)eWn7Cp-#HuV`z@+~X*h<KA_>+|gbdPEj(!rKUXu)|
zkLqUGanZqn25Ek?PHa9%4W|%Ad_<Af42^|XZBP@V-(-P{AzOtc=k{RfE0lAHndD3w
zCorJ5w>2AJ^C4ZsK(9AW?d?fe_y54j#ceCX7%ZMmS`{x=_0fcCjb0L>U_D>5f4kNy
zHQQg5@4aYV)6gpTnv`z06M5a}w7=9Zxp`bcn&i(EOAPWj!?Z(2O?^DESnGfRDGcs1
z?IvJ*{LKonl7#robcFc@OJ<~_Nrt1&v@ePe#wEFKMxfTA!AwJm2~n9HG8Q3?YR-Yz
z9Qm3kx|c48;)6Kyoo?<`!|@@xwp~u#ofuQm>ip4bLvO_8W)9{2phqI7{WR9NLgJ5S
zHO8hXtJ(CY)mUG&o(gGo!3Qk!=#XUS13O&o{vweBJ4o1y<~#&5^$s69ECV9xM}=+2
z3!NJW8%Q`f_Ja)nexErX5!VB@V=TLVghSEjRt5vdJ8zuRg0R+Y>(Wb*7ED)es#R7<
zyy<hf-A~;fzE_Vhzy_lJJ_hS5C_Fn-Ys8&4`90}V(U6AdcX;ahv0V0|D$%GVTo}%d
z%`Xq11N@_+QTEFC8kq^^q<^$qHbz{`pXRyMV!^rx(?*Detg(%?lJ-%GNxD*UPY)8T
z{zwpVSO1CZ4|w*uRQ(o0TX(GnCrSa6xB9WZTTVS+WF#0<=gQ&#ApBqkhtln9(AI@3
zPaBm+C7>j>az=m}1XQ+E7Z@KG=Cs|{!+EejQ_B-7_Z_Y<Xf-uVv_(PTS2Sw=Q4|;&
zgu$v5i<{QHHtZ<)O|z_n0Tow~R##jqG)Ko>;kETxVVJOayFzr&scDu#RzsdT7?ZD(
zjt$GiPqMQDN##jNA(UuHMgjopqE;pkUTep+3YhG2G!BnK?~X#v<ppz1GopVhVk~iJ
z9)J}bWR2N4McPD8cAjR)(es%iC15{NvDk*ur_>(Hh{G+w3pu5aBF+5$)Hq);#9CbG
zsE7UhKwvg;w*V(0K7kvgnm5CXt2oMK#y!&dqW6^CO`o-9h;rpe8sX@M7vdNHrSI)y
z9KlvS+@+-`CzlS3h}P)VbJn)MN&1rZJDgsR=F2FHZMpd&S1VRKi;7W;=|X`v`iwr;
z6={w%x(Bj(^(a<%?7PB*S%}>sft}U!!qdscsQgT@3X5WihmLBxuS7?1$@SvvJ3<<|
zt}Y%yqH_W&6!_(na-jr#Zv7W*Cu#c6Hqr$o{eMTHmIWfcuI+rsXc1x$ibc)|lxs`|
z^lhQp&^b^BTL(xEI!6k8bxom-D8C}+6_a%`?CYjSuFcEh5J1&Y`Z-6Dj-I`%()n$9
zg*b<&Zs^xdC{p2ab~}fxiuobr7XT7pIefDq+B0S-e*#Ncv}xLJi{{yPWu)?Esyu0;
z1qsK_FAEg-C+$p0cp*xgs1s4btkM&3lqqeQRpD2eomd(OP0Q@*e&Xas38amh5^boC
zOw$(pnvN$4MdoQ_u*a%EGU#34!L8h;hCq2qu>vma`dr@6OJ$uR*Uy0|v+9(q#{vUE
z-6#WJn9K=D1b|=3z9t2tlyis<332BeH7r+zY@~b=^WA5yu<fPm7RjBbbuqrcXHVKv
zw+nPMm=KzG8)-dK<z$0Pt6Ui8{T0zsuyDZ}B`O{xKE&IvZtp6*up2w)J@gX?S9Oqy
zCS5`6J&kx=5j&$*J^v(F;@(WC?74P&!ks4Yd!<9(*N%gDX&Bc(3)tLgvT;OY=1_7_
zj70d-6D}2OF$6th?$0z7wX0p7u+;C=j&lCgh?r{D&rp#NcC$1?MZ_dJu}SsqkU?TK
z=qE|t<m4~g{3P3t-VJkRb}};PpGkMyk%<t0AF^a&-6ybu*Hu`lNpdM4WcezZTxb`5
z-XD9Yjn)34Aj}!N$N3;qy8Zh;9^Fq^`$_SV^f`B&XF-t*4w<;XH?t?0elq8<A8Amp
zJB%m<lWH91bDt*zIu{w2eg|zT-NtNe$TFe0H-^%;M}@;qR(|m6^w76OUUF<!bkYMc
z^Sj0z`C&>vSMiyU=H97SQ7PJ=xDq8^5h@!5s)7NwIC(^9c}UqFKh>XnFPu|+L@P;S
z3sSA!`G>+GcF}A^nfl|n_2P=oi#0>A$BphJo^niV$39q>jBn7=yG3jodFC|0-)C$R
z@AvsPawzRcdI+N@#+XCUhE-bV6R(fb0#L8<{kZo-bBF0d_eb2=Oq%CRy|M%BGBmTi
z*(vF=mDqfB)Ffbr1WObL5rtaXXn7h$vMIMyd!!E!)5Fe{yHa{ZKHpGwQ9J-@cQ$OX
z8Bux&6WJ%|zF+jJZ&(g-&u~QV-Y_~q?DJ>#3~9WiBeIU_uh)eb{b{VUn_K9kFfYXL
z#W?5L8z;XrA?Kc&ua35Hi_uhWghl9)h*)J}%wG+Xnnp2ZOl*YtK3VQxUMfBM+z>E2
zeI`!tBDijjXYxlLEZu<O@O=5)cfidSSht6%IB`qR^SRi%>7t_T<~!mR0{o>6W*Ejr
z6v8z^G$W!dDq*^y$WbyhI)x}-s>tdk0<Cc3ioO1pJ{fP6Y(F$trRT2*j0^mu@xips
z)8yfpsJ|GZpA*8m?W)5OAKs486ubh`#8%{HZQ7h)9%|@<)1g|^V9S{Ud3i&m5k;ry
z5$istivD`~Kx@|!1j%2HedK9<<`!dy4v&fNjAM1C$4sWcKL@Zey?!dG<4WO6w{&}5
zgKHE4{N%dHQp5v73Lb9fcx$k|yQz_nf&<E4Cf8EsIM1uVvPU&jMv1jo`rnnb>{-;A
z91U?k6Rg*%T*U)Uv_P<mYJ~IjZKh?I?nr?S?oQgvx#teX-mCJ%f4hb>P_}4jhJ6|~
z)$B}m4(d`YtCBcrVbz?cQGo|NhMK(@OnGsU7<Jm>OAKgUB<ntwP0|xtI#IR3rhRUm
zB}lRG%Hqg|8^>JLh?E@OO@sfUG8M``oQbcDgDKEy^t6!AhE@HqgSG<3Q{ND7tH!G1
zQFCZgl=Ykxr~0pdq)`n2y3~Y0cvkO5i!CLTAc68-9cOMi2c29BTcg!W5=XzHR68tT
zH%o4w$B?>YF0Aq0w*Q@DIf|UyjajcxO2`!Av{p;s2#z_Xfp*{$2fM>65~br|rCyhX
zcrN@r4!w~3imlj-eew7qq8d&vtYnSAT9&|&Y&=~}zF5=-5at@Gr1s6~`eBk{nJh+@
z#(=xEI>c6xXU(ucS*a_!ww@WYvo?~@3dBjqAUH~h9mW5q!R#);8l<ku!%jS!9Y6-o
z`uOWoJ&>%8+oJnb+-ydqv)LHQJSgY=p%{@~Fk(V6=o{<5fV>)fPWOyXSo|G?G=*~>
z?z><)(Ss@<re!j_43?Cd9-d~0STy;Ikqe~!)>lE|vU-2vhORxCM>@LEx4O{!kmzI5
zFUOuOX^BHASj%#FATqS(FnqPTp^|Sq;eg3wKvIzUJ%FNpoCY`^OPv(^>&j{V#RFzE
z@3Y)bA(4m_iaS`J&gG(v^)Jth;W$iESCeCBA1#B(N63V{dggoJ%RQn}c>a@^%gazJ
zI$Shg5<N22t2lIl;+e)HfO+hN<$(&_ug@>yVpcpnJOOWY^dBUI=3iC>#a1p2NQs|b
zgZHukR9HwV8Sgp{#+jN7ZB3DI6<m99=;3fkN{smAXFJsq^M|0vAEBpFy_o0U=vD?t
z?zmE8_}ZmDiu0CYKf!?6jGmiuXjf_hP<2fs8IP)4%~i1W79743#nNSJ&>~hIHv@&%
z=$?K2gzM;xC?K<9N0|-BMSk4bLI)uB*!ugfY0qP3R%y5O?&{Xfzojfbw?zj^P+_;e
zRVm>&GsN)=H<Py%__i1^7|tOxuE&!af_os_K8Kc7^4GqKwMnuX?hv?wl+viMTYHy1
z?Xzc(PF<I|uv`C8l-?8wk8jGK;dR!zb`y5%6?tXlXrqPk_62k72ki(<(YNuOTrNj!
z2{9#lK#um1_upuZc=!#Efe)@&Et@FqiEbt6$IpFhlCiH1Gp6VMJ(1r+i6Sv;hob#<
zBWHJD^gTk(__$MsTj}G4^QARKgAd^4W6~cYFvhAmio;J&%K}-3N%2UhHR{bme?<_V
z<3O}lC#vJ^*)+_=d4d+GQKgkUzBbI~h1D8#2}eLNbb<W;vcdQ3dBlXk4qd*5P85k^
z^<d`z@}nh%>BH+0BHxJo&ckuL8w0=_w~q6R{ghxeMmsDh;9@n%VFE`Zx%pQglC=A4
zmJFxIgNwqP)8^b#RwBGP+eI;wi}{^<jUT6)>pYMTtQ4h21k5DL#G?TZ4VCjrqHlXx
z5GWyy1)M+9Im*H1Nb!*p1miCdMHEs>^!0KnPX60;FztLJwN}7vh;E>|7i^aSKwZPp
zbmc@;Z{n(|)caxrl1<CFphzpY;P}JW9V&YY%V}bcpLg7B{&;!0Wku&3Fh)b@+WPh3
z%uyrV0vM2R)&++)NU>Z94YDTS$mif`TC>B#m4S#$l?uReS>1@v!TRjv$vg^osFiop
z3Ec1yBx|_DM8|$B+gdt2+Wo8>VSiOZMk{KxbsETEqXrMe43bz3J;k2|bk1|VfW}}N
ziBRxsE0VSSOf}i%^gY0FFMldwBHt78EjW?Hs`TiH)s0WX#E(VMU>!x(pRNEl0?(%d
z(09!|c3J9g+xi&)MKNr%Lz~VacC(%gKWoY@ID6_>a>(E=mVmuqrKtH5d$d}xX&NeD
z5RiuBXo9`O{xL>+V-49mRc(3kT+>qNP814Xc&F=6k?M%@t6NOb@@_X`d3htI>|zGN
z&z3d$7^TV;cV+eyHCzB+pyNz1atbYX3gZfiSjHB<0Ehv&M)7xxzlJu32@Iosx5?qd
z-7Ka#WS9+1pr}6b%d2z-ZT+Fzpf`63fy)jTb-|y39hX-WFKTi7kn^+4(;QJI%l!pK
ze2L!7r+ad0PfD2bsar6XgD>XWJxwwoHCORf9r0VEIM_<BWND<pEI5=QaS)gGF}@1R
znH|v!Z&(5!-9pejNy+g(h8$6$1Y__L`z*OvF2iqdO8c)js=PclmH;D-Cnm?*f^>qM
zCzw=0@8aB8TV{tjzE5zvR&0MR>so`xq~rHSLBuI)mS!Dh1{CI~)~Nb^?^R@Gb*0A1
z=&MnM%PG*qmrKBjp8ZIYS@DFDNwe5Ww=2e65vs{7<p%KtHF2F3Blir)Z<5b=;%pun
zKrxw#sJ%83soGV`tbKALGcfhXP8-ZWTi4{o)mVBuvW!BuyJ`KPLF439_<%%#bA7Q&
zp72T9-<8K_mT$v9&)zzxLEMqBt+Tz5J=bB1W1Otu2VF8Vpl>e0?Ou*xB{?A9P$i{y
zM|4xJ3)%!G%8d{u-AC5&>)0?3EeMgln4Yut1`I~s-Cl*~G*Ri1k>5}JY295;&pq@-
z#Lm^4Hp$Vz)X?2y^sW@;*ClyG-%gBU|LBB2+bG$zX%YcrI$cSa$$Sdz2EBDDiX$!I
z{_-)%I3e)hC3KOBqNUpTOsPtReVV3GD|?sDzlE<cZB*G{Ydue?ezLGN{6bFMbmW-r
zw)Q*vo+foQLpFc;$L~RxkCGuIY`BhQDYOu%dzULfTnIGlI(s4wBDp{&G1YN0HvYt}
zCpFsDioRlY8MeBK9Wmi7dm-f)XBLIb%nu6Pv{6I_7UT0ATHB|WAcn{TC`PxUeWV-*
zhdK9<bP{mPv`$gSdL#zbV!LWzbq4pNn2}y&iy`ogaY?A!C5r`8Jcp0<Zw)3EEN-~R
zLLW;)Y6+&JsViQ4#!(yp6a<>Y;lsV>UYEWf_58h)t*RN0JkrGu0p9p8L{s_RPwvTR
zXR9)eJN*RNMO^RZbZOXGNdieWgVSs&xvqTIv}1x>vCDtEk6_WWAVXu?Nu7sREv!;U
zh%KMgdA}u72`Xz6{1nx8ud@3we5$9_>x#f2Ci}@h{1$Fh&}3<tbk38~&rUa<5)0^F
z^Qb;FS*o<SguKe@X&a1LVx~X!UMwbTR)aw`9oiQ*f`d)}`LPRR8bdG?2mL4>CiF{d
z+}gjEHbU-5+06vi&lbqcVU4dKyM_2lgko*<ReACrRdJ>2LU$@58M9ER0>@8%8{Q`H
zM^pmfKp*!)YkLi|P(GT%H`-^=EmrEUhQ4I?ux{(gb8Cfs3Y;=$r!4-O%2yn10(6sR
zU6x<wcSlR3=Xy>mo^&_$SnfCEbTemLPST3#%z3J!5Y}po{ihZicg?6_ADfUcz?o1}
zmJxCzhnNT~o!=vhmRTEXGQ4OT$Zvhr5{5Midj2y-p}oGVqRFwQiNxp#2-*sjF6fsF
zV6X<GK@F!wePUU;7xT5>hhsSL>wR!QmL`QcBPeEpof>)1LNkZE`AL+G5)@6qC>qR!
z8+){akxki?kaFfX6i}pXp_`Xlck94~S-?9*q=QqL2z=I4B@Zvi@4?yJho3QIdNI8l
z#4QKGd<)2;6Vy;X#e*x_gP*hHWyFFgqukOJH7ndQUKry!7s+}S>|FP?VT3DlK1qQQ
zk=oA%rP<Di#}0$a?hQK@^jNC2+{{nOa{1-JuGN-u{`9VO-+ywu6Afn5!+)vInz}{!
zBl0(x?R(%zB>%@u3Q)BH<r|^Paa2MPE=FFo3z*x4C<&P&<>2;)Li&oL3#M*r$!{Ih
zASM=(#VCobo1BhR#*@dO*~PX)#gN9<0l;rNRKG4|p!^Nocw@Iy>-~ZJ?0T#CqSxD+
zevj?m@H}89TT2L<6HsC#BB(?}DykVK9k*1%F~}N9y4KadeB)RvJq;@3pmQntjRuyp
zd+bH2w#~~?gnNl>cBMwx5@vUCsl~4k*^~r4aR!EORAjW02r1eGW<}-vIl3BCwVUEw
zh(xbpj>h?!;M4gDxV}8^il-Ur;r34S_`LeD#vXa-JKk@`B;%!=m}ILfo6GC<dZvO?
zS7(QZPL+pBE8);iH4PKjVa_*y6Zt2g>RP-vnwGMvS1TCwL(fwPc-To}O1cyV3K?4x
z{_{<Fg{d@#rjB5}AEg<^=qEQRpIA97HMxux`4p1VPC2C@z2faqsTOl$2-|+8kh&a3
zbrd^IFP)$co672tU{8;er@;7LZqm#|XEur)a+_u~rnVETrT<E4$EH3X^TuOrTC%TE
zc@b^#eTC{a+k)_}X@_ugF0$jzW7TGbtt}NG>-<pm*;sEvkI76dH5uivPuy+3TYCiF
zwZQ^BDoqoqsG>2*jZ}zOd{hm(Z%1afi9LPcXUtDSf?C9Eh3I80lt-6uc=&~q`FuW)
zKHDvFXfegSj8LcxD#zUuF<lZDwF2cd8MqiH=n+}$F4<UvUKgt0VO&vaIwj!MS7uhG
zACQ5QGZ!fEFC+eW0rja@5v|a!zf3zhNh5MRk1)K$J~DKxqme{)-x*>PYuggI{ZvI5
zj|TJPpX&$cTSpufZ23uYl>m#4Uva-%N<10wTI1Mav~)-=p+fo(j6RRxz{*!Z9U-)C
z9>Fg)gf&-?LrVVy@(_wx>%nb~#fWvMjZ<K2yhtV7T(tpP?anusB-trf%NM~yT`jjT
zXZIu<$DGmp{vWQ}{T?~D<8bi6D`5!o9MLFX(azod6iahGu?|%r7YXp_25ce!<7I+z
zdr{_0jli`OqO(qQlE6cRj6Z@iI09z^i-FLJf@3klwfN=mcKQ$BgEcHyT&a6QkUR`R
zU87{V`XVeB{1EP08nE9gEL_AOTa!DXuz4Kb$(mQC+Pxt4fxasUtoF&`Ad)0uD`_l5
zK)gSH0amD9$|PSYwtfin-1grFUYRKfPB`eBpeP4ty`~H#JB8TnnzwZhx6zx_dgbFc
z^{$LTcfHng8ZMPA?lTjHuBs>~3snIE4PjYc%6*#^HD>*h`@M=No(8gEO?tGG;DGL!
zIknN6VVIpLepd7%^9kPQ=@m~$#G`d&22uBd7N`xiP7nd~8%zL8zY7$6HJXuC?e(YU
zo|ZhfFlXWkh}8`aNOTEuicNS}80_)bI`FU)e}Gw)H(>SGZcAB2IjJ%f(xjS0D3g$f
zpKWvE6C}I95gE5ucsGJw!I(^u@Qq2m!}b62JC2|pO%)yPHM(i^a4hL6s!^uhSYDQ(
zs6-SU+3-3w$KoVN{lR=H^hVSP#<mTjt&w+5$(ctAUFxIZurQIiFcp;M8%2K_=Jv?_
z>EnRfCNooS9%oP_bri+sHqLwpN!J;gB#HbCT*wP$kPMWfp>3s$!F>BG0nI}(tOBcS
z`;|a~gZLF43#h#S#h9K<bvS-?439-?rOv?zBZqMoDO)8m(}QWECutrkfa?*Is@T<O
z_&jfAiFL_!j%tT}KF9GMHjvg-?(sD}e=&tm?rVzY0?dj#$<o98aBEy#sGWl@eCQ&<
zuX_2pLGi*8F6sN!-M$d5HTXuHH7~<mrr&q;EKpi-9-r4=cadSsugA<m_$nj)<xVdu
zgqs&1m0`|;+JE0lmQkS{2ZC;^gkmx&$+7`Otgu0UZiHf~)0;bg(clJ~R1uB9MW@DC
zS@iDss&sLFhO!7{zhcsBzjs+@Tt7;tY)Og!98tADI$YXMvWgm#G8*hgxmNa9fI*96
zAZ;`oqa`)sTa&j`De_`tYY^rvf?alzBdN*1Z(|Oq?^I;UU~5GJs2RpVO9_Ehf0fp$
zcg@T0?@Ov2V8mtsTu*c{?^jA!5T!4QcbYZA&ul|HG_K^p2({}{<g=QyIA6z5t<d%Y
zpo8Ici{k$tK^<S*&i#bS1t?OxX@XYVA`!?fOl@4jLKa2nq8w9Hi1`ZXT<{1_<QZML
zRE@b95tIwo8q>-xNW62tdPsD6m#K0iM?V&GbYaL+Tv1R7X)gj~#SmUb78qLnlqoP^
zSe`gkIP@zojM0&GO=h@|U1Brj_A5+?CK^Vl?qgjE)=Mo|Man|gckYv`pkbSNoKK!l
zI{10#kbR9{p%uRJ4wx<2MtMI>or0N#cP<&(WR_(NRzrNObQ6E4VtUzc?fH?Q`SmTe
ze9vOyJ~XZ1o3+9UPw0YlgJEIwL%gBxaQO=tjEqDxu@8q>P<_RrX#GyAh7*w=e!%zM
zvmm+X4>-{%3kZ>L>`>A9e(Oe^W8*8imEKjvrX~B9Z?mF4pdgAW0GcqQ8K?PWbOtli
z6v1wXRcjUM?UkNSiRv~-lG&n<e--rauQ9#NC1=FP*xvXf62yZe-(g1=ElX!ljP>=6
z$-Xti>!AZ`H4B7vrP6?>0{7UrywB2v>KcE_pW4LIO&E1X8z-=<F0PfslW&!6IV5+!
zqWqqqE?X)B5Y}b&<wa2KA9JTXGe<G0ugB@Y;<ejIkgztLNM19ut6|sb_HD8hD#9IR
zuZ1RpHvx`Gnn&<8O^IGc@VgbIQf$R*xJF2K2GwkBQ*fheO4?L=A}&V`lHnt_b~1QI
z-9r|Le#_eOpb9T(7PTra#Um|&-^9k%7*eo6v7!P3xFzd<lp2A(tqAu)E=A~N8iM@H
z<u(IP)cNtI;C2d$PE~U?M$<m<v1xYiZopLT<`<Z*4xM#2-p4g8L85)ah@e;S@HNA|
z=Ol8NurlG_jBO((r<gie1VCws6;hKp*WIM*YybG(ma>J<qFb_5pz}6L?%UnRtvEMt
z$pjZt++<)(td{kmU=tnslLn^wky>L#R3C|YNnMkc!*60bMHvnH<`ilEG%{J&Fe*%+
zjTZG$y6;1$L>`qR_sp}wV<hTsgOfV;QwuVw7e|k8cB|9Nf;n9Hbf?HHIQP-fE$pV1
z#JkN^-|$Xv_HeIllkdMG_H);mUPU)3zG7&CNP!iDh>!83lNr^{s08V1fY$}RtDBk_
zY{PKqIRP(E+njlJ>;-Ne9DTE9Yc-7W#!7e7F3YVtOg2yK#&M<)w#4K*c(bn^FnHGi
zOO53p1ce|18`isRiPy2)Cp&cXWCMewS7U(<3?fr$6<2fP(VAkoOk?Mn;n6cy6eoEN
zcTNR*-IloNR3v5#qTkK~&Q92!hf<Hg;5*feGaQW9#5h~%v>f@mt5?U>fQ)(sn9?kZ
zoELH=@&o-m=!`QtVP*4!Zq3MI*C)c*169O@A6{Sw1BrU77bX<7)o+B=OKOT3M_qUu
z)G%1v*Dw$3!{WTWe}2o~d*W7}{itvohqK!zI4HNk!NALAmrWckmSUmNsWC3}z589I
z?(Ph?T0sx*T5P5eOv%MYbRzUJ)6Kn!@@StdaavA^up>Bu#v(VH%nlM5iNgY!YUrMi
ze_F{-tA~K?Z+>D_Z`ea`+x(I<v}`yjSJ@f>5S4r<h?^0#X=%Wal|me=zQo6%Ws{Zl
z=}+-u8|cSCJ!T@_UYH<%$YX<TRjg$Zl<$DRvW$!jEr@(;cl8%tv5L0M$dqu_cE`17
zMI9u>c!$&2G#xZi5!P+od8TU36$-U+2lUz(G)^M=`)XHCub}p+?s<^N%UM4vVLX!W
z3!0^;2XT5crok6h1={vUZ6hmQ4N20z`>5mfN}W4i2ah$KgcnPPpEs_(#;Q{)27f<(
z*y2iflq`qB-OJXu(8w@R=)->-a6|4bNxNMnft?20HkuCy$6$L09kd)G)W4O=9BM|{
z0njynOnyNaTVrFARb&?Wz)KO0c=aeIrmJGdj2T21U*d{=r&%WGB_fB}!Crdq%$!h6
zTYHZU91PZ_u6~E*gTy3XA#JV7W1QF6sjN;@hLE{nCX07QHTpvH15PaG$-!bfNO#d#
zL<U}`Qn>z-yQ&tSY!D@K{1sPCqy(XopWKKD^Su(X0yAdtrAPbwvb;0KzwfBiTWK|Q
z=@~d0^<3M_hSR&Ce?AW}16N8iRRYrnJD8B8G!k~7@GQoI<#32mT-zRtY2CpF2f(XA
zMU6CkH@0EN1UN@jBxhBao0Y7;t{jc1e4a+0fB6N7b2yPo(8A@@2haBnasAf%nJCjH
zql`!qJ9zbokA$A+Li$D^=r%*k928%W0a#o<gs&`x3@ms*43R~6)ynuL*qETxc54Nv
z^pBjRgAQ+@bKw`5;mQ|kZCg0Gw@KQe)8%EVGk1lJ<f4_oO2bud96F<Au}P+y9pZ5_
zadu@Z;OMTx@X}Sm_JkwiZ42|}V<KTUgwsLX9z^4Jf!Wc-X9FRs6DjJM?42@;z_eC5
zUJ21(owhni(My_rYDNMIf>K{oyi-%i#({q!i0)WJ1(aFJgY*$gn{8I=(Ww04qI1{H
zye0i*Mr`~uq|h*1yj(Kb6ltw^K@0a<ye8X(oRqDde~yan6YYyu-Fn2RK#X_5K=Ppq
z-rpjOTr`I4OJ;W(>m&(EmI`#hR*0ct8#{B~3BSz88+3Bzg4k81*^8%KE#*02QR*UK
z2M-^JFu#z+ux)Gj9-Ypn7I{$oQ)oL1`l&|nToNk4Tamb^hRS)nuoZIEjHOtFqfhay
zZUTan1jXVWhNrTYA$UlLl2*5w4DdkB`Zffs@;~cY=26uyjz?2T9bVi&2sRpcJQEc}
zsw<xl^KlN5{CdJGgdh3YfK~~bf@i6+a1k`1n_L0^rf&!;tv*PXSF_&+QjFzMV+z*{
z3z<A(vf-IEV-EC<-lk{Xp?}FhdX1TA65X2fDfyy*7Pf@qRpgF~XW4FwZNf&>q*+P-
zDN^CmeDw%s_1+%}Im49+!#OjZ;j(Q*hfk#Bm}vcixtLUk-l>q@`BV7ppOrG2W#Z%&
zW()~2c*wbgWlG&}uVk<U0$Y?beTsvTbSNqYPCD97tBNC!-8~e57?YUrlBx*ZLKn{g
zcBPw`%8s^Su5C+b#GMET{v_#pq(#hqKNXW8uxJr!mWcI^<`7UR<IWE}EZ{43a!Oy)
z$w_WC9xi}v>UND;LEy@?#C{}77N~WYzz)?Az@B@SyxF&QfwgRVOOn%0aye75&&}>S
zzXc$D2{D5sKzp?kZ^aDn`*nF+3|f|e(o$M#yR)s_4THwu&3vi*JPwOBR)%9|cQ^)g
z4XHCFEsKY{w1K@z=AIAvPKl3~tb_^UIhBwmBDl`00~fq=Sz&xh<>PA2hJCH!hGwUW
zSgtprf2*L$jmE;I<{4F(Ggnc%YAXfr=SqhudnSKgbgU~un2Z{YIR{ZU&<I3x!^_iT
zd6J4u;Fn@-WyexQ3?V<(Usett3C++vK)`ux$MaZS7UG<_$O=<e&c7X8n$ReU`wY8q
z?n`O;^Nm-AThR0xjbj)g0!weYObHM-BE)A+;z{bkS&M>6?3OUcSLAaY@eW`eEgpt7
zlUlHem*R=;T?P@87+ei=K*i)c(`M7rgYp~;1v3UAroT0zo2b1J>$(E72e7wJRJ^j+
zfwa{lP}t<C*rwUgoVd5LVnEn5EM1ks_wbZY3vFSs=#|3cw@9}Pkfq3AF7h7aR#sC8
zxsEs|MsOzJ5XuyRfK3#A9}Un2qYDGT3x>eWV2Cat(t`GRp|FvPh+q_fqDrDbm_Mgv
ze11tcDh~Zxw+#nx2(x{He?+>B8}7!V`sarmVDe6{$$s5`AD)NF!*)Lkxhe86X@8YJ
zUKj5XynC5Tkh`933miE2XeIrq<MiFpQF2nV|K7lzL|8v?M%9Tq9N#$?4}FL6Wg+_Q
z&7!?a`a3PR^Vppce;!n(2=H?W$eoi0I?xqdaa3c^+-`wjPE~=QkHXl|{#vtX@JW?i
zB5JNRT2b-_T&XiT0qbrq6QHR}zG^P5NqGXJt;oz71|{K&DhM9Ir`H>#2DMX^k7QLZ
zL|1DDSCs`<i3V58E^0J|R#1$}OU0%k0x2=+r9qmGyp;oHYM`NF)1jh)l72Hdzrom>
zP~b8wgEc_A<xbya)Vd!S=|g{ht(CM<-QT2nCjNC!N<IKNg$GD@Nl&$+8B<w#gr&v}
zT|6x%)*c&N2fT08Y3}X<u6EZ~PF0uq^+nk~V}Ct|FYMzCJSx0V+;g^m;m^E!7peET
zY%Qs7kF6Fas?fDhC$E+Ztz1K{)updBt}gJdy4Wh$u}{gb=J&2F-zq+{58J7}cCO*-
zu8FL!(66?!uhPpYYqw9>KuOkS68=kJJcC!<yf)I-%phM1Am{Jw6V&AVcK9geu!_;3
zNztZCv>LEhv(jc*PJc+JDJEZntc9XnDeon^R1KS8VypEKVS=!F?4_G(KTNE3yww1&
z<<4Fsm#(W&-EE|$ep#8R2{KX@^9n+)nbR_CuKu2`y-?j&_Et#qL+_J4;tN=2WAJ?_
z>GAwa1Ld2`rz_J{-N+hUE`7D?$vACB{U+#Df4rK7HY2#|H7ad3`gquCdhAM5`64&^
zml&N+{;t8*A@sURFNd(28=x_y`ZPiZmZ*JTwE@14fXfD|h6GL5)jmGBn&D0L=Vf@m
zCfsvhVa?!2*QXbkyXRHMl<ZCH{j?F+zPGq&hEgSZ&=(wb@UcLs>vIPVI=m<zbw(|3
zh!~I^EDuDbU<H%>yUYfFf`Kvx;HNNg+~nfLnniq{U32A~2`%1Vz|wmTEs2e$)WSRz
z)ul1TY;;WAQl)z-Kdg2cN`8In{^lIY0O)kQ^I2SoQWf~F>*MJp!pVm!TB9y-tC8z^
zo;bCQ?{j%6p6`I;Hk8t!SYr(BA&><YJPn!Vfv_1bci>}DrGx<Rk~V(OXz^s~%l^1L
zNs5F|1DJoS9X=rV^Ei{UhI7Sa>g2UYggV|Zk#`Og7%@FQAPviijGoxn3uBn010T08
zQ!nF<YbEU>ZtP~|hjSMd!(1+p*Ez!^!t-}`5!<GW`N3w9{opB;L!0<0{){=Qf0!sd
zdJZ21P^{l-D9VyQS)>O{-R&*GB$6p41JkhO#U#<lJ4wKTdjsZpyVjnYBjmC3Y1Abb
zL}+_=q^VTKFx|qWC{qo9C!}CNsimA{RMI-G`?I>f{uNj#66xGL$#dz~=tSkpT%4i1
zgjkQKiEa<V8V&OZfnTe+HLLN9bvb%P5(qZD6th4Q4psZS0g)$^JCVnlr2=1=B^pnz
zHkEjoK!<?g6-lg*C<~Q_JN=V#vDjAEP-wFaMHVVaIw_Lp@ug<v^HP_jA`H=G{$EQ`
z2?MstlR2dsX5Z5S-G4`oWRj8u>nt8(H)O7-+8ZSoA)7^JvjbKP-NF5#si838FETR9
z{>F}aEty|AxCF?_9K2a!PCD&{mLIaLn~rY9PkVlT{$&jW-^9L(DZPjb!3!(?6gP<p
zSnHDlJ|Ei{)+mi-zA8QS{Uldi*T{fvj~1f;;~TBD5&0tcY#q@+SKR4<>!oRptb@n+
zj;Sj1EzP&rTH|dsUF5T#cGro6G4AR2oYP4A6C$$HZsMhb-}MgVJ|9Df9nr7lJz}vl
z148Mpnh9;=>i)2Bv@-|m)b&vQU&MMd0hk@(3OOg^&bfmPD_5YKI;h1GgnmUyKMvNS
z*Dl@jFEe{GgQYV82Q5l}U@Y#R&i56es!fO#KF~6>m8^j5_VYi$aL3MIurDD=iV!Y#
zw)C$KqzsWw6ml!_bkB58+Pnr)j72yJ19dZ;QpeC@=Ysqc6~m1XlxJ}t=Y?#A9ovZP
z4*s&io?KSB=5X_Mq0Qr!nZ-97Pc{p8>NN2hw6L1$?|*wdwE()u@GV+8cRmVu4i|nF
z2YCia`{H&dzX+@+F~z3}&2HZ~A$J#(3rizQU8HeGveHLO?>XOiq=P#{F`>io&|}#}
z+qQJb#$=b8bg=Ps!<e=*Q1NgtcRPDjv(skV{LWDb2qM%@0jkAdR|YXU0)}J-VZ(VO
zv{x7b=rlg@Lz!+#pLF{TdI%25r;P3_tLf~a<1m~dWu^)9X|!-0660VwNc|xU#^vge
z@^(9+jgIL+eQIJRI$f4Bvf&oE!3Tlij2W+dFrJlUF}JLwhCMn|&0t0&QiAZsfXGG{
zjVgYBHlRRYDA$rq63PP+5>{v58DK!Z#EWBz+L4AD9zp%|)i>xTf3e{0+~^1&1o6#K
zwr3ZRDa!hJPfU|eB7lm6qeNDi)%|oq=$rtSjhii9m6^WZH{st=9fQ#dhr52sEKcDV
z){U(4C-G#*1B4TJGjp`CK?-PIECS&zl`y!FXqtN(X=qEa*gBq3^TFm}Cpj!<Z{cv#
z;p5tQI%$Z$20OlQviaF0JElDg#~SU^X~`l_pY%vASZ0xn9S0Yw$2u3igP1lXelC%Z
z2*Nof*G5IpJ`LAQfra2br^_S`U+d$_|6|HwCI3FVcFQm=9DfPaw@B4Y8{dT0y+k4E
zlgVOJAdU3x>nLubX7V)$@?A?AU0HyDi|)^#d;oP?m&OB|M4~*^s!BC_{@R=DqVy`)
z^iz3jFK^wAHbnd?@;r6FdFZxmHA=CJY>9NY7`vW2a@8_3y<&DFpgBkW@T`=eFK8oO
zT(y#eS}lrO`ZBfcPaK>$9u2=+_Mtg1J;2yBN4^5}D8XEx0WdGci3PQk{1UaB<UE<p
z8D`qI;@`ZcO@RWg>gCLjA8J&l$QM)18CRi~T;S54ZH(@Xo~$ZF&Js?~!|%D|ZX{Jj
z*pc-L3P~#WkVf!P51DxQ^K}CDD=Y?hNA?;=vpqJIB;E8g<Grx~XB0mj5jVCYFvz3m
zozDa>GMv4?>|>Zb{znXRL*?)Qk_|}2j?T(<E&w89hKoiSXZPI-lh9uBE~nB`%*8Y#
z0*Mb7{70kelul8q(i?D38kQ;^)BGIT#K;2Gc0O-)-=R8XhCD-fRvj!KI&~!nB-tRG
z6%kRhp-(a38yn%fxx|3}2(9<WM#3p+PG7FznDP&kSXY4la!18Kyf5=Ze)I7u!bdJ(
zu?5bwDq0yf-U=#2@w}%y&$HLPl6$#(8-eKuK@GsLtjyl^z3cs%=|~N9Fg8@Hk?0sO
zFcH?lo!^oJ&7L(?lfC9U1Xsda3V1RB)6)_cQU>SeEif3wmvZ0!0BKWR*&#M-@We+n
zd!Y-D_)%BP<+!zHM-WgMA-<|E26O*5#V&wF-H?7K{bi0t!Ja@<#T11p`z7kR9bL^I
zxiX|bgk@gG;U~e3#Vwfd>bW+G#e;04x)I0s4A&VgI(Fju_0T|cY>fvK^f~+n#M)-I
zKA?@0B{P@33F-*DS_^ETL0XcaOIRdDW5V4B_zY`Nd?M#7>oeG!Z^6Ba-dCk{J;lsy
ziiSUhyO+>s{C7)Dns`2Rf*jY`gHkmU5gRa2MLAKjTZu0mAO#oAut#vEzYF_C!?|MG
zQb|RYeITrDng~^K9yR@$=Tu)pB6?55gtAr{5~EPTj*pnXeR>Z%m;6GME0_TE(4-rw
zME3E8f@iqWlgt=}U9DMBcpA3%b9qbF|E~5M9NWd;*ghbr%TH)&^)5!yC%XZ`v?wJT
zr0zUE{g^+XtUw(U<CES&(3<db-ms$#xRyo&i|iLUnwfO!GBc62%3?D8j2l>kwXI0C
z{Oks!jZS1P^C2&m%)dTuRCl66MJ9OSvo;iOkk@*49_fS4UK2sIg}$oN5`T)WV_j~$
z#*y;(_hW2|toQ1WCxQ6-vCr-?6*3i$CB?T(Iy(Uu4B{Jjn3Fs5)HYKiwn<7UMvAhM
ztl~cib)k*j3wl0-&k>Du))lCI$!YL3LpY?I>g)lzF_iS&;YrENcF9<pGPareaKQ_u
zk;9qaZ5X`WZ}92U{WL!Q3MCp_?{n!Yd&lr1)Boh%g|Xxi1SaS4j?y{-XsDM?QC&ZG
z1C!MO!N?iNJ%CMtP+Z^lbl9d`GfLmgia1Po*<g1)0qa?4#NUk37pPWwGKaoPxaGKE
zlC=XR0&?TC4_PvoZuC)-t<rLGRTQ$iP`5hay$5HoqRo_Na|Pnr`tU#HHc07|;74Hj
z!qm;VWU@G*IT(xCLhhak8R26E?%PS0ZvBuA*UK2NMgLa-ln!h0y)n3$^pz2`t8-vW
z_$nTKKXezOjOw48006+*nwmFJO1`#&fdGWCiqkD7sasUfz;_pVMBcRwH{1}QD`~wD
z3f{p}D|=i$neFMFyRFp(a3=Mu7kqE95mqL_urHCyiPQ)u55VgID%`}l`e(;=enO4K
zO%min#Pd)4c^Ha7g-73~U~Y*Re}w@G-v)?<N(pl{g+kn$^z->RH%gj>X+U<l5{R#i
zeRb_z)DtHChjKhzSXdd2hJuFVx-!?UZ<{Bv&F=~~Smfx8c91VFSwMcY!r~gQh;_4J
zOUX5)w190A)A~Ii(mm$Wdjz7+@!Zbw)y`;qFC#onmdMN*Scb&IMQx0<4lOaVs8c46
z!IMGIM-vi&2Wu+U&QQ#StkB27f*;S9WR3)~LZK5_XE#vZ^VVau69ZT*OE>NtpO7cW
z=y9bt<!tR_1N{UV6(xx*jJ0I+P{#hKL*kwh1!Ez^Yy~o>%UHUm14b%KvB>fmkT=b_
zigd)xBgK2#{h33=bql4K;;83zkU~UB12jdN28+Nt#W^PWf(SsT=lZwNXYAXwH8p+D
z2T-wD1`6V}x`JJU5)g?l{KfbY3U{K*jkF9_;!&pOj7b7b<4O5g2XbEfm_g;#Ldp;i
zD<HAyfJD^t!cs~WCSJOZK#3RVPGsup88C`7Rf3=cAq^6&T7fs%O63r?XE~yi1!mA7
zna;{J9Qkw1-3UMA0wD%}%n!-Y!Xj9=+iWqffz)Qr7>-*QR?1x>UX&lEA{7w}jiYCK
zu00NA=#@F<vg;mbDp+u2Cm`^pB9D$SuF?1*ev~tQ*g(VAhomo-nH)TCcp+8*-Yg6!
zLi{f4nxX{d2{LSYa3e26(CocWi^ygemrkhSURI982(!+05zXQl!4QP&O!;PCt+s1Z
zWR_PxUi3&Yixw5M8nCHkDg6_=f+hk<NnN9L+cM@b=#dgGpHK)@8o3Tu8lzbqo_cep
zfkrzRw<d0IDq5HAtvFClU_=X?$v_a?KO=Yoh36u0OxZ$S!+WUQ>mB`CEgOPGL>*m*
z6L!@dqJzFD(40JE-qoB9C0HFL3|4tOJ91pPVZFhw7eu;Rz0}w$sh&XNz#XOq2TvIr
zi{~9k7L7M7L#!M~crc`I6W5)r$aG3}pV7pj%;E`lEP-KW&v?w!L}n}ma35b;S~Q7u
zWn6QD1W4v?bv$l;!Bx=gbOuF)QJieN_M$nWNG4939a7d{0~7Bj<(#O7(pw&_f1Hi_
z;$$f3(K$+laQ-ssV9rcZ7sUxH?h(ODxMpu8`~q0R@3V<5ZUR7N0B>X7i^k1P11+>c
z0#{3cU70M%f?eOzWe+MNx@4`<J(Dw-w@YU)iGhI=G%cAjvj9+hKt~smnz&+Oe@r!<
zV6?O;tlzihz6-JNHINBuQ5fDw>O6KfNE}>-%Ay*gOP`j%nlT#j2qpj#<ZF-?C*ig5
zk8s^+=$=7F69S>O3UrUg4^id>oy3kT*kQp^XA&x9M7QbcQ+v;w05OGe_zv}@RU3qi
z$Z4Z<QLq}U0KqK8lA(HvUg?_>BchBcVa$fo1DFN}YOT80bTTwDSQdcHnV+giyD-Lt
zKm&qZyc%9CTM%PKoN%g{XgsPsNM}kO0}&4>JwWdya=9)5Ash~^0(uV>M^ySibGCwz
z5$PN+Ml%p<d(<uKY~w&;a`wo<<>$>JJ^#x6tLs0KGyLupO&M$44kv!@+P4tPv-(Q)
znW!s-B&%<X1rutuz;h!IMzv0su=E`}4cMUKQY-DkXd~rMVw?iG_$~;jzM?dERP5pX
z@Y#?cvzEl%35fhKmUs0)0Sqmu3AkeDVMk@C6hoiH97G5`0^;F&iLxet#G@4-dX>k8
zp97OXN@#wwog-#6l6D~%M86snd|3)a+4OKr(u$6rle32G24##}>NW&kj7TOs3VXJL
z<NyvrA~J%pX_!2TaZ%Mn4nO))0T5>c4+@7K%h<|@DEF@-){fDoU^iaDFf32}t$^lA
zpl+iL|J2M+g9i#^{QP|PQi<;e0S?)xbB1g1_`<>Y)*w#P&y}I!c21Uq3Lc<XiLreo
zCi(N(DRN-CGN=F_tqsA*{+t+Vy@iPEhscS5^dUHMT)VyoJ8lf8MK)z>PcH;4bqI0F
zG%ZQswtudr3r3w}tQ`@KXB^ZxMGFdmidyI|W43A#-3$(6N2%hin*<U#`Vsw|3K*e*
z+Xq8pJwmOUD0D<I**m0DZ_Ezzaz5l>4IsSIG5R3xLv0o-OG?OH@C^*jHSMd|)m^=k
z8q!UF2K{Nd9S!5tX!S5^0(g18+nY#vy3{(tRE6@P4?zeK<>TM)kmGd_VPnQA7kRXf
zk$~)TlH+gOn7m=j2vbKXB-!<?3w3xF`M3AFy&?>=9II_qaR7Fbv(Ms=PC#2#w`w#W
z=rj4$Sqg431ZfI;P81F=%2aAK&1MMC_yLxuW9PMtShb@O%)R9~IY2N4HjJUXmwXHl
z=J7qh5e!n|i23lJ3Aori$qjbqY+@PGGUPbj6mN#$9u42-kWv1HK)Xf*7du4zI&Ap;
z+W-ZUfh=WXWVbD>z!yT90&Ktv@`?P+^ljzwm*<EOSQ!YkOiVo<Be{j1h`=k}S%4(M
zeFL&?6~d#gd+G70xDqLF@j_G33z6kCr3QxYN_Q?~t3=z>P~Gn%)O?gB<ADH558H4S
zE5cL+`0b!oSp)CyG_W>56rc2k8*yqZ<hgU@nH;7{RA7%vVjvt$C^wM09t&}apn3UA
z!L9@*O|!YI!hQ<rU1vA*#s^oY)!+}EJcLz(c^@;wOG6E9v7#p#04m_B3DD!iQ5N{d
zjARRIM%n#>4@7nX_L)j_!4bYw280A2s4z^0{)=R3vJz7Qz(N>0jX`Il$M5BbQk_^?
zmb=2DwO)gQyg->t3JD)mBx;B)gI6cNIfElwxl5wF%+%+FNg$PFXf~%ubeSK6L2;*k
z-ZS~l5;+l-wl6{w7Dyq}{-FV>Nn6E;24mwA6(n)DhTzooXGRi@WQFLUlc&&iO=I^T
zivywJNawc^=E=0XFqsVRR01*<Ms0+Qte(862=!p!HfwwNy3sm3nig*3uWQ6)M8nNw
z;zr&c4RH@kO+!!ZWJceGKI)c54md@nvT_ox-E^9HF1$yC=N5RO`I|yDLuRLk5~ld=
zav}M<1ZaB)`08RK$`BHIa9Y#Zka|vJvMh>cO<5HEij|eEmVK8g?IfsAJNmq~EgQff
zwRv%UW^p&6vzpem6AVaGtc3Q>G5wiRktPK3ep>JKPbd%NiVnQsT{NC%oJLL-qJ!8-
zP-h)BwRyVw&H(-~!<FC{mXwl9ti39ohEf4rK?9XBq~H>h9FwJlK~Tt)s~GW9=N{%H
zkHahpK^rHdVncAWv!My;Py*&Okv>@=Pj<^*TyrRLzrxUph})=cnGJ9$3I}j$lr?}=
zz=2t)jatn_^K@B=I_NPS=#K1BtCqqQnsGNTQfmt49zY^Or3XLIkcNQ*9`Dm{tm+te
zGzr-e8FMH~?kI6@V_qIbW6`2CEQp*Gn9!4LSZEWt8?F-u?T9E8^I{i=*dP+gY2|H`
zMGdiKCZIJ#i3pZ4sls`onRd=e0U%n#Ca`${WrC4WU~lwxS=8N0NZz<u`9cKid(NN<
zFsfY7BSEJ$B<7F*#5mA{&Zx}{jpGKTwORvcvQB+y*s1I#P`iCV?+xGzr9b*LWQvI~
zrhhpch%QjYplTjtZ|uO1%ml?(NWxbMN0G3Y$01InG)n-fngI@h=<$y!X45_xzYZ<;
z4|EpnZuD8WG#tw++2doVPQwY<VfNOCe?%wX9=RS1CSNe=7ELA~UfP(%Vg@b3Ie@4?
zWgW4dy>6!0k>0lr7=-Wgf`_F=oh+|pA(=&dOHWYHAe`np>Wv*)f@;~V6i<7s3mijc
zZ4@C`gzXJ?yt*=6ewBc>XeQn}>W!UeP|~t^p?bStnK{#S5dlPbxd9>u#Kz1>gvttK
zd3?&C7ALU8TXCu$a(pA?no^B&vR|6~ij}sirp*p(@KQZ_I24%eSY5C<cj*<5x2O(1
zQ7zNg%?Dm)>Jm0AN|Z&CLzOTfN7OG#0F=>!FqSk3<=Di4`u1Z0Ib8selOlzIIm3id
zjw-_NQX_~=kIB1OdIh4uG&6)a$uAeQ-?@5aMkFz+U%>fER>c2C))6vM$q`s74=$Kg
z<YQ)MSJLzORlSA*>iBjcvbZ75zzxgoHpoIECg8=M24@g-g`GL-3<#WPqoB05WJPdl
z87<p^%7H7OewkiI<Lq+-QYB$D?Js>W0Pv(0o1vBq6^KzM1C(IlMdk&y!2xc`xZBy4
zbk(td%vXIm4b=}{q%u%bFrCz%#{%S}5bPliB~ozxLV*SG38`@jJQSBCAc+;i@e`;N
zt0M8yifw!cxT+TeLU39XDrBSe#GhY&)-T|b;$R9N<h$qwC8QBId4VfUBKq>G^AM<x
zW{qZS-ENHrsSdf5S-ouDAX9k*0%67<Rphyn%_~k&k6OP#jbGb=pA)02JE-dS`b1O+
zr1=;C6wFyiI!Tq?@<bwOp$VQ6<}27az_&?Ed(ewMf%20<^Z~F$y);Gm$3>HI2^Lq9
zN)VG}(M5cuIe|8Czv84=B1p?kNhb&-+kCJ~Cp@^WbcRlQNgg+8V1=ctJWBX)kq0fd
zAfF&H0wQim;D^RNLt*)8>Blbt34>^ZniMi^9|qnB%ES;E!kSQ!IK8Y>A1x=m76zre
zZ2g#{aC_l);B}ZbGf3Y$5Pf?Ha!#0t3<5F`ED$p<#rl0e5CFtqc!!Oi7M~UH7I8~>
zKcNUu8%}Z~Bb?-HK-;xoKCjL8>_&0cLO;{MS&3$vA|)_!KSn*s%ug690fdLcraD7-
fD&x8tjE$WbXjs&snU8)|^B;s6yTptcKAzx$Qp3K0

literal 0
HcmV?d00001

diff --git a/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.svg b/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..e3e2dc7
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,229 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph />
+<glyph />
+<glyph unicode="&#xd;" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
+<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#x2000;" horiz-adv-x="652" />
+<glyph unicode="&#x2001;" horiz-adv-x="1304" />
+<glyph unicode="&#x2002;" horiz-adv-x="652" />
+<glyph unicode="&#x2003;" horiz-adv-x="1304" />
+<glyph unicode="&#x2004;" horiz-adv-x="434" />
+<glyph unicode="&#x2005;" horiz-adv-x="326" />
+<glyph unicode="&#x2006;" horiz-adv-x="217" />
+<glyph unicode="&#x2007;" horiz-adv-x="217" />
+<glyph unicode="&#x2008;" horiz-adv-x="163" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="326" />
+<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
+<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
+<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
+<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
+<glyph unicode="&#xe001;" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
+<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q18 -55 86 -75.5t147 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
+<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
+<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
+<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
+<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
+<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
+<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
+<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
+<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
+<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
+<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
+<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
+<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
+<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
+<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
+<glyph unicode="&#xe021;" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
+<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
+<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
+<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
+<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
+<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
+<glyph unicode="&#xe028;" d="M0 25v475l200 700h800l199 -700l1 -475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
+<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
+<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
+<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
+<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
+<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
+<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
+<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
+<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
+<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
+<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
+<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
+<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
+<glyph unicode="&#xe041;" d="M0 700l1 475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
+<glyph unicode="&#xe042;" d="M1 700l1 475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
+<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
+<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
+<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
+<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
+<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
+<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v71l471 -1q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
+<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
+<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
+<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
+<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
+<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
+<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
+<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
+<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
+<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
+<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
+<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 139t-64 210zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
+<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
+<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
+<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q61 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l567 567l-137 137l-430 -431l-146 147z" />
+<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
+<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
+<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
+<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
+<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
+<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
+<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
+<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
+<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
+<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
+<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
+<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
+<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h600v200h-600v-200z" />
+<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141 z" />
+<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
+<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM364 700h143q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5 q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-50 0 -90.5 -12t-75 -38.5t-53.5 -74.5t-19 -114zM500 300h200v100h-200 v-100z" />
+<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
+<glyph unicode="&#xe087;" d="M0 500v200h195q31 125 98.5 199.5t206.5 100.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200v-206 q149 48 201 206h-201v200h200q-25 74 -75.5 127t-124.5 77v-204h-200v203q-75 -23 -130 -77t-79 -126h209v-200h-210z" />
+<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
+<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
+<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
+<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
+<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
+<glyph unicode="&#xe093;" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
+<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
+<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
+<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
+<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
+<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5h-207q-21 0 -33 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
+<glyph unicode="&#xe102;" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111q1 1 1 6.5t-1.5 15t-3.5 17.5l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6 h-111v-100zM100 0h400v400h-400v-400zM200 900q-3 0 14 48t36 96l18 47l213 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
+<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
+<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
+<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
+<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
+<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 34 -48 36.5t-48 -29.5l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
+<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -20 -13 -28.5t-32 0.5l-94 78h-222l-94 -78q-19 -9 -32 -0.5t-13 28.5 v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
+<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
+<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
+<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
+<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
+<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
+<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
+<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
+<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
+<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
+<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
+<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
+<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
+<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
+<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM100 500v250v8v8v7t0.5 7t1.5 5.5t2 5t3 4t4.5 3.5t6 1.5t7.5 0.5h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35 q-55 337 -55 351zM1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h18l117 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5q-18 -36 -18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-8 -3 -23 -8.5 t-65 -20t-103 -25t-132.5 -19.5t-158.5 -9q-125 0 -245.5 20.5t-178.5 40.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
+<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
+<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q124 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 213l100 212h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
+<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q124 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
+<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
+<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 38l302 -1l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 17 -10.5t26.5 -26t16.5 -36.5v-526q0 -13 -86 -93.5t-94 -80.5h-341q-16 0 -29.5 20t-19.5 41l-130 339h-107q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l107 89v502l-343 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM1000 201v600h200v-600h-200z" />
+<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6.5v7.5v6.5v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
+<glyph unicode="&#xe130;" d="M2 585q-16 -31 6 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85q0 -51 -0.5 -153.5t-0.5 -148.5q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM77 565l236 339h503 l89 -100v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
+<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM298 701l2 -201h300l-2 -194l402 294l-402 298v-197h-300z" />
+<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l402 -294l-2 194h300l2 201h-300v197z" />
+<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
+<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
+<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60 q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q104 -3 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5 t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5 q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 39 2 44q31 -13 58 -14.5t39 3.5l11 4q7 36 -16.5 53.5t-64.5 28.5t-56 23q-19 -3 -37 0 q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5zM518 916q3 12 16 30t16 25q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -24 17 -66.5t17 -43.5 q-9 2 -31 5t-36 5t-32 8t-30 14zM692 1003h1h-1z" />
+<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
+<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
+<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
+<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
+<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM514 609q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
+<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -78.5 -16.5t-67.5 -51.5l-389 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23 q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60 l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
+<glyph unicode="&#xe143;" d="M80 784q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100q-71 70 -104.5 105.5t-77 89.5t-61 99 t-17.5 91zM250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-105 48.5q-74 0 -132 -83l-118 -171l-114 174q-51 80 -123 80q-60 0 -109.5 -49.5t-49.5 -118.5z" />
+<glyph unicode="&#xe144;" d="M57 353q0 -95 66 -159l141 -142q68 -66 159 -66q93 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-8 9 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141q7 -7 19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -17q47 -49 77 -100l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
+<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
+<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
+<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335q-6 1 -15.5 4t-11.5 3q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5 v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5 zM700 237q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
+<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -28 16.5 -69.5t28 -62.5t41.5 -72h241v-100h-197q8 -50 -2.5 -115 t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q33 1 103 -16t103 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221z" />
+<glyph unicode="&#xe150;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
+<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
+<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
+<glyph unicode="&#xe153;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
+<glyph unicode="&#xe154;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
+<glyph unicode="&#xe155;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
+<glyph unicode="&#xe156;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
+<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
+<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
+<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
+<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
+<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
+<glyph unicode="&#xe162;" d="M217 519q8 -19 31 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8h9q14 0 26 15q11 13 274.5 321.5t264.5 308.5q14 19 5 36q-8 17 -31 17l-301 -1q1 4 78 219.5t79 227.5q2 15 -5 27l-9 9h-9q-15 0 -25 -16q-4 -6 -98 -111.5t-228.5 -257t-209.5 -237.5q-16 -19 -6 -41 z" />
+<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
+<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
+<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
+<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 400l697 1l3 699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l249 -237l-1 697zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
+<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
+<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
+<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
+<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
+<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
+<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
+<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
+<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -116q-25 -17 -43.5 -51.5t-18.5 -65.5v-359z" />
+<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
+<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
+<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q17 18 13.5 41t-22.5 37l-192 136q-19 14 -45 12t-42 -19l-118 -118q-142 101 -268 227t-227 268l118 118q17 17 20 41.5t-11 44.5 l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
+<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-20 0 -35 14.5t-15 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
+<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
+<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
+<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
+<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
+<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
+<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
+<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
+<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
+<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
+<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
+<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
+<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
+<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300h200 l-300 -300z" />
+<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104.5t60.5 178.5q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
+<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
+<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.ttf b/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..67fa00bf83801d2fa568546b982c80d27f6ef74e
GIT binary patch
literal 41280
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

literal 0
HcmV?d00001

diff --git a/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.woff b/pelican-plugins/bootstrap-rst/bootstrap/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..8c54182aa5d4d1ab3c9171976b615c1dcb1dc187
GIT binary patch
literal 23320
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

literal 0
HcmV?d00001

diff --git a/pelican-plugins/bootstrap-rst/bootstrap/js/bootstrap.js b/pelican-plugins/bootstrap-rst/bootstrap/js/bootstrap.js
new file mode 100644
index 0000000..8ae571b
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/js/bootstrap.js
@@ -0,0 +1,1951 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') }
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.1.1
+ * http://getbootstrap.com/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      'WebkitTransition' : 'webkitTransitionEnd',
+      'MozTransition'    : 'transitionend',
+      'OTransition'      : 'oTransitionEnd otransitionend',
+      'transition'       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+
+    return false // explicit for ie8 (  ._.)
+  }
+
+  // http://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false, $el = this
+    $(this).one($.support.transition.end, function () { called = true })
+    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.1.1
+ * http://getbootstrap.com/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = $(selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.hasClass('alert') ? $this : $this.parent()
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      $parent.trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one($.support.transition.end, removeElement)
+        .emulateTransitionEnd(150) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.alert
+
+  $.fn.alert = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.1.1
+ * http://getbootstrap.com/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element  = $(element)
+    this.options   = $.extend({}, Button.DEFAULTS, options)
+    this.isLoading = false
+  }
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state = state + 'Text'
+
+    if (!data.resetText) $el.data('resetText', $el[val]())
+
+    $el[val](data[state] || this.options[state])
+
+    // push to event loop to allow forms to submit
+    setTimeout($.proxy(function () {
+      if (state == 'loadingText') {
+        this.isLoading = true
+        $el.addClass(d).attr(d, d)
+      } else if (this.isLoading) {
+        this.isLoading = false
+        $el.removeClass(d).removeAttr(d)
+      }
+    }, this), 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var changed = true
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+      if ($input.prop('type') == 'radio') {
+        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
+        else $parent.find('.active').removeClass('active')
+      }
+      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
+    }
+
+    if (changed) this.$element.toggleClass('active')
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  var old = $.fn.button
+
+  $.fn.button = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
+    var $btn = $(e.target)
+    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+    $btn.button('toggle')
+    e.preventDefault()
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.1.1
+ * http://getbootstrap.com/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      =
+    this.sliding     =
+    this.interval    =
+    this.$active     =
+    this.$items      = null
+
+    this.options.pause == 'hover' && this.$element
+      .on('mouseenter', $.proxy(this.pause, this))
+      .on('mouseleave', $.proxy(this.cycle, this))
+  }
+
+  Carousel.DEFAULTS = {
+    interval: 5000,
+    pause: 'hover',
+    wrap: true
+  }
+
+  Carousel.prototype.cycle =  function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getActiveIndex = function () {
+    this.$active = this.$element.find('.item.active')
+    this.$items  = this.$active.parent().children()
+
+    return this.$items.index(this.$active)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getActiveIndex()
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || $active[type]()
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var fallback  = type == 'next' ? 'first' : 'last'
+    var that      = this
+
+    if (!$next.length) {
+      if (!this.options.wrap) return
+      $next = this.$element.find('.item')[fallback]()
+    }
+
+    if ($next.hasClass('active')) return this.sliding = false
+
+    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
+    this.$element.trigger(e)
+    if (e.isDefaultPrevented()) return
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      this.$element.one('slid.bs.carousel', function () {
+        var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
+        $nextIndicator && $nextIndicator.addClass('active')
+      })
+    }
+
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      $next.addClass(type)
+      $next[0].offsetWidth // force reflow
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one($.support.transition.end, function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)
+        })
+        .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
+    } else {
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger('slid.bs.carousel')
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.carousel
+
+  $.fn.carousel = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
+    var $this   = $(this), href
+    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    $target.carousel(options)
+
+    if (slideIndex = $this.attr('data-slide-to')) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  })
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      $carousel.carousel($carousel.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.1.1
+ * http://getbootstrap.com/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.transitioning = null
+
+    if (this.options.parent) this.$parent = $(this.options.parent)
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var actives = this.$parent && this.$parent.find('> .panel > .in')
+
+    if (actives && actives.length) {
+      var hasData = actives.data('bs.collapse')
+      if (hasData && hasData.transitioning) return
+      actives.collapse('hide')
+      hasData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')
+      [dimension](0)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse in')
+        [dimension]('auto')
+      this.transitioning = 0
+      this.$element.trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one($.support.transition.end, $.proxy(complete, this))
+      .emulateTransitionEnd(350)
+      [dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element
+      [dimension](this.$element[dimension]())
+      [0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse')
+      .removeClass('in')
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .trigger('hidden.bs.collapse')
+        .removeClass('collapsing')
+        .addClass('collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one($.support.transition.end, $.proxy(complete, this))
+      .emulateTransitionEnd(350)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.collapse
+
+  $.fn.collapse = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data && options.toggle && option == 'show') option = !option
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
+    var $this   = $(this), href
+    var target  = $this.attr('data-target')
+        || e.preventDefault()
+        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+    var $target = $(target)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+    var parent  = $this.attr('data-parent')
+    var $parent = parent && $(parent)
+
+    if (!data || !data.transitioning) {
+      if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
+      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
+    }
+
+    $target.collapse(option)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.1.1
+ * http://getbootstrap.com/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle=dropdown]'
+  var Dropdown = function (element) {
+    $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+        // if mobile we use a backdrop because click events don't delegate
+        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
+      }
+
+      var relatedTarget = { relatedTarget: this }
+      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $parent
+        .toggleClass('open')
+        .trigger('shown.bs.dropdown', relatedTarget)
+
+      $this.focus()
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27)/.test(e.keyCode)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive || (isActive && e.keyCode == 27)) {
+      if (e.which == 27) $parent.find(toggle).focus()
+      return $this.click()
+    }
+
+    var desc = ' li:not(.divider):visible a'
+    var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)
+
+    if (!$items.length) return
+
+    var index = $items.index($items.filter(':focus'))
+
+    if (e.keyCode == 38 && index > 0)                 index--                        // up
+    if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
+    if (!~index)                                      index = 0
+
+    $items.eq(index).focus()
+  }
+
+  function clearMenus(e) {
+    $(backdrop).remove()
+    $(toggle).each(function () {
+      var $parent = getParent($(this))
+      var relatedTarget = { relatedTarget: this }
+      if (!$parent.hasClass('open')) return
+      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+      if (e.isDefaultPrevented()) return
+      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
+    })
+  }
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+    }
+
+    var $parent = selector && $(selector)
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.dropdown')
+
+      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.1.1
+ * http://getbootstrap.com/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options   = options
+    this.$element  = $(element)
+    this.$backdrop =
+    this.isShown   = null
+
+    if (this.options.remote) {
+      this.$element
+        .find('.modal-content')
+        .load(this.options.remote, $.proxy(function () {
+          this.$element.trigger('loaded.bs.modal')
+        }, this))
+    }
+  }
+
+  Modal.DEFAULTS = {
+    backdrop: true,
+    keyboard: true,
+    show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.escape()
+
+    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(document.body) // don't move modals dom position
+      }
+
+      that.$element
+        .show()
+        .scrollTop(0)
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element
+        .addClass('in')
+        .attr('aria-hidden', false)
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$element.find('.modal-dialog') // wait for modal to slide in
+          .one($.support.transition.end, function () {
+            that.$element.focus().trigger(e)
+          })
+          .emulateTransitionEnd(300) :
+        that.$element.focus().trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+
+    $(document).off('focusin.bs.modal')
+
+    this.$element
+      .removeClass('in')
+      .attr('aria-hidden', true)
+      .off('click.dismiss.bs.modal')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one($.support.transition.end, $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(300) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
+          this.$element.focus()
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keyup.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.removeBackdrop()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+        .appendTo(document.body)
+
+      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus.call(this.$element[0])
+          : this.hide.call(this)
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one($.support.transition.end, callback)
+          .emulateTransitionEnd(150) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      $.support.transition && this.$element.hasClass('fade') ?
+        this.$backdrop
+          .one($.support.transition.end, callback)
+          .emulateTransitionEnd(150) :
+        callback()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.modal
+
+  $.fn.modal = function (option, _relatedTarget) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
+    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+    if ($this.is('a')) e.preventDefault()
+
+    $target
+      .modal(option, this)
+      .one('hide', function () {
+        $this.is(':visible') && $this.focus()
+      })
+  })
+
+  $(document)
+    .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
+    .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.1.1
+ * http://getbootstrap.com/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       =
+    this.options    =
+    this.enabled    =
+    this.timeout    =
+    this.hoverState =
+    this.$element   = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.DEFAULTS = {
+    animation: true,
+    placement: 'top',
+    selector: false,
+    template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    container: false
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled  = true
+    this.type     = type
+    this.$element = $(element)
+    this.options  = this.getOptions(options)
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay,
+        hide: options.delay
+      }
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.' + this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+      var that = this;
+
+      var $tip = this.tip()
+
+      this.setContent()
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+
+      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var $parent = this.$element.parent()
+
+        var orgPlacement = placement
+        var docScroll    = document.documentElement.scrollTop || document.body.scrollTop
+        var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth()
+        var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
+        var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left
+
+        placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :
+                    placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :
+                    placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :
+                    placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+      this.hoverState = null
+
+      var complete = function() {
+        that.$element.trigger('shown.bs.' + that.type)
+      }
+
+      $.support.transition && this.$tip.hasClass('fade') ?
+        $tip
+          .one($.support.transition.end, complete)
+          .emulateTransitionEnd(150) :
+        complete()
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function (offset, placement) {
+    var replace
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  = offset.top  + marginTop
+    offset.left = offset.left + marginLeft
+
+    // $.fn.offset doesn't round pixel values
+    // so we use setOffset directly with our own function B-0
+    $.offset.setOffset($tip[0], $.extend({
+      using: function (props) {
+        $tip.css({
+          top: Math.round(props.top),
+          left: Math.round(props.left)
+        })
+      }
+    }, offset), 0)
+
+    $tip.addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      replace = true
+      offset.top = offset.top + height - actualHeight
+    }
+
+    if (/bottom|top/.test(placement)) {
+      var delta = 0
+
+      if (offset.left < 0) {
+        delta       = offset.left * -2
+        offset.left = 0
+
+        $tip.offset(offset)
+
+        actualWidth  = $tip[0].offsetWidth
+        actualHeight = $tip[0].offsetHeight
+      }
+
+      this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
+    } else {
+      this.replaceArrow(actualHeight - height, actualHeight, 'top')
+    }
+
+    if (replace) $tip.offset(offset)
+  }
+
+  Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
+    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function () {
+    var that = this
+    var $tip = this.tip()
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+      that.$element.trigger('hidden.bs.' + that.type)
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && this.$tip.hasClass('fade') ?
+      $tip
+        .one($.support.transition.end, complete)
+        .emulateTransitionEnd(150) :
+      complete()
+
+    this.hoverState = null
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function () {
+    var el = this.$element[0]
+    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
+      width: el.offsetWidth,
+      height: el.offsetHeight
+    }, this.$element.offset())
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.tip = function () {
+    return this.$tip = this.$tip || $(this.options.template)
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
+  }
+
+  Tooltip.prototype.validate = function () {
+    if (!this.$element[0].parentNode) {
+      this.hide()
+      this.$element = null
+      this.options  = null
+    }
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
+    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+  }
+
+  Tooltip.prototype.destroy = function () {
+    clearTimeout(this.timeout)
+    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
+  }
+
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data && option == 'destroy') return
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.1.1
+ * http://getbootstrap.com/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
+    placement: 'right',
+    trigger: 'click',
+    content: '',
+    template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+    $tip.find('.popover-content')[ // we use append for html objects to maintain js events
+      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
+    ](content)
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+            o.content.call($e[0]) :
+            o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return this.$arrow = this.$arrow || this.tip().find('.arrow')
+  }
+
+  Popover.prototype.tip = function () {
+    if (!this.$tip) this.$tip = $(this.options.template)
+    return this.$tip
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  var old = $.fn.popover
+
+  $.fn.popover = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data && option == 'destroy') return
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.1.1
+ * http://getbootstrap.com/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    var href
+    var process  = $.proxy(this.process, this)
+
+    this.$element       = $(element).is('body') ? $(window) : $(element)
+    this.$body          = $('body')
+    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target
+      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+      || '') + ' .nav li > a'
+    this.offsets        = $([])
+    this.targets        = $([])
+    this.activeTarget   = null
+
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
+
+    this.offsets = $([])
+    this.targets = $([])
+
+    var self     = this
+    var $targets = this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#./.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && $href.is(':visible')
+          && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        self.offsets.push(this[0])
+        self.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
+    var maxScroll    = scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets.last()[0]) && this.activate(i)
+    }
+
+    if (activeTarget && scrollTop <= offsets[0]) {
+      return activeTarget != (i = targets[0]) && this.activate(i)
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+        && this.activate( targets[i] )
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    $(this.selector)
+      .parentsUntil(this.options.target, '.active')
+      .removeClass('active')
+
+    var selector = this.selector +
+        '[data-target="' + target + '"],' +
+        this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length) {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate.bs.scrollspy')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      $spy.scrollspy($spy.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.1.1
+ * http://getbootstrap.com/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    this.element = $(element)
+  }
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.data('target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var previous = $ul.find('.active:last a')[0]
+    var e        = $.Event('show.bs.tab', {
+      relatedTarget: previous
+    })
+
+    $this.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    var $target = $(selector)
+
+    this.activate($this.parent('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $this.trigger({
+        type: 'shown.bs.tab',
+        relatedTarget: previous
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && $active.hasClass('fade')
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+        .removeClass('active')
+
+      element.addClass('active')
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu')) {
+        element.closest('li.dropdown').addClass('active')
+      }
+
+      callback && callback()
+    }
+
+    transition ?
+      $active
+        .one($.support.transition.end, next)
+        .emulateTransitionEnd(150) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  var old = $.fn.tab
+
+  $.fn.tab = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+    e.preventDefault()
+    $(this).tab('show')
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.1.1
+ * http://getbootstrap.com/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+    this.$window = $(window)
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
+
+    this.$element     = $(element)
+    this.affixed      =
+    this.unpin        =
+    this.pinnedOffset = null
+
+    this.checkPosition()
+  }
+
+  Affix.RESET = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0
+  }
+
+  Affix.prototype.getPinnedOffset = function () {
+    if (this.pinnedOffset) return this.pinnedOffset
+    this.$element.removeClass(Affix.RESET).addClass('affix')
+    var scrollTop = this.$window.scrollTop()
+    var position  = this.$element.offset()
+    return (this.pinnedOffset = position.top - scrollTop)
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var scrollHeight = $(document).height()
+    var scrollTop    = this.$window.scrollTop()
+    var position     = this.$element.offset()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+
+    if (this.affixed == 'top') position.top += scrollTop
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
+    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
+
+    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :
+                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
+                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false
+
+    if (this.affixed === affix) return
+    if (this.unpin) this.$element.css('top', '')
+
+    var affixType = 'affix' + (affix ? '-' + affix : '')
+    var e         = $.Event(affixType + '.bs.affix')
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    this.affixed = affix
+    this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+    this.$element
+      .removeClass(Affix.RESET)
+      .addClass(affixType)
+      .trigger($.Event(affixType.replace('affix', 'affixed')))
+
+    if (affix == 'bottom') {
+      this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.affix
+
+  $.fn.affix = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop)    data.offset.top    = data.offsetTop
+
+      $spy.affix(data)
+    })
+  })
+
+}(jQuery);
diff --git a/pelican-plugins/bootstrap-rst/bootstrap/js/bootstrap.min.js b/pelican-plugins/bootstrap-rst/bootstrap/js/bootstrap.min.js
new file mode 100644
index 0000000..b04a0e8
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/bootstrap/js/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown",h),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=" li:not(.divider):visible a",i=f.find("[role=menu]"+h+", [role=listbox]"+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu], [role=listbox]",f.prototype.keydown)}(jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is("a")&&b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass("fade");var e="function"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,g=f.test(e);g&&(e=e.replace(f,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n="body"==this.options.container?window.innerWidth:k.outerWidth(),o="body"==this.options.container?window.innerHeight:k.outerHeight(),p="body"==this.options.container?0:k.offset().left;e="bottom"==e&&h.top+h.height+j-m>o?"top":"top"==e&&h.top-m-j<0?"bottom":"right"==e&&h.right+i>n?"left":"left"==e&&h.left-i<p?"right":e,d.removeClass(l).addClass(e)}var q=this.getCalculatedOffset(e,h,i,j);this.applyPlacement(q,e),this.hoverState=null;var r=function(){c.$element.trigger("shown.bs."+c.type)};a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,r).emulateTransitionEnd(150):r()}},b.prototype.applyPlacement=function(b,c){var d,e=this.tip(),f=e[0].offsetWidth,g=e[0].offsetHeight,h=parseInt(e.css("margin-top"),10),i=parseInt(e.css("margin-left"),10);isNaN(h)&&(h=0),isNaN(i)&&(i=0),b.top=b.top+h,b.left=b.left+i,a.offset.setOffset(e[0],a.extend({using:function(a){e.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),e.addClass("in");var j=e[0].offsetWidth,k=e[0].offsetHeight;if("top"==c&&k!=g&&(d=!0,b.top=b.top+g-k),/bottom|top/.test(c)){var l=0;b.left<0&&(l=-2*b.left,b.left=0,e.offset(b),j=e[0].offsetWidth,k=e[0].offsetHeight),this.replaceArrow(l-f+j,j,"left")}else this.replaceArrow(k-g,k,"top");d&&e.offset(b)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
\ No newline at end of file
diff --git a/pelican-plugins/bootstrap-rst/custom.css b/pelican-plugins/bootstrap-rst/custom.css
new file mode 100644
index 0000000..825e8ac
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/custom.css
@@ -0,0 +1,76 @@
+/* Swap h2/h3 sizes */
+/* h2,.h2 { font-size: 24px; }*/
+/*h3,.h3 { font-size: 30px; }*/
+
+/* sidebar title */
+.sidebar-title { display: none; }
+.sidebar .topic-title { display: none; }
+
+/* admonition title */
+.admonition-title { display: none; }
+
+
+/* page header h1 */
+.section > h1 {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eee;
+}
+
+
+/* Sidebar */
+.sidebar ul {
+    font-size: 110%;
+    padding: 0;
+    margin: 0;
+    list-style: none;
+    /*padding-top: .5em;*/
+    padding-bottom: 1em;
+}
+
+.sidebar p {
+    padding: 0;
+    margin: 0;
+    padding-bottom: .1em;
+}
+
+.sidebar ul p {
+    text-align: left;
+    padding: 0;
+    margin: 0;
+    padding-top: .25em;
+}
+
+.sidebar ul ul {
+    font-size: 85%;
+    padding: 0;
+    margin: 0;
+    list-style: none;
+    margin-top: .5em;
+    margin-bottom: .5em;
+    margin-left: 10px;
+    padding-left: 10px;
+    border-left: 1px solid #eeeeff;
+}
+.sidebar ul ul p {
+    padding: 0;
+    margin: 0;
+    padding-top: .25em;
+}
+
+/* kbd -> .kbd */
+.kbd {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+.kbd {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+.kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #fff;
+  background-color: #333;
+  border-radius: 3px;
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
diff --git a/pelican-plugins/bootstrap-rst/directives.py b/pelican-plugins/bootstrap-rst/directives.py
new file mode 100644
index 0000000..3a02c17
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/directives.py
@@ -0,0 +1,465 @@
+# -*- coding: utf-8 -*-
+# -----------------------------------------------------------------------------
+# Bootstrap RST
+# Copyright (c) 2014, Nicolas P. Rougier
+# Distributed under the (new) BSD License. See LICENSE.txt for more info.
+# -----------------------------------------------------------------------------
+from docutils import nodes
+from docutils.parsers.rst.directives.body import BasePseudoSection
+from docutils.parsers.rst import Directive, directives, states, roles
+from docutils.parsers.rst.roles import set_classes
+from docutils.nodes import fully_normalize_name, whitespace_normalize_name
+from docutils.parsers.rst.directives.tables import Table
+from docutils.parsers.rst.roles import set_classes
+from docutils.transforms import misc
+
+
+class button(nodes.Inline, nodes.Element): pass
+class progress(nodes.Inline, nodes.Element): pass
+class alert(nodes.General, nodes.Element): pass
+class callout(nodes.General, nodes.Element): pass
+
+
+
+class Alert(Directive):
+    required_arguments, optional_arguments = 0,0
+    has_content = True
+    option_spec = {'type': directives.unchanged,
+                   'dismissable': directives.flag,
+                   'class': directives.class_option }
+
+    def run(self):
+        # Raise an error if the directive does not have contents.
+        self.assert_has_content()
+        text = '\n'.join(self.content)
+
+        # Create the node, to be populated by `nested_parse`.
+        node = alert(text, **self.options)
+        node['classes'] = ['alert']
+        node['classes'] += self.options.get('class', [])
+        if 'type' in self.options:
+            node['classes'] += ['alert-%s' % node['type']]
+        node.dismissable = False
+        if 'dismissable' in self.options:
+            node['classes'] += ['alert-dismissable']
+            node.dismissable = True
+
+        # Parse the directive contents.
+        self.state.nested_parse(self.content, self.content_offset, node)
+        return [node]
+
+
+class Callout(Directive):
+    required_arguments, optional_arguments = 0,1
+    has_content = True
+
+    def run(self):
+        # Raise an error if the directive does not have contents.
+        self.assert_has_content()
+        text = '\n'.join(self.content)
+
+        # Create the node, to be populated by `nested_parse`.
+        node = callout(self.block_text, **self.options)
+        node['classes'] = ['bs-callout']
+        if len(self.arguments):
+            type = 'bs-callout-' + self.arguments[0]
+        else:
+            type = 'bs-callout-info'
+        node['classes'] += [type]
+
+        # Parse the directive contents.
+        self.state.nested_parse(self.content, self.content_offset, node)
+        return [node]
+
+
+
+class Container(Directive):
+    optional_arguments = 1
+    final_argument_whitespace = True
+    option_spec = {'name': directives.unchanged}
+    has_content = True
+    default_class = None
+
+    def run(self):
+        self.assert_has_content()
+        text = '\n'.join(self.content)
+        try:
+            if self.arguments:
+                classes = directives.class_option(self.arguments[0])
+            else:
+                classes = self.default_class
+        except ValueError:
+            raise self.error(
+                'Invalid class attribute value for "%s" directive: "%s".'
+                % (self.name, self.arguments[0]))
+        node = nodes.container(text)
+        node['classes'].extend(classes)
+        self.add_name(node)
+        self.state.nested_parse(self.content, self.content_offset, node)
+        return [node]
+
+class Thumbnail(Container):
+    default_class = ['thumbnail']
+
+class Caption(Container):
+    default_class = ['caption']
+
+class Jumbotron(Container):
+    default_class = ['jumbotron']
+
+class PageHeader(Container):
+    default_class = ['page-header']
+
+
+
+class Lead(Directive):
+    required_arguments, optional_arguments = 0,0
+    has_content = True
+    option_spec = {'class':  directives.class_option }
+    def run(self):
+        self.assert_has_content()
+        text = '\n'.join(self.content)
+        node = nodes.container(text, **self.options)
+        node['classes'] = ['lead']
+        node['classes'] += self.options.get('class', [])
+        self.state.nested_parse(self.content, self.content_offset, node)
+        return [node]
+
+
+class Paragraph(Directive):
+    required_arguments, optional_arguments = 0,0
+    has_content = True
+    option_spec = {'class':  directives.class_option }
+
+    def run(self):
+        # Raise an error if the directive does not have contents.
+        self.assert_has_content()
+        text = '\n'.join(self.content)
+
+        # Create the node, to be populated by `nested_parse`.
+        node = nodes.paragraph(text, **self.options)
+        node['classes'] += self.options.get('class', [])
+
+        # Parse the directive contents.
+        self.state.nested_parse(self.content, self.content_offset, node)
+        return [node]
+
+
+class PageRow(Directive):
+
+    """
+    Directive to declare a container that is column-aware.
+    """
+
+    required_arguments, optional_arguments = 0,1
+    final_argument_whitespace = True
+    has_content = True
+    option_spec = {'class':  directives.class_option }
+    def run(self):
+        self.assert_has_content()
+        node = nodes.container(self.content)
+        node['classes'] = ['row']
+        if self.arguments:
+            node['classes'] += [self.arguments[0]]
+        node['classes'] += self.options.get('class', [])
+
+        self.add_name(node)
+        self.state.nested_parse(self.content, self.content_offset, node)
+        return [node]
+
+
+
+class PageColumn(Directive):
+
+    """
+    Directive to declare column with width and offset.
+    """
+
+    required_arguments, optional_arguments = 0,0
+    final_argument_whitespace = True
+    has_content = True
+    option_spec = {'width':  directives.positive_int,
+                   'offset': directives.positive_int,
+                   'push':   directives.positive_int,
+                   'pull':   directives.positive_int,
+                   'size':   lambda x: directives.choice(x, ('xs', 'sm', 'md', 'lg')),
+                   'class':  directives.class_option }
+    def run(self):
+        self.assert_has_content()
+        text = '\n'.join(self.content)
+        node = nodes.container(text)
+        width = self.options.get('width', 1)
+        size = self.options.get('size', 'md')
+        node['classes'] += ["col-%s-%d" % (size, width)]
+
+        offset = self.options.get('offset', 0)
+        if offset > 0:
+            node['classes'] += ["col-%s-offset-%d" % (size, offset)]
+
+        push = self.options.get('push', 0)
+        if push > 0:
+            node['classes'] += ["col-%s-push-%d" % (size, push)]
+
+        pull = self.options.get('pull', 0)
+        if pull > 0:
+            node['classes'] += ["col-%s-pull-%d" % (size, pull)]
+
+        node['classes'] += self.options.get('class', [])
+
+        self.add_name(node)
+        self.state.nested_parse(self.content, self.content_offset, node)
+        return [node]
+
+
+
+class Button(Directive):
+
+    """
+    Directive to declare a button
+    """
+
+    required_arguments, optional_arguments = 0,0
+    final_argument_whitespace = True
+    has_content = True
+    option_spec = {'class'   : directives.class_option,
+                   'target'  : directives.unchanged_required }
+    def run(self):
+        self.assert_has_content()
+        node = button()
+        node['target'] = self.options.get('target', None)
+        node['classes'] = self.options.get('class', [])
+        self.state.nested_parse(self.content, self.content_offset, node)
+        self.add_name(node)
+        return [node]
+
+
+
+class Progress(Directive):
+
+    """
+    Directive to declare a progress bar.
+    """
+
+    required_arguments, optional_arguments = 0,1
+    final_argument_whitespace = True
+    has_content = False
+    option_spec = { 'class'   : directives.class_option,
+                    'label'   : directives.unchanged,
+                    'value'   : directives.unchanged_required,
+                    'min'     : directives.unchanged_required,
+                    'max'     : directives.unchanged_required }
+    def run(self):
+        node = progress()
+        node['classes']   = self.options.get('class', '')
+        node['value_min'] = self.options.get('min_value', '0')
+        node['value_max'] = self.options.get('max_value', '100')
+        node['value']     = self.options.get('value', '50')
+        node['label']     = self.options.get('label', '')
+        if self.arguments:
+            node['value'] = self.arguments[0].rstrip(' %')
+            #if 'label' not in self.options:
+            #    node['label'] = self.arguments[0]
+        return [node]
+
+
+
+class Header(Directive):
+
+    """Contents of document header."""
+
+    required_arguments, optional_arguments = 0,1
+    has_content = True
+    option_spec = {'class':  directives.class_option }
+
+    def run(self):
+        self.assert_has_content()
+        header = self.state_machine.document.get_decoration().get_header()
+        header['classes'] += self.options.get('class', [])
+        if self.arguments:
+            header['classes'] += [self.arguments[0]]
+        self.state.nested_parse(self.content, self.content_offset, header)
+        return []
+
+
+class Footer(Directive):
+
+    """Contents of document footer."""
+
+    required_arguments, optional_arguments = 0,1
+    has_content = True
+    option_spec = {'class':  directives.class_option }
+
+    def run(self):
+        self.assert_has_content()
+        footer = self.state_machine.document.get_decoration().get_footer()
+        footer['classes'] += self.options.get('class', [])
+        if self.arguments:
+            footer['classes'] += [self.arguments[0]]
+        self.state.nested_parse(self.content, self.content_offset, footer)
+        return []
+
+
+
+
+
+
+
+# List item class
+# -----------------------------------------------------------------------------
+class ItemClass(Directive):
+
+    """
+    Set a "list-class" attribute on the directive content or the next element.
+    When applied to the next element, a "pending" element is inserted, and a
+    transform does the work later.
+    """
+
+    required_arguments = 1
+    optional_arguments = 0
+    final_argument_whitespace = True
+    has_content = False
+
+    def run(self):
+        try:
+            class_value = directives.class_option(self.arguments[0])
+        except ValueError:
+            raise self.error(
+                'Invalid class attribute value for "%s" directive: "%s".'
+                % (self.name, self.arguments[0]))
+
+        parent = self.state.parent
+        if isinstance(parent,nodes.list_item):
+            parent['classes'].extend(class_value)
+        return []
+
+
+# PATCH: Make a row inherit from the class attribute
+# --------------------------------------------------------------
+class ListTable(Table):
+
+    """
+    Implement tables whose data is encoded as a uniform two-level bullet list.
+    For further ideas, see
+    http://docutils.sf.net/docs/dev/rst/alternatives.html#list-driven-tables
+    """
+
+    option_spec = {'header-rows': directives.nonnegative_int,
+                   'stub-columns': directives.nonnegative_int,
+                   'widths': directives.positive_int_list,
+                   'class': directives.class_option,
+                   'name': directives.unchanged}
+
+    def run(self):
+        if not self.content:
+            error = self.state_machine.reporter.error(
+                'The "%s" directive is empty; content required.' % self.name,
+                nodes.literal_block(self.block_text, self.block_text),
+                line=self.lineno)
+            return [error]
+        title, messages = self.make_title()
+        node = nodes.Element()          # anonymous container for parsing
+        self.state.nested_parse(self.content, self.content_offset, node)
+        try:
+            num_cols, col_widths = self.check_list_content(node)
+            table_data = [[item.children for item in row_list[0]]
+                          for row_list in node[0]]
+            header_rows = self.options.get('header-rows', 0)
+            stub_columns = self.options.get('stub-columns', 0)
+            self.check_table_dimensions(table_data, header_rows, stub_columns)
+        except SystemMessagePropagation as detail:
+            return [detail.args[0]]
+        #table_node = self.build_table_from_list(table_data, col_widths,
+        #                                        header_rows, stub_columns)
+        table_node = self.build_table_from_list(node[0], col_widths,
+                                                header_rows, stub_columns)
+        table_node['classes'] += self.options.get('class', [])
+        self.add_name(table_node)
+        if title:
+            table_node.insert(0, title)
+        return [table_node] + messages
+
+    def check_list_content(self, node):
+        if len(node) != 1 or not isinstance(node[0], nodes.bullet_list):
+            error = self.state_machine.reporter.error(
+                'Error parsing content block for the "%s" directive: '
+                'exactly one bullet list expected.' % self.name,
+                nodes.literal_block(self.block_text, self.block_text),
+                line=self.lineno)
+            raise SystemMessagePropagation(error)
+        list_node = node[0]
+        # Check for a uniform two-level bullet list:
+        for item_index in range(len(list_node)):
+            item = list_node[item_index]
+            if len(item) != 1 or not isinstance(item[0], nodes.bullet_list):
+                error = self.state_machine.reporter.error(
+                    'Error parsing content block for the "%s" directive: '
+                    'two-level bullet list expected, but row %s does not '
+                    'contain a second-level bullet list.'
+                    % (self.name, item_index + 1), nodes.literal_block(
+                    self.block_text, self.block_text), line=self.lineno)
+                raise SystemMessagePropagation(error)
+            elif item_index:
+                # ATTN pychecker users: num_cols is guaranteed to be set in the
+                # "else" clause below for item_index==0, before this branch is
+                # triggered.
+                if len(item[0]) != num_cols:
+                    error = self.state_machine.reporter.error(
+                        'Error parsing content block for the "%s" directive: '
+                        'uniform two-level bullet list expected, but row %s '
+                        'does not contain the same number of items as row 1 '
+                        '(%s vs %s).'
+                        % (self.name, item_index + 1, len(item[0]), num_cols),
+                        nodes.literal_block(self.block_text, self.block_text),
+                        line=self.lineno)
+                    raise SystemMessagePropagation(error)
+            else:
+                num_cols = len(item[0])
+        col_widths = self.get_column_widths(num_cols)
+        return num_cols, col_widths
+
+    def build_table_from_list(Self, table_data, col_widths, header_rows, stub_columns):
+        table = nodes.table()
+        tgroup = nodes.tgroup(cols=len(col_widths))
+        table += tgroup
+        for col_width in col_widths:
+            colspec = nodes.colspec(colwidth=col_width)
+            if stub_columns:
+                colspec.attributes['stub'] = 1
+                stub_columns -= 1
+            tgroup += colspec
+        rows = []
+        for row in table_data:
+            row_node = nodes.row()
+            row_node['classes'] = row[0]['classes']
+            for cell in row[0]:
+                cell = cell.children
+                entry = nodes.entry()
+                entry += cell
+                row_node += entry
+            rows.append(row_node)
+        if header_rows:
+            thead = nodes.thead()
+            thead.extend(rows[:header_rows])
+            tgroup += thead
+        tbody = nodes.tbody()
+        tbody.extend(rows[header_rows:])
+        tgroup += tbody
+        return table
+
+
+
+directives.register_directive('item-class', ItemClass)
+directives.register_directive('list-table', ListTable)
+directives.register_directive('thumbnail', Thumbnail)
+directives.register_directive('caption', Caption)
+directives.register_directive('jumbotron', Jumbotron)
+directives.register_directive('page-header', PageHeader)
+directives.register_directive('lead', Lead)
+directives.register_directive('progress', Progress)
+directives.register_directive('alert', Alert)
+directives.register_directive('callout', Callout)
+directives.register_directive('row', PageRow)
+directives.register_directive('column', PageColumn)
+directives.register_directive('button', Button)
+directives.register_directive('footer', Footer)
+directives.register_directive('header', Header)
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS-buttons.txt b/pelican-plugins/bootstrap-rst/doc/CSS-buttons.txt
new file mode 100644
index 0000000..7554059
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS-buttons.txt
@@ -0,0 +1,185 @@
+Buttons
+===============================================================================
+
+Options
+-------
+
+Use any of the available button classes to quickly create a styled button.
+
+.. container:: bs-example
+
+   .. button:: Default
+
+   .. button:: Primary
+      :class: primary
+
+   .. button:: Success
+      :class: success
+
+   .. button:: Info
+      :class: info
+
+   .. button:: Warning
+      :class: warning
+
+   .. button:: Danger
+      :class: danger
+
+   .. button:: Link
+      :class: link
+
+.. code::
+   :class: highlight
+
+   .. button:: Default
+      :class: default
+
+   .. button:: Primary
+      :class: primary
+
+   .. button:: Success
+      :class: success
+
+   .. button:: Info
+      :class: info
+
+   .. button:: Warning
+      :class: warning
+
+   .. button:: Danger
+      :class: danger
+
+   .. button:: Link
+      :class: link
+
+
+Sizes
+-----
+
+Fancy larger or smaller buttons? Add :code:`large`, :code:`small`, or
+:code:`tiny` for additional sizes.
+
+.. container:: bs-example
+
+   .. button:: Large button
+      :class: primary large
+   .. button:: Large button
+      :class: large
+
+   |
+
+   .. button:: Default button
+      :class: primary
+   .. button:: Default button
+
+   |
+
+   .. button:: Small button
+      :class: primary small
+   .. button:: Small button
+      :class: small
+
+   |
+
+   .. button:: Tiny button
+      :class: primary tiny
+   .. button:: Tiny button
+      :class: tiny
+
+.. code::
+   :class: highlight
+
+   .. button:: Large button
+      :class: primary large
+
+   .. button:: Large button
+      :class: large
+
+   .. button:: Default button
+      :class: primary
+
+   .. button:: Default button
+
+   .. button:: Small button
+      :class: primary small
+
+   .. button:: Small button
+      :class: small
+
+   .. button:: Tiny button
+      :class: primary tiny
+
+   .. button:: Tiny button
+      :class: tiny
+
+Create block level buttons—those that span the full width of a parent by adding
+:code:`block`.
+
+.. container:: bs-example
+
+   .. container:: well
+
+      .. button:: Block level button
+         :class: primary large block
+
+      .. button:: Block level button
+         :class: large block
+
+.. code::
+   :class: highlight
+
+   .. button:: Block level button
+      :class: primary large block
+
+   .. button:: Block level button
+      :class: large block
+
+
+Active state
+------------
+Buttons will appear pressed (with a darker background, darker border, and inset
+shadow) when :code:`active`.
+
+.. container:: bs-example
+
+   .. button:: Primary button
+      :class: primary large active
+
+   .. button:: Button
+      :class: large active
+
+
+.. code::
+   :class: highlight
+
+   .. button:: Primary button
+      :class: primary large active
+
+   .. button:: Button
+      :class: large active
+
+
+
+Disabled state
+--------------
+
+Make buttons look unclickable by fading them back 50% using the :code:`disabled`
+option.
+
+.. container:: bs-example
+
+   .. button:: Primary button
+      :class: primary large disabled
+
+   .. button:: Button
+      :class: large disabled
+
+
+.. code::
+   :class: highlight
+
+   .. button:: Primary button
+      :class: primary large disabled
+
+   .. button:: Button
+      :class: large disabled
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS-code.txt b/pelican-plugins/bootstrap-rst/doc/CSS-code.txt
new file mode 100644
index 0000000..5e9b9ec
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS-code.txt
@@ -0,0 +1,48 @@
+Code
+===============================================================================
+
+Inline
+------
+
+Wrap inline snippets of code with `:code:`.
+
+.. container:: bs-example
+
+   For example, `<section>` should be wrapped as inline.
+
+.. code::
+   :class: highlight
+
+   For example, :code:`<section>` should be wrapped as inline.
+
+User input
+----------
+
+Use the `:kbd:` to indicate input that is typically entered via keyboard.
+
+.. container:: bs-example
+
+   To switch directories, type :kbd:`cd` followed by the name of the directory.
+
+.. code::
+   :class: highlight
+
+   To switch directories, type :kbd:`cd` followed by the name of the directory.
+
+Basic block
+-----------
+
+Use `.. code::` for multiple lines of code. Be sure to escape any angle brackets in
+the code for proper rendering.
+
+.. container:: bs-example
+
+   Sample text here...
+
+.. code::
+   :class: highlight
+
+   Sample text here...
+
+You may optionally add the pre-scrollable class, which will set a max-height
+of 350px and provide a y-axis scrollbar.
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS-grid-system.txt b/pelican-plugins/bootstrap-rst/doc/CSS-grid-system.txt
new file mode 100644
index 0000000..aa319c6
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS-grid-system.txt
@@ -0,0 +1,235 @@
+Grid system
+===============================================================================
+.. lead::
+
+   Bootstrap includes a responsive, mobile first fluid grid system that
+   appropriately scales up to 12 columns as the device or viewport size
+   increases. It includes predefined classes for easy layout options, as well
+   as powerful mixins for generating more semantic layouts.
+.. ----------------------------------------------------------------------------
+
+
+
+Introduction
+------------
+
+Grid systems are used for creating page layouts through a series of rows and
+columns that house your content. Here's how the Bootstrap grid system works:
+
+* Rows must be placed within a `.container` (fixed-width) or `.container-fluid`
+  (full-width) for proper alignment and padding.
+* Use rows to create horizontal groups of columns.
+* Content should be placed within columns, and only columns may be immediate children of rows.
+* Predefined grid classes like `.row` and `.col-xs-4` are available for quickly
+  making grid layouts. Less mixins can also be used for more semantic layouts.
+* Columns create gutters (gaps between column content) via padding. That
+  padding is offset in rows for the first and last column via negative margin
+  on `.row` s.
+* Grid columns are created by specifying the number of twelve available columns
+  you wish to span. For example, three equal columns would use three `.col-xs-4`.
+  Look to the examples for applying these principles to your code.
+
+Look to the examples for applying these principles to your code.
+
+Media queries
+-------------
+
+We use the following media queries in our Less files to create the key
+breakpoints in our grid system.
+
+.. code:: css
+   :class: highlight
+
+   /* Extra small devices (phones, less than 768px) */
+   /* No media query since this is the default in Bootstrap */
+
+   /* Small devices (tablets, 768px and up) */
+   @media (min-width: @screen-sm-min) { ... }
+
+   /* Medium devices (desktops, 992px and up) */
+   @media (min-width: @screen-md-min) { ... }
+
+   /* Large devices (large desktops, 1200px and up) */
+   @media (min-width: @screen-lg-min) { ... }
+
+We occasionally expand on these media queries to include a max-width to limit
+CSS to a narrower set of devices.
+
+.. code:: css
+   :class: highlight
+
+   @media (max-width: @screen-xs-max) { ... }
+   @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }
+   @media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... }
+   @media (min-width: @screen-lg-min) { ... }
+
+
+Grid options
+------------
+
+See how aspects of the Bootstrap grid system work across multiple devices with
+a handy table.
+
+.. table::
+   :class: table table-bordered table-striped
+
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   |                     | Extra small devices | Small devices    | Medium devices    | Large devices      |
+   |                     | Phones (<768px)     | Tablets (≥768px) | Desktops (≥992px) | Desktops (≥1200px) |
+   +=====================+=====================+==================+===================+====================+
+   | **Grid Behavior**   | Horizontal at all   | Collapsed to start, horizontal above breakpoints          |
+   |                     | times               |                                                           |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   | **Container Width** | None (auto)         | 750px            | 970px             | 1170px             |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   | **Class Predix**    | `col-xs-`           | `col-sd-`        | `col-md-`         | `col-lg-`          |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   | **# Columns**       | 12                                                                              |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   | **Column Width**    | :text-muted:`Auto`  | 60px             | 78px              | 95px               |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   | **Gutter width**    | 30px (15px on each side of a column)                                            |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   | **Netsable**        | Yes                                                                             |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   | **Offsets**         | Yes                                                                             |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+   | **Column Ordering** | Yes                                                                             |
+   +---------------------+---------------------+------------------+-------------------+--------------------+
+
+Grid classes apply to devices with screen widths greater than or equal to the
+breakpoint sizes, and override grid classes targeted at smaller
+devices. Therefore, applying any `.col-md-` class to an element will not only
+affect its styling on medium devices but also on large devices if a `.col-lg-`
+class is not present.
+
+
+Example: Stacked-to-horizontal
+------------------------------
+
+Using a single set of `.col-md-*` grid classes, you can create a basic grid
+system that starts out stacked on mobile devices and tablet devices (the extra
+small to small range) before becoming horizontal on desktop (medium)
+devices. Place grid columns in any `.row`.
+
+.. row:: show-grid
+
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+   .. column:: .col-md-1
+
+.. row:: show-grid
+
+   .. column:: .col-md-8
+      :width: 8
+   .. column:: .col-md-4
+      :width: 4
+
+.. row:: show-grid
+
+   .. column:: .col-md-4
+      :width: 4
+   .. column:: .col-md-4
+      :width: 4
+   .. column:: .col-md-4
+      :width: 4
+
+.. row:: show-grid
+
+   .. column:: .col-md-6
+      :width: 6
+   .. column:: .col-md-6
+      :width: 6
+
+
+Offsetting columns
+------------------
+
+Move columns to the right using `.col-md-offset-*` classes. These classes
+increase the left margin of a column by * columns. For example,
+`.col-md-offset-4` moves `.col-md-4` over four columns.
+
+
+.. row:: show-grid
+
+   .. column:: .col-md-4
+      :width: 4
+   .. column:: .col-md-4
+      :width: 4
+      :offset: 4
+
+
+.. row:: show-grid
+
+   .. column:: .col-md-3
+      :width: 3
+      :offset: 3
+
+   .. column:: .col-md-3
+      :width: 3
+      :offset: 3
+
+
+.. row:: show-grid
+
+   .. column:: .col-md-6
+      :width: 6
+      :offset: 3
+
+
+Nesting columns
+---------------
+
+To nest your content with the default grid, add a new `.row` and set of
+`.col-md-*` columns within an existing `.col-md-*` column. Nested rows should
+include a set of columns that add up to 12 or less.
+
+.. row:: show-grid
+
+   .. column:: Level 1: .col-md-9
+      :width: 9
+
+      .. row:: show-grid
+
+         .. column:: Level 2: .col-md-6
+            :width: 6
+         .. column:: Level 2: .col-md-6
+            :width: 6
+
+
+Column ordering
+---------------
+
+Easily change the order of our built-in grid columns with .col-md-push-* and
+.col-md-pull-* modifier classes.
+
+
+.. row:: show-grid
+
+   .. column:: .col-md-9 . col-push-3
+      :width: 9
+      :push: 3
+
+   .. column:: .col-md-3 . col-pull-9
+      :width: 3
+      :pull: 9
+
+.. code::
+   :class: highlight
+
+   .. column:: .col-md-9 . col-push-3
+      :width: 9
+      :push: 3
+
+   .. column:: .col-md-3 . col-pull-9
+      :width: 3
+      :pull: 9
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS-helpers.txt b/pelican-plugins/bootstrap-rst/doc/CSS-helpers.txt
new file mode 100644
index 0000000..f7aa5ab
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS-helpers.txt
@@ -0,0 +1,68 @@
+Helper classes
+===============================================================================
+
+Contextual colors
+-----------------
+Convey meaning through color with a handful of emphasis utility classes. These
+may also be applied to links and will darken on hover just like our default
+link styles.
+
+.. container:: bs-example
+
+   | :text-muted:`Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.`
+   | :text-primary:`Nullam id dolor id nibh ultricies vehicula ut id elit.`
+   | :text-success:`Duis mollis, est non commodo luctus, nisi erat porttitor ligula.`
+   | :text-info:`Maecenas sed diam eget risus varius blandit sit amet non magna.`
+   | :text-warning:`Etiam porta sem malesuada magna mollis euismod.`
+   | :text-danger:`Donec ullamcorper nulla non metus auctor fringilla.`
+
+.. code:: rst
+   :class: highlight
+
+   :text-muted:`Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.`
+   :text-primary:`Nullam id dolor id nibh ultricies vehicula ut id elit.`
+   :text-success:`Duis mollis, est non commodo luctus, nisi erat porttitor ligula.`
+   :text-info:`Maecenas sed diam eget risus varius blandit sit amet non magna.`
+   :text-warning:`Etiam porta sem malesuada magna mollis euismod.`
+   :text-danger:`Donec ullamcorper nulla non metus auctor fringilla.`
+
+
+
+Contextual background
+---------------------
+
+Similar to the contextual text color classes, easily set the background of an
+element to any contextual class. Anchor components will darken on hover, just
+like the text classes.
+
+
+.. container:: bs-example bs-example-bg-classes
+
+   .. container:: bg-primary
+
+      Nullam id dolor id nibh ultricies vehicula ut id elit.
+
+   .. container:: bg-success
+
+      Duis mollis, est non commodo luctus, nisi erat porttitor ligula.
+
+   .. container:: bg-info
+
+      Maecenas sed diam eget risus varius blandit sit amet non magna.
+
+   .. container:: bg-warning
+
+      Etiam porta sem malesuada magna mollis euismod.
+
+   .. container:: bg-danger
+
+      Donec ullamcorper nulla non metus auctor fringilla.
+
+.. code:: rst
+   :class: highlight
+
+   :bg-primary:`Nullam id dolor id nibh ultricies vehicula ut id elit.`
+   :bg-success:`Duis mollis, est non commodo luctus, nisi erat porttitor ligula.`
+   :bg-info:`Maecenas sed diam eget risus varius blandit sit amet non magna.`
+   :bg-warning:`Etiam porta sem malesuada magna mollis euismod.`
+   :bg-danger:`Donec ullamcorper nulla non metus auctor fringilla.`
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS-images.txt b/pelican-plugins/bootstrap-rst/doc/CSS-images.txt
new file mode 100644
index 0000000..a38425a
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS-images.txt
@@ -0,0 +1,52 @@
+Images
+===============================================================================
+
+Responsive images
+-----------------
+
+Images in Bootstrap 3 can be made responsive-friendly via the addition of the
+.img-responsive class. This applies max-width: 100%; and height: auto; to the
+image so that it scales nicely to the parent element.
+
+
+.. code::
+   :class: highlight
+
+   .. image:: image.png
+      :class: img-responsive
+
+Image shapes
+------------
+
+Add classes to an `<img>` element to easily style images in any project.
+
+
+.. callout:: danger
+
+   :h4:`Cross-browser compatibility`
+   Keep in mind that Internet Explorer 8 lacks support for rounded corners.
+
+
+.. container:: bs-example
+
+   .. image:: 140x140.png
+      :class: img-rounded
+
+   .. image:: 140x140.png
+      :class: img-circle
+
+   .. image:: 140x140.png
+      :class: img-thumbnail
+
+
+.. code::
+   :class: highlight
+
+   .. image:: 140x140.png
+      :class: img-rounded
+
+   .. image:: 140x140.png
+      :class: img-circle
+
+   .. image:: 140x140.png
+      :class: img-thumbnail
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS-overview.txt b/pelican-plugins/bootstrap-rst/doc/CSS-overview.txt
new file mode 100644
index 0000000..c358591
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS-overview.txt
@@ -0,0 +1,92 @@
+Overview
+===============================================================================
+
+.. lead::
+
+   Get the lowdown on the key pieces of Bootstrap's infrastructure, including
+   our approach to better, faster, stronger web development.
+
+
+
+HTML5 doctype
+-------------
+
+Bootstrap makes use of certain HTML elements and CSS properties that require
+the use of the HTML5 doctype. Include it at the beginning of all your projects.
+
+.. code:: html
+   :class: highlight
+
+   <!DOCTYPE html>
+   <html lang="en">
+   ...
+   </html>
+
+
+Mobile first
+-------------
+
+With Bootstrap 2, we added optional mobile friendly styles for key aspects of
+the framework. With Bootstrap 3, we've rewritten the project to be mobile
+friendly from the start. Instead of adding on optional mobile styles, they're
+baked right into the core. In fact, **Bootstrap is mobile first**. Mobile first
+styles can be found throughout the entire library instead of in separate files.
+
+To ensure proper rendering and touch zooming, **add the viewport meta tag** to
+your :code:`<head>`.
+
+.. code:: html
+   :class: highlight
+
+   <meta name="viewport" content="width=device-width, initial-scale=1">
+
+You can disable zooming capabilities on mobile devices by adding
+:code:`user-scalable=no` to the viewport meta tag. This disables zooming,
+meaning users are only able to scroll, and results in your site feeling a bit
+more like a native application. Overall, we don't recommend this on every site,
+so use caution!
+
+.. code:: html
+   :class: highlight
+
+   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+
+Typography and links
+--------------------
+
+Bootstrap sets basic global display, typography, and link styles. Specifically,
+we:
+
+* Set :code:`background-color: #fff`; on the body
+* Use the :code:`@font-family-base`, :code:`@font-size-base`, and
+  :code:`@line-height-base` attributes as our typographic base
+* Set the global link color via :code:`@link-color` and apply link underlines
+  only on :hover
+
+These styles can be found within :code:`scaffolding.less`.
+
+
+Normalize.css
+-------------
+
+For improved cross-browser rendering, we use `Normalize.css
+<http://necolas.github.io/normalize.css/>`_, a project by `Nicolas Gallagher
+<https://twitter.com/necolas>`_ and `Jonathan Neal <https://twitter.com/jon_neal>`_.
+
+
+Containers
+----------
+
+Easily center a page's contents by wrapping its contents in a
+.container. Containers set width at various media query breakpoints to match
+our grid system.
+
+Note that, due to padding and fixed widths, containers are not nestable by
+default.
+
+.. code::
+   :class: highlight
+
+   .. container::
+
+      ...
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS-tables.txt b/pelican-plugins/bootstrap-rst/doc/CSS-tables.txt
new file mode 100644
index 0000000..3a1bff8
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS-tables.txt
@@ -0,0 +1,292 @@
+Tables
+======
+
+Basic example
+-------------
+
+For basic styling—light padding and only horizontal dividers—add the base class
+.table to any `<table>`. It may seem super redundant, but given the widespread
+use of tables for other plugins like calendars and date pickers, we've opted to
+isolate our custom table styles.
+
+.. container:: bs-example
+
+   = ========== ========= ========
+   # First Name Last Name Username
+   = ========== ========= ========
+   1 Mark       Otto      @mdo
+   2 Jacob      Thornton  @fat
+   3 Larry      the Bird  @twitter
+   = ========== ========= ========
+
+.. code::
+   :class: highlight
+
+   = ========== ========= ========
+   # First Name Last Name Username
+   = ========== ========= ========
+   1 Mark       Otto      @mdo
+   2 Jacob      Thornton  @fat
+   3 Larry      the Bird  @twitter
+   = ========== ========= ========
+
+
+Striped rows
+------------
+
+Use `table-striped` to add zebra-striping to any table row within the `<tbody>`.
+
+.. ----------------------------------------------------------------------------
+.. callout:: danger
+
+   :h4:`Cross-browser compatibility`
+   Striped tables are styled via the `:nth-child` CSS selector, which is not
+   available in Internet Explorer 8.
+.. ----------------------------------------------------------------------------
+
+
+.. container:: bs-example
+
+   .. class:: table-striped
+
+      = ========== ========= ========
+      # First Name Last Name Username
+      = ========== ========= ========
+      1 Mark       Otto      @mdo
+      2 Jacob      Thornton  @fat
+      3 Larry      the Bird  @twitter
+      = ========== ========= ========
+
+.. code::
+   :class: highlight
+
+   .. class:: table-striped
+
+      = ========== ========= ========
+      # First Name Last Name Username
+      = ========== ========= ========
+      1 Mark       Otto      @mdo
+      2 Jacob      Thornton  @fat
+      3 Larry      the Bird  @twitter
+      = ========== ========= ========
+
+Bordered table
+--------------
+
+Add `table-bordered` for borders on all sides of the table and cells.
+
+.. container:: bs-example
+
+   .. class:: table-bordered table-striped
+
+      = ========== ========= ========
+      # First Name Last Name Username
+      = ========== ========= ========
+      1 Mark       Otto      @mdo
+      2 Jacob      Thornton  @fat
+      3 Larry      the Bird  @twitter
+      = ========== ========= ========
+
+.. code::
+   :class: highlight
+
+   .. class:: table-bordered table-striped
+
+      = ========== ========= ========
+      # First Name Last Name Username
+      = ========== ========= ========
+      1 Mark       Otto      @mdo
+      2 Jacob      Thornton  @fat
+      3 Larry      the Bird  @twitter
+      = ========== ========= ========
+
+Hover rows
+----------
+
+Add `table-hover` to enable a hover state on table rows within a `<tbody>`.
+
+.. container:: bs-example
+
+   .. class:: table-hover
+
+      = ========== ========= ========
+      # First Name Last Name Username
+      = ========== ========= ========
+      1 Mark       Otto      @mdo
+      2 Jacob      Thornton  @fat
+      3 Larry      the Bird  @twitter
+      = ========== ========= ========
+
+.. code::
+   :class: highlight
+
+   .. class:: table-hover
+
+      = ========== ========= ========
+      # First Name Last Name Username
+      = ========== ========= ========
+      1 Mark       Otto      @mdo
+      2 Jacob      Thornton  @fat
+      3 Larry      the Bird  @twitter
+      = ========== ========= ========
+
+
+Condensed table
+---------------
+
+Add `table-condensed` to make tables more compact by cutting cell padding in half.
+
+.. container:: bs-example
+
+   .. class:: table-condensed
+
+      = ========== ========= ========
+      # First Name Last Name Username
+      = ========== ========= ========
+      1 Mark       Otto      @mdo
+      2 Jacob      Thornton  @fat
+      3 Larry      the Bird  @twitter
+      = ========== ========= ========
+
+.. code::
+   :class: highlight
+
+   .. class:: table-condensed
+
+      = ========== ========= ========
+      # First Name Last Name Username
+      = ========== ========= ========
+      1 Mark       Otto      @mdo
+      2 Jacob      Thornton  @fat
+      3 Larry      the Bird  @twitter
+      = ========== ========= ========
+
+Contextual classes
+------------------
+
+Use contextual classes to color table rows or individual cells.
+
+.. container:: bs-example
+
+   .. list-table::
+      :widths: 10 30 30 30
+
+      * - #
+        - Column heading
+        - Column heading
+        - Column heading
+
+      * .. class:: active
+
+           - 1
+           - Column content
+           - Column content
+           - Column content
+
+      * - 2
+        - Column heading
+        - Column heading
+        - Column heading
+
+      * .. class:: success
+
+           - 3
+           - Column content
+           - Column content
+           - Column content
+
+      * - 4
+        - Column heading
+        - Column heading
+        - Column heading
+
+      * .. class:: warning
+
+           - 5
+           - Column content
+           - Column content
+           - Column content
+
+      * - 6
+        - Column heading
+        - Column heading
+        - Column heading
+
+
+      * .. class:: danger
+
+           - 7
+           - Column content
+           - Column content
+           - Column content
+
+      * - 8
+        - Column heading
+        - Column heading
+        - Column heading
+
+
+      * .. class:: info
+
+           - 9
+           - Column content
+           - Column content
+           - Column content
+
+.. code::
+   :class: highlight
+
+   .. list-table::
+      :widths: 10 30 30 30
+
+      * - #
+        - Column heading
+        - Column heading
+        - Column heading
+
+      * .. class:: active
+
+           - 1
+           - Column content
+           - Column content
+           - Column content
+
+
+
+Responsive tables
+-----------------
+
+Create responsive tables by wrapping any `.table` in `.table-responsive` to
+make them scroll horizontally up to small devices (under 768px). When viewing
+on anything larger than 768px wide, you will not see any difference in these
+tables.
+
+
+.. container:: bs-example
+
+   .. container:: table-responsive
+
+      .. class:: table-bordered table-striped
+
+         = ============= ============= ============= ============= =============
+         # Table heading Table heading Table heading Table heading Table heading
+         = ============= ============= ============= ============= =============
+         1 Table cell    Table cell    Table cell    Table cell    Table cell
+         2 Table cell    Table cell    Table cell    Table cell    Table cell
+         3 Table cell    Table cell    Table cell    Table cell    Table cell
+         = ============= ============= ============= ============= =============
+
+.. code::
+   :class: highlight
+
+   .. container:: table-responsive
+
+      .. class:: table-bordered table-striped
+
+         = ============= ============= ============= ============= =============
+         # Table heading Table heading Table heading Table heading Table heading
+         = ============= ============= ============= ============= =============
+         1 Table cell    Table cell    Table cell    Table cell    Table cell
+         2 Table cell    Table cell    Table cell    Table cell    Table cell
+         3 Table cell    Table cell    Table cell    Table cell    Table cell
+         = ============= ============= ============= ============= =============
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS-typography.txt b/pelican-plugins/bootstrap-rst/doc/CSS-typography.txt
new file mode 100644
index 0000000..744dc2c
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS-typography.txt
@@ -0,0 +1,441 @@
+Typography
+===============================================================================
+
+Headings
+--------
+
+All HTML headings, :code:`<h1>` through :code:`<h6>`, are available. :code:`.h1`
+through :code:`.h6` classes are also available, for when you want to match the font
+styling of a heading but still want your text to be displayed inline.
+
+.. container:: bs-example
+
+   .. list-table::
+      :widths: 75 25
+      :class: table
+
+      * - :h1:`h1. Bootstrap heading`
+        - **Semibold 36 px**
+      * - :h2:`h2. Bootstrap heading`
+        - **Semibold 30 px**
+      * - :h3:`h3. Bootstrap heading`
+        - **Semibold 24 px**
+      * - :h4:`h4. Bootstrap heading`
+        - **Semibold 18 px**
+      * - :h5:`h5. Bootstrap heading`
+        - **Semibold 14 px**
+      * - :h6:`h6. Bootstrap heading`
+        - **Semibold 12 px**
+
+.. code::
+   :class: highlight
+
+   h1. Bootstrap heading
+   =====================
+
+   h2. Bootstrap heading
+   ---------------------
+
+   h3. Bootstrap heading
+   +++++++++++++++++++++
+
+   h4. Bootstrap heading
+   ~~~~~~~~~~~~~~~~~~~~~
+
+   h5. Bootstrap heading
+   *********************
+
+   h6. Bootstrap heading
+   ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
+
+Create lighter, secondary text in any heading with a generic :code:`small` tag.
+
+
+.. container:: bs-example
+
+   .. list-table::
+      :widths: 100
+      :class: table
+
+      * - :h1:`h1. Bootstrap heading <small>Secondary text</small>`
+      * - :h2:`h2. Bootstrap heading <small>Secondary text</small>`
+      * - :h3:`h3. Bootstrap heading <small>Secondary text</small>`
+      * - :h4:`h4. Bootstrap heading <small>Secondary text</small>`
+      * - :h5:`h5. Bootstrap heading <small>Secondary text</small>`
+      * - :h6:`h6. Bootstrap heading <small>Secondary text</small>`
+
+.. code::
+   :class: highlight
+
+   h1. Bootstrap heading :small:`Secondary text`
+   =============================================
+
+   h2. Bootstrap heading :small:`Secondary text`
+   ---------------------------------------------
+
+   h3. Bootstrap heading :small:`Secondary text`
+   +++++++++++++++++++++++++++++++++++++++++++++
+
+   h4. Bootstrap heading :small:`Secondary text`
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+   h5. Bootstrap heading :small:`Secondary text`
+   *********************************************
+
+   h6. Bootstrap heading :small:`Secondary text`
+   ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
+
+
+Body copy
+---------
+
+Bootstrap's global default `font-size` is **14px**, with a line-height of
+**1.428**. This is applied to the `<body>` and all paragraphs. In addition,
+`<p>` (paragraphs) receive a bottom margin of half their computed line-height
+(10px by default).
+
+
+.. container:: bs-example
+
+   Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque
+   penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id
+   dolor id nibh ultricies vehicula.
+
+   Cum sociis natoque penatibus et magnis dis parturient montes, nascetur
+   ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis
+   mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia
+   odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.
+
+   Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id
+   elit non mi porta gravida at eget metus. Duis mollis, est non commodo
+   luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.
+
+.. code::
+   :class: highlight
+
+   ...
+
+
+Lead body copy
+++++++++++++++
+
+Make a paragraph stand out by adding lead.
+
+
+.. container:: bs-example
+
+   .. lead:: Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor
+             auctor. Duis mollis, est non commodo luctus.
+
+
+.. code::
+   :class: highlight
+
+
+   .. lead:: Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor
+             auctor. Duis mollis, est non commodo luctus.
+
+
+Built with Less
++++++++++++++++
+
+The typographic scale is based on two Less variables in **variables.less**:
+`@font-size-base` and `@line-height-base`. The first is the base font-size used
+throughout and the second is the base line-height. We use those variables and
+some simple math to create the margins, paddings, and line-heights of all our
+type and more. Customize them and Bootstrap adapts.
+
+
+Emphasis
+--------
+Make use of HTML's default emphasis tags with lightweight styles.
+
+
+Small text
+++++++++++
+
+For de-emphasizing inline or blocks of text, use the `small` tag to set text at
+85% the size of the parent. Heading elements receive their own font-size for
+nested `small` elements.
+
+.. container:: bs-example
+
+   :small:`This line of text is meant to be treated as fine print.`
+
+
+.. code::
+   :class: highlight
+
+   :small:`This line of text is meant to be treated as fine print.`
+
+
+Bold
+++++
+
+For emphasizing a snippet of text with a heavier font-weight.
+
+.. container:: bs-example
+
+   The following snippet of text is **rendered as bold text**.
+
+.. code::
+   :class: highlight
+
+   The following snippet of text is **rendered as bold text**.
+
+
+Italics
++++++++
+
+For emphasizing a snippet of text with italics.
+
+.. container:: bs-example
+
+   The following snippet of text is *rendered as italicized text*.
+
+.. code::
+   :class: highlight
+
+   The following snippet of text is *rendered as italicized text*.
+
+
+.. admonition:: :h4:`Alternate elements`
+   :class: bs-callout bs-callout-info
+
+   Feel free to use `<b>` and `<i>` in HTML5. `<b>` is meant to highlight words or
+   phrases without conveying additional importance while `<i>` is mostly for
+   voice, technical terms, etc.
+
+
+Alignment classes
++++++++++++++++++
+
+Easily realign text to components with text alignment classes.
+
+.. container:: bs-example
+
+   .. class:: text-left
+
+      Left aligned text.
+
+   .. class:: text-center
+
+      Center aligned text.
+
+   .. class:: text-right
+
+      Right aligned text.
+
+   .. class:: text-justify
+
+      Justified text.
+
+
+.. code::
+   :class: highlight
+
+   .. class:: text-left
+
+      Left aligned text.
+
+   .. class:: text-center
+
+      Center aligned text.
+
+   .. class:: text-right
+
+      Right aligned text.
+
+   .. class:: text-justify
+
+      Justified text.
+
+
+
+Lists
+-----
+
+Unordered
++++++++++
+
+A list of items in which the order does *not* explicitly matter.
+
+.. container:: bs-example
+
+   * Lorem ipsum dolor sit amet
+   * Consectetur adipiscing elit
+   * Integer molestie lorem at massa
+   * Facilisis in pretium nisl aliquet
+   * Nulla volutpat aliquam velit
+
+     * Phasellus iaculis neque
+     * Purus sodales ultricies
+     * Vestibulum laoreet porttitor sem
+     * Ac tristique libero volutpat at
+
+   * Faucibus porta lacus fringilla vel
+   * Aenean sit amet erat nunc
+   * Eget porttitor lorem
+
+.. code::
+   :class: highlight
+
+   * Lorem ipsum dolor sit amet
+   * Consectetur adipiscing elit
+     ...
+
+
+Ordered
++++++++
+
+A list of items in which the order *does* matter.
+
+.. container:: bs-example
+
+   1. Lorem ipsum dolor sit amet
+   #. Consectetur adipiscing elit
+   #. Integer molestie lorem at massa
+   #. Facilisis in pretium nisl aliquet
+   #. Nulla volutpat aliquam velit
+   #. Faucibus porta lacus fringilla vel
+   #. Aenean sit amet erat nunc
+   #. Eget porttitor lorem
+
+.. code::
+   :class: highlight
+
+   1. Lorem ipsum dolor sit amet
+   #. Consectetur adipiscing elit
+      ...
+
+Unstyled
+++++++++
+
+Remove the default `list-style` and left margin on list items (immediate children
+only). **This only applies to immediate children list items**, meaning you will
+need to add the class for any nested lists as well.
+
+.. container:: bs-example
+
+   .. class:: list-unstyled
+
+      * Lorem ipsum dolor sit amet
+      * Consectetur adipiscing elit
+      * Integer molestie lorem at massa
+      * Facilisis in pretium nisl aliquet
+      * Nulla volutpat aliquam velit
+
+        * Phasellus iaculis neque
+        * Purus sodales ultricies
+        * Vestibulum laoreet porttitor sem
+        * Ac tristique libero volutpat at
+
+      * Faucibus porta lacus fringilla vel
+      * Aenean sit amet erat nunc
+      * Eget porttitor lorem
+
+.. code::
+   :class: highlight
+
+   .. class:: list-unstyled
+
+      * Lorem ipsum dolor sit amet
+      * Consectetur adipiscing elit
+        ...
+
+
+Inline
+++++++
+
+.. container:: bs-example
+
+   .. class:: list-inline
+
+      * Lorem ipsum
+      * Phasellus iaculis
+      * Nulla volutpat
+
+.. code::
+   :class: highlight
+
+   .. class:: list-inline
+
+      * Lorem ipsum
+      * Phasellus iaculis
+      * Nulla volutpat
+
+
+Description
++++++++++++
+
+.. container:: bs-example
+
+   A list of terms with their associated descriptions.
+
+   Description lists
+    A description list is perfect for defining terms.
+
+   Euismod
+    Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
+    Donec id elit non mi porta gravida at eget metus.
+
+   Malesuada porta
+    Etiam porta sem malesuada magna mollis euismod.
+
+
+.. code::
+   :class: highlight
+
+   Description lists
+    A description list is perfect for defining terms.
+
+   Euismod
+    Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
+    Donec id elit non mi porta gravida at eget metus.
+
+   Malesuada porta
+    Etiam porta sem malesuada magna mollis euismod.
+
+
+Horizontal description
+~~~~~~~~~~~~~~~~~~~~~~
+
+Make terms and descriptions in <dl> line up side-by-side. Starts off stacked
+like default <dl>s, but when the navbar expands, so do these.
+
+.. container:: bs-example
+
+   .. class:: dl-horizontal
+
+      Description lists
+       A description list is perfect for defining terms.
+
+      Euismod
+       Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
+       Donec id elit non mi porta gravida at eget metus.
+
+      Malesuada porta
+       Etiam porta sem malesuada magna mollis euismod.
+
+.. code::
+   :class: highlight
+
+   .. class:: dl-horizontal
+
+      Description lists
+       A description list is perfect for defining terms.
+
+      Euismod
+       Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
+       Donec id elit non mi porta gravida at eget metus.
+
+      Malesuada porta
+       Etiam porta sem malesuada magna mollis euismod.
+
+
+.. admonition:: :h4:`Auto-truncating`
+   :class: bs-callout bs-callout-info
+
+   Horizontal description lists will truncate terms that are too long to fit in
+   the left column with `text-overflow`. In narrower viewports, they will change
+   to the default stacked layout.
diff --git a/pelican-plugins/bootstrap-rst/doc/CSS.rst b/pelican-plugins/bootstrap-rst/doc/CSS.rst
new file mode 100644
index 0000000..44bae15
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/CSS.rst
@@ -0,0 +1,62 @@
+.. ----------------------------------------------------------------------------
+.. default-role:: code
+.. include:: bootstrap-roles.txt
+.. include:: bootstrap-glyphs.txt
+.. ----------------------------------------------------------------------------
+
+.. ----------------------------------------------------------------------------
+.. header::
+
+   .. container:: bs-docs-header
+
+      .. container:: container
+
+         :h1:`Bootstrap RST`
+
+         Overview of the project, its contents, and how to get started with a
+         simple template.
+.. ----------------------------------------------------------------------------
+
+.. ----------------------------------------------------------------------------
+.. footer:: bs-docs-footer
+
+   Bootstrap RST - Copyright (c) 2014 Nicolas P. Rougier
+
+   `Bootstrap <http://getbootstrap.com>`_ - Copyright (c) 2011-2014 Twitter, Inc
+
+   Code licensed under MIT, documentation under CC BY 3.0.
+
+   `Get page source <doc/CSS.rst>`_
+
+   .. class:: bs-docs-footer-links muted
+
+      * `GitHub <https://github.com/rougier/bootstrap-rst>`_
+      * ·
+      * `Examples <examples.html>`_
+      * ·
+      * `Documentation <about.html>`_
+      * ·
+      * `About <about.html>`_
+      * ·
+      * `Issues <https://github.com/rougier/bootstrap-rst/issues>`_
+      * ·
+      * `Releases <https://github.com/rougier/bootstrap-rst/releases>`_
+
+.. ----------------------------------------------------------------------------
+
+
+.. ----------------------------------------------------------------------------
+.. sidebar:: sidebar
+
+   .. contents:: content
+      :depth: 2
+.. ----------------------------------------------------------------------------
+
+.. include:: CSS-overview.txt
+.. include:: CSS-grid-system.txt
+.. include:: CSS-typography.txt
+.. include:: CSS-code.txt
+.. include:: CSS-tables.txt
+.. include:: CSS-buttons.txt
+.. include:: CSS-images.txt
+.. include:: CSS-helpers.txt
diff --git a/pelican-plugins/bootstrap-rst/doc/bootstrap-glyphs.txt b/pelican-plugins/bootstrap-rst/doc/bootstrap-glyphs.txt
new file mode 100644
index 0000000..4ad7cc9
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/bootstrap-glyphs.txt
@@ -0,0 +1,805 @@
+.. ----------------------------------------------------------------------------
+.. Bootstrap RST - glyph definitions
+.. ----------------------------------------------------------------------------
+
+.. role:: glyphicon-class
+
+.. |asterisk| raw:: html
+
+   <span class="glyphicon glyphicon-asterisk"></span>
+
+.. |plus| raw:: html
+
+   <span class="glyphicon glyphicon-plus"></span>
+
+.. |euro| raw:: html
+
+   <span class="glyphicon glyphicon-euro"></span>
+
+.. |minus| raw:: html
+
+   <span class="glyphicon glyphicon-minus"></span>
+
+.. |cloud| raw:: html
+
+   <span class="glyphicon glyphicon-cloud"></span>
+
+.. |envelope| raw:: html
+
+   <span class="glyphicon glyphicon-envelope"></span>
+
+.. |pencil| raw:: html
+
+   <span class="glyphicon glyphicon-pencil"></span>
+
+.. |glass| raw:: html
+
+   <span class="glyphicon glyphicon-glass"></span>
+
+.. |music| raw:: html
+
+   <span class="glyphicon glyphicon-music"></span>
+
+.. |search| raw:: html
+
+   <span class="glyphicon glyphicon-search"></span>
+
+.. |heart| raw:: html
+
+   <span class="glyphicon glyphicon-heart"></span>
+
+.. |star| raw:: html
+
+   <span class="glyphicon glyphicon-star"></span>
+
+.. |star-empty| raw:: html
+
+   <span class="glyphicon glyphicon-star-empty"></span>
+
+.. |user| raw:: html
+
+   <span class="glyphicon glyphicon-user"></span>
+
+.. |film| raw:: html
+
+   <span class="glyphicon glyphicon-film"></span>
+
+.. |th-large| raw:: html
+
+   <span class="glyphicon glyphicon-th-large"></span>
+
+.. |th| raw:: html
+
+   <span class="glyphicon glyphicon-th"></span>
+
+.. |th-list| raw:: html
+
+   <span class="glyphicon glyphicon-th-list"></span>
+
+.. |ok| raw:: html
+
+   <span class="glyphicon glyphicon-ok"></span>
+
+.. |remove| raw:: html
+
+   <span class="glyphicon glyphicon-remove"></span>
+
+.. |zoom-in| raw:: html
+
+   <span class="glyphicon glyphicon-zoom-in"></span>
+
+.. |zoom-out| raw:: html
+
+   <span class="glyphicon glyphicon-zoom-out"></span>
+
+.. |off| raw:: html
+
+   <span class="glyphicon glyphicon-off"></span>
+
+.. |signal| raw:: html
+
+   <span class="glyphicon glyphicon-signal"></span>
+
+.. |cog| raw:: html
+
+   <span class="glyphicon glyphicon-cog"></span>
+
+.. |trash| raw:: html
+
+   <span class="glyphicon glyphicon-trash"></span>
+
+.. |home| raw:: html
+
+   <span class="glyphicon glyphicon-home"></span>
+
+.. |file| raw:: html
+
+   <span class="glyphicon glyphicon-file"></span>
+
+.. |time| raw:: html
+
+   <span class="glyphicon glyphicon-time"></span>
+
+.. |road| raw:: html
+
+   <span class="glyphicon glyphicon-road"></span>
+
+.. |download-alt| raw:: html
+
+   <span class="glyphicon glyphicon-download-alt"></span>
+
+.. |download| raw:: html
+
+   <span class="glyphicon glyphicon-download"></span>
+
+.. |upload| raw:: html
+
+   <span class="glyphicon glyphicon-upload"></span>
+
+.. |inbox| raw:: html
+
+   <span class="glyphicon glyphicon-inbox"></span>
+
+.. |play-circle| raw:: html
+
+   <span class="glyphicon glyphicon-play-circle"></span>
+
+.. |repeat| raw:: html
+
+   <span class="glyphicon glyphicon-repeat"></span>
+
+.. |refresh| raw:: html
+
+   <span class="glyphicon glyphicon-refresh"></span>
+
+.. |list-alt| raw:: html
+
+   <span class="glyphicon glyphicon-list-alt"></span>
+
+.. |lock| raw:: html
+
+   <span class="glyphicon glyphicon-lock"></span>
+
+.. |flag| raw:: html
+
+   <span class="glyphicon glyphicon-flag"></span>
+
+.. |headphones| raw:: html
+
+   <span class="glyphicon glyphicon-headphones"></span>
+
+.. |volume-off| raw:: html
+
+   <span class="glyphicon glyphicon-volume-off"></span>
+
+.. |volume-down| raw:: html
+
+   <span class="glyphicon glyphicon-volume-down"></span>
+
+.. |volume-up| raw:: html
+
+   <span class="glyphicon glyphicon-volume-up"></span>
+
+.. |qrcode| raw:: html
+
+   <span class="glyphicon glyphicon-qrcode"></span>
+
+.. |barcode| raw:: html
+
+   <span class="glyphicon glyphicon-barcode"></span>
+
+.. |tag| raw:: html
+
+   <span class="glyphicon glyphicon-tag"></span>
+
+.. |tags| raw:: html
+
+   <span class="glyphicon glyphicon-tags"></span>
+
+.. |book| raw:: html
+
+   <span class="glyphicon glyphicon-book"></span>
+
+.. |bookmark| raw:: html
+
+   <span class="glyphicon glyphicon-bookmark"></span>
+
+.. |print| raw:: html
+
+   <span class="glyphicon glyphicon-print"></span>
+
+.. |camera| raw:: html
+
+   <span class="glyphicon glyphicon-camera"></span>
+
+.. |font| raw:: html
+
+   <span class="glyphicon glyphicon-font"></span>
+
+.. |bold| raw:: html
+
+   <span class="glyphicon glyphicon-bold"></span>
+
+.. |italic| raw:: html
+
+   <span class="glyphicon glyphicon-italic"></span>
+
+.. |text-height| raw:: html
+
+   <span class="glyphicon glyphicon-text-height"></span>
+
+.. |text-width| raw:: html
+
+   <span class="glyphicon glyphicon-text-width"></span>
+
+.. |align-left| raw:: html
+
+   <span class="glyphicon glyphicon-align-left"></span>
+
+.. |align-center| raw:: html
+
+   <span class="glyphicon glyphicon-align-center"></span>
+
+.. |align-right| raw:: html
+
+   <span class="glyphicon glyphicon-align-right"></span>
+
+.. |align-justify| raw:: html
+
+   <span class="glyphicon glyphicon-align-justify"></span>
+
+.. |list| raw:: html
+
+   <span class="glyphicon glyphicon-list"></span>
+
+.. |indent-left| raw:: html
+
+   <span class="glyphicon glyphicon-indent-left"></span>
+
+.. |indent-right| raw:: html
+
+   <span class="glyphicon glyphicon-indent-right"></span>
+
+.. |facetime-video| raw:: html
+
+   <span class="glyphicon glyphicon-facetime-video"></span>
+
+.. |picture| raw:: html
+
+   <span class="glyphicon glyphicon-picture"></span>
+
+.. |map-marker| raw:: html
+
+   <span class="glyphicon glyphicon-map-marker"></span>
+
+.. |adjust| raw:: html
+
+   <span class="glyphicon glyphicon-adjust"></span>
+
+.. |tint| raw:: html
+
+   <span class="glyphicon glyphicon-tint"></span>
+
+.. |edit| raw:: html
+
+   <span class="glyphicon glyphicon-edit"></span>
+
+.. |share| raw:: html
+
+   <span class="glyphicon glyphicon-share"></span>
+
+.. |check| raw:: html
+
+   <span class="glyphicon glyphicon-check"></span>
+
+.. |move| raw:: html
+
+   <span class="glyphicon glyphicon-move"></span>
+
+.. |step-backward| raw:: html
+
+   <span class="glyphicon glyphicon-step-backward"></span>
+
+.. |fast-backward| raw:: html
+
+   <span class="glyphicon glyphicon-fast-backward"></span>
+
+.. |backward| raw:: html
+
+   <span class="glyphicon glyphicon-backward"></span>
+
+.. |play| raw:: html
+
+   <span class="glyphicon glyphicon-play"></span>
+
+.. |pause| raw:: html
+
+   <span class="glyphicon glyphicon-pause"></span>
+
+.. |stop| raw:: html
+
+   <span class="glyphicon glyphicon-stop"></span>
+
+.. |forward| raw:: html
+
+   <span class="glyphicon glyphicon-forward"></span>
+
+.. |fast-forward| raw:: html
+
+   <span class="glyphicon glyphicon-fast-forward"></span>
+
+.. |step-forward| raw:: html
+
+   <span class="glyphicon glyphicon-step-forward"></span>
+
+.. |eject| raw:: html
+
+   <span class="glyphicon glyphicon-eject"></span>
+
+.. |chevron-left| raw:: html
+
+   <span class="glyphicon glyphicon-chevron-left"></span>
+
+.. |chevron-right| raw:: html
+
+   <span class="glyphicon glyphicon-chevron-right"></span>
+
+.. |plus-sign| raw:: html
+
+   <span class="glyphicon glyphicon-plus-sign"></span>
+
+.. |minus-sign| raw:: html
+
+   <span class="glyphicon glyphicon-minus-sign"></span>
+
+.. |remove-sign| raw:: html
+
+   <span class="glyphicon glyphicon-remove-sign"></span>
+
+.. |ok-sign| raw:: html
+
+   <span class="glyphicon glyphicon-ok-sign"></span>
+
+.. |question-sign| raw:: html
+
+   <span class="glyphicon glyphicon-question-sign"></span>
+
+.. |info-sign| raw:: html
+
+   <span class="glyphicon glyphicon-info-sign"></span>
+
+.. |screenshot| raw:: html
+
+   <span class="glyphicon glyphicon-screenshot"></span>
+
+.. |remove-circle| raw:: html
+
+   <span class="glyphicon glyphicon-remove-circle"></span>
+
+.. |ok-circle| raw:: html
+
+   <span class="glyphicon glyphicon-ok-circle"></span>
+
+.. |ban-circle| raw:: html
+
+   <span class="glyphicon glyphicon-ban-circle"></span>
+
+.. |arrow-left| raw:: html
+
+   <span class="glyphicon glyphicon-arrow-left"></span>
+
+.. |arrow-right| raw:: html
+
+   <span class="glyphicon glyphicon-arrow-right"></span>
+
+.. |arrow-up| raw:: html
+
+   <span class="glyphicon glyphicon-arrow-up"></span>
+
+.. |arrow-down| raw:: html
+
+   <span class="glyphicon glyphicon-arrow-down"></span>
+
+.. |share-alt| raw:: html
+
+   <span class="glyphicon glyphicon-share-alt"></span>
+
+.. |resize-full| raw:: html
+
+   <span class="glyphicon glyphicon-resize-full"></span>
+
+.. |resize-small| raw:: html
+
+   <span class="glyphicon glyphicon-resize-small"></span>
+
+.. |exclamation-sign| raw:: html
+
+   <span class="glyphicon glyphicon-exclamation-sign"></span>
+
+.. |gift| raw:: html
+
+   <span class="glyphicon glyphicon-gift"></span>
+
+.. |leaf| raw:: html
+
+   <span class="glyphicon glyphicon-leaf"></span>
+
+.. |fire| raw:: html
+
+   <span class="glyphicon glyphicon-fire"></span>
+
+.. |eye-open| raw:: html
+
+   <span class="glyphicon glyphicon-eye-open"></span>
+
+.. |eye-close| raw:: html
+
+   <span class="glyphicon glyphicon-eye-close"></span>
+
+.. |warning-sign| raw:: html
+
+   <span class="glyphicon glyphicon-warning-sign"></span>
+
+.. |plane| raw:: html
+
+   <span class="glyphicon glyphicon-plane"></span>
+
+.. |calendar| raw:: html
+
+   <span class="glyphicon glyphicon-calendar"></span>
+
+.. |random| raw:: html
+
+   <span class="glyphicon glyphicon-random"></span>
+
+.. |comment| raw:: html
+
+   <span class="glyphicon glyphicon-comment"></span>
+
+.. |magnet| raw:: html
+
+   <span class="glyphicon glyphicon-magnet"></span>
+
+.. |chevron-up| raw:: html
+
+   <span class="glyphicon glyphicon-chevron-up"></span>
+
+.. |chevron-down| raw:: html
+
+   <span class="glyphicon glyphicon-chevron-down"></span>
+
+.. |retweet| raw:: html
+
+   <span class="glyphicon glyphicon-retweet"></span>
+
+.. |shopping-cart| raw:: html
+
+   <span class="glyphicon glyphicon-shopping-cart"></span>
+
+.. |folder-close| raw:: html
+
+   <span class="glyphicon glyphicon-folder-close"></span>
+
+.. |folder-open| raw:: html
+
+   <span class="glyphicon glyphicon-folder-open"></span>
+
+.. |resize-vertical| raw:: html
+
+   <span class="glyphicon glyphicon-resize-vertical"></span>
+
+.. |resize-horizontal| raw:: html
+
+   <span class="glyphicon glyphicon-resize-horizontal"></span>
+
+.. |hdd| raw:: html
+
+   <span class="glyphicon glyphicon-hdd"></span>
+
+.. |bullhorn| raw:: html
+
+   <span class="glyphicon glyphicon-bullhorn"></span>
+
+.. |bell| raw:: html
+
+   <span class="glyphicon glyphicon-bell"></span>
+
+.. |certificate| raw:: html
+
+   <span class="glyphicon glyphicon-certificate"></span>
+
+.. |thumbs-up| raw:: html
+
+   <span class="glyphicon glyphicon-thumbs-up"></span>
+
+.. |thumbs-down| raw:: html
+
+   <span class="glyphicon glyphicon-thumbs-down"></span>
+
+.. |hand-right| raw:: html
+
+   <span class="glyphicon glyphicon-hand-right"></span>
+
+.. |hand-left| raw:: html
+
+   <span class="glyphicon glyphicon-hand-left"></span>
+
+.. |hand-up| raw:: html
+
+   <span class="glyphicon glyphicon-hand-up"></span>
+
+.. |hand-down| raw:: html
+
+   <span class="glyphicon glyphicon-hand-down"></span>
+
+.. |circle-arrow-right| raw:: html
+
+   <span class="glyphicon glyphicon-circle-arrow-right"></span>
+
+.. |circle-arrow-left| raw:: html
+
+   <span class="glyphicon glyphicon-circle-arrow-left"></span>
+
+.. |circle-arrow-up| raw:: html
+
+   <span class="glyphicon glyphicon-circle-arrow-up"></span>
+
+.. |circle-arrow-down| raw:: html
+
+   <span class="glyphicon glyphicon-circle-arrow-down"></span>
+
+.. |globe| raw:: html
+
+   <span class="glyphicon glyphicon-globe"></span>
+
+.. |wrench| raw:: html
+
+   <span class="glyphicon glyphicon-wrench"></span>
+
+.. |tasks| raw:: html
+
+   <span class="glyphicon glyphicon-tasks"></span>
+
+.. |filter| raw:: html
+
+   <span class="glyphicon glyphicon-filter"></span>
+
+.. |briefcase| raw:: html
+
+   <span class="glyphicon glyphicon-briefcase"></span>
+
+.. |fullscreen| raw:: html
+
+   <span class="glyphicon glyphicon-fullscreen"></span>
+
+.. |dashboard| raw:: html
+
+   <span class="glyphicon glyphicon-dashboard"></span>
+
+.. |paperclip| raw:: html
+
+   <span class="glyphicon glyphicon-paperclip"></span>
+
+.. |heart-empty| raw:: html
+
+   <span class="glyphicon glyphicon-heart-empty"></span>
+
+.. |link| raw:: html
+
+   <span class="glyphicon glyphicon-link"></span>
+
+.. |phone| raw:: html
+
+   <span class="glyphicon glyphicon-phone"></span>
+
+.. |pushpin| raw:: html
+
+   <span class="glyphicon glyphicon-pushpin"></span>
+
+.. |usd| raw:: html
+
+   <span class="glyphicon glyphicon-usd"></span>
+
+.. |gbp| raw:: html
+
+   <span class="glyphicon glyphicon-gbp"></span>
+
+.. |sort| raw:: html
+
+   <span class="glyphicon glyphicon-sort"></span>
+
+.. |sort-by-alphabet| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-alphabet"></span>
+
+.. |sort-by-alphabet-alt| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-alphabet-alt"></span>
+
+.. |sort-by-order| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-order"></span>
+
+.. |sort-by-order-alt| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-order-alt"></span>
+
+.. |sort-by-attributes| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-attributes"></span>
+
+.. |sort-by-attributes-alt| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-attributes-alt"></span>
+
+.. |unchecked| raw:: html
+
+   <span class="glyphicon glyphicon-unchecked"></span>
+
+.. |expand| raw:: html
+
+   <span class="glyphicon glyphicon-expand"></span>
+
+.. |collapse-down| raw:: html
+
+   <span class="glyphicon glyphicon-collapse-down"></span>
+
+.. |collapse-up| raw:: html
+
+   <span class="glyphicon glyphicon-collapse-up"></span>
+
+.. |log-in| raw:: html
+
+   <span class="glyphicon glyphicon-log-in"></span>
+
+.. |flash| raw:: html
+
+   <span class="glyphicon glyphicon-flash"></span>
+
+.. |log-out| raw:: html
+
+   <span class="glyphicon glyphicon-log-out"></span>
+
+.. |new-window| raw:: html
+
+   <span class="glyphicon glyphicon-new-window"></span>
+
+.. |record| raw:: html
+
+   <span class="glyphicon glyphicon-record"></span>
+
+.. |save| raw:: html
+
+   <span class="glyphicon glyphicon-save"></span>
+
+.. |open| raw:: html
+
+   <span class="glyphicon glyphicon-open"></span>
+
+.. |saved| raw:: html
+
+   <span class="glyphicon glyphicon-saved"></span>
+
+.. |import| raw:: html
+
+   <span class="glyphicon glyphicon-import"></span>
+
+.. |export| raw:: html
+
+   <span class="glyphicon glyphicon-export"></span>
+
+.. |send| raw:: html
+
+   <span class="glyphicon glyphicon-send"></span>
+
+.. |floppy-disk| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-disk"></span>
+
+.. |floppy-saved| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-saved"></span>
+
+.. |floppy-remove| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-remove"></span>
+
+.. |floppy-save| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-save"></span>
+
+.. |floppy-open| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-open"></span>
+
+.. |credit-card| raw:: html
+
+   <span class="glyphicon glyphicon-credit-card"></span>
+
+.. |transfer| raw:: html
+
+   <span class="glyphicon glyphicon-transfer"></span>
+
+.. |cutlery| raw:: html
+
+   <span class="glyphicon glyphicon-cutlery"></span>
+
+.. |header| raw:: html
+
+   <span class="glyphicon glyphicon-header"></span>
+
+.. |compressed| raw:: html
+
+   <span class="glyphicon glyphicon-compressed"></span>
+
+.. |earphone| raw:: html
+
+   <span class="glyphicon glyphicon-earphone"></span>
+
+.. |phone-alt| raw:: html
+
+   <span class="glyphicon glyphicon-phone-alt"></span>
+
+.. |tower| raw:: html
+
+   <span class="glyphicon glyphicon-tower"></span>
+
+.. |stats| raw:: html
+
+   <span class="glyphicon glyphicon-stats"></span>
+
+.. |sd-video| raw:: html
+
+   <span class="glyphicon glyphicon-sd-video"></span>
+
+.. |hd-video| raw:: html
+
+   <span class="glyphicon glyphicon-hd-video"></span>
+
+.. |subtitles| raw:: html
+
+   <span class="glyphicon glyphicon-subtitles"></span>
+
+.. |sound-stereo| raw:: html
+
+   <span class="glyphicon glyphicon-sound-stereo"></span>
+
+.. |sound-dolby| raw:: html
+
+   <span class="glyphicon glyphicon-sound-dolby"></span>
+
+.. |sound-5-1| raw:: html
+
+   <span class="glyphicon glyphicon-sound-5-1"></span>
+
+.. |sound-6-1| raw:: html
+
+   <span class="glyphicon glyphicon-sound-6-1"></span>
+
+.. |sound-7-1| raw:: html
+
+   <span class="glyphicon glyphicon-sound-7-1"></span>
+
+.. |copyright-mark| raw:: html
+
+   <span class="glyphicon glyphicon-copyright-mark"></span>
+
+.. |registration-mark| raw:: html
+
+   <span class="glyphicon glyphicon-registration-mark"></span>
+
+.. |cloud-download| raw:: html
+
+   <span class="glyphicon glyphicon-cloud-download"></span>
+
+.. |cloud-upload| raw:: html
+
+   <span class="glyphicon glyphicon-cloud-upload"></span>
+
+.. |tree-conifer| raw:: html
+
+   <span class="glyphicon glyphicon-tree-conifer"></span>
+
+.. |tree-deciduous| raw:: html
+
+   <span class="glyphicon glyphicon-tree-deciduous"></span>
diff --git a/pelican-plugins/bootstrap-rst/doc/bootstrap-roles.txt b/pelican-plugins/bootstrap-rst/doc/bootstrap-roles.txt
new file mode 100644
index 0000000..7bd5361
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/bootstrap-roles.txt
@@ -0,0 +1,21 @@
+.. ----------------------------------------------------------------------------
+.. Bootstrap RST - role definitions
+.. ----------------------------------------------------------------------------
+
+.. role:: small
+.. role:: kbd
+.. role:: badge
+
+.. role:: text-muted
+.. role:: text-primary
+.. role:: text-success
+.. role:: text-info
+.. role:: text-warning
+.. role:: text-danger
+
+.. role:: bg-muted
+.. role:: bg-primary
+.. role:: bg-success
+.. role:: bg-info
+.. role:: bg-warning
+.. role:: bg-danger
diff --git a/pelican-plugins/bootstrap-rst/doc/components-alerts.txt b/pelican-plugins/bootstrap-rst/doc/components-alerts.txt
new file mode 100644
index 0000000..6fcd68f
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-alerts.txt
@@ -0,0 +1,70 @@
+Alerts
+===============================================================================
+.. lead:: Provide contextual feedback messages for typical user actions with
+          the handful of available and flexible alert messages. For inline
+          dismissal, use the `alerts jQuery plugin
+          <http://getbootstrap.com/javascript/>`_.
+.. ----------------------------------------------------------------------------
+
+Examples
+--------
+
+Wrap any text and an optional dismiss button in `.alert` and one of the four
+contextual classes (e.g., `.alert-success`) for basic alert messages.
+
+.. callout:: danger
+
+   :h4:`No default class`
+   Alerts don't have default classes, only base and modifier classes. A default
+   gray alert doesn't make too much sense, so you're required to specify a type
+   via contextual class. Choose from success, info, warning, or danger.
+
+
+.. container:: bs-example
+
+   .. alert:: **Well done!** You successfully read this important alert message.
+      :type: success
+
+   .. alert:: **Heads up!** This alert needs your attention, but it's not super important.
+      :type: info
+
+   .. alert:: **Warning!** Better check yourself, you're not looking too good.
+      :type: warning
+
+   .. alert:: **Oh snap!** Change a few things up and try submitting again.
+      :type: danger
+
+
+.. code::
+   :class: highlight
+
+   .. alert:: **Well done!** You successfully read this important alert message.
+      :type: success
+
+   .. alert:: **Heads up!** This alert needs your attention, but it's not super important.
+      :type: info
+
+   .. alert:: **Warning!** Better check yourself, you're not looking too good.
+      :type: warning
+
+   .. alert:: **Oh snap!** Change a few things up and try submitting again.
+      :type: danger
+
+
+Dismissable alerts
+------------------
+
+Build on any alert by adding an optional `.alert-dismissable` and close button.
+
+.. container:: bs-example
+
+   .. alert:: **Warning!** Better check yourself, you're not looking too good.
+      :type: warning
+      :dismissable:
+
+
+.. callout:: warning
+
+   :h4:`Ensure proper behavior across all devices`
+   Be sure to use the `<button>` element with the `data-dismiss="alert"` data
+   attribute.
diff --git a/pelican-plugins/bootstrap-rst/doc/components-badges.txt b/pelican-plugins/bootstrap-rst/doc/components-badges.txt
new file mode 100644
index 0000000..2871fb4
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-badges.txt
@@ -0,0 +1,15 @@
+Badges
+===============================================================================
+.. lead:: Easily highlight new or unread items by adding a <span class="badge">
+          to links, Bootstrap navs, and more.
+
+
+.. container:: bs-example
+
+  `Inbox <#>`_ :badge:`42`
+
+
+Self collapsing
+
+When there are no new or unread items, badges will simply collapse (via CSS's
+`:empty` selector) provided no content exists within.
diff --git a/pelican-plugins/bootstrap-rst/doc/components-breadcrumbs.txt b/pelican-plugins/bootstrap-rst/doc/components-breadcrumbs.txt
new file mode 100644
index 0000000..b00ed80
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-breadcrumbs.txt
@@ -0,0 +1,43 @@
+Breadcrumbs
+===============================================================================
+.. lead:: Indicate the current page's location within a navigational hierarchy.
+
+
+Separators are automatically added in CSS through `:before` and `content.`
+
+
+.. container:: bs-example
+
+   .. class:: breadcrumb
+
+      * Home
+
+   .. class:: breadcrumb
+
+      * Home
+      * Library
+
+   .. class:: breadcrumb
+
+      * Home
+      * Library
+      * Data
+
+
+.. code::
+   :class: highlight
+
+   .. class:: breadcrumb
+
+      * Home
+
+   .. class:: breadcrumb
+
+      * Home
+      * Library
+
+   .. class:: breadcrumb
+
+      * Home
+      * Library
+      * Data
diff --git a/pelican-plugins/bootstrap-rst/doc/components-glyphicons.txt b/pelican-plugins/bootstrap-rst/doc/components-glyphicons.txt
new file mode 100644
index 0000000..9c75c32
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-glyphicons.txt
@@ -0,0 +1,37 @@
+Glyphicons
+===============================================================================
+
+Available glyphs
+----------------
+
+Includes 200 glyphs in font format from the Glyphicon Halflings
+set. `Glyphicons <http://glyphicons.com>`_ Halflings are normally not available
+for free, but their creator has made them available for Bootstrap free of
+cost. As a thank you, we only ask that you include a link back to `Glyphicons
+<http://glyphicons.com>`_ whenever possible.
+
+.. include:: glyphicons-list.txt
+
+How to use
+----------
+
+For performance reasons, all icons require a base class and individual icon
+class. To use, place the following code just about anywhere. Be sure to leave a
+space between the icon and text for proper padding.
+
+.. callout:: danger
+
+   :h4:`Don't mix with other`
+   Icon classes cannot be directly combined with other components. They should
+   not be used along with other classes on the same element. Instead, add a
+   nested `<span>` and apply the icon classes to the `<span>`.
+
+.. container:: bs-example
+
+   |search| |star|
+
+
+.. code::
+   :class: highlight
+
+   |search| |star|
diff --git a/pelican-plugins/bootstrap-rst/doc/components-jumbotron.txt b/pelican-plugins/bootstrap-rst/doc/components-jumbotron.txt
new file mode 100644
index 0000000..4175c4f
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-jumbotron.txt
@@ -0,0 +1,45 @@
+Jumbotron
+===============================================================================
+
+A lightweight, flexible component that can optionally extend the entire
+viewport to showcase key content on your site.
+
+.. container:: bs-example
+
+   .. jumbotron::
+
+      :h1:`Hello, world!`
+
+      This is a simple hero unit, a simple jumbotron-style component for
+      calling extra attention to featured content or information.
+
+      .. button:: Learn more
+         :class: primary large
+
+.. code::
+   :class: highlight
+
+
+   .. jumbotron::
+
+      :h1:`Hello, world!`
+
+      This is a simple hero unit, a simple jumbotron-style component for
+      calling extra attention to featured content or information.
+
+      .. button:: Learn more
+         :class: primary large
+
+
+To make the jumbotron full width, and without rounded corners, place it outside
+all .containers and instead add a .container within.
+
+.. code::
+   :class: highlight
+
+
+   .. jumbotron::
+
+      .. container::
+
+         ...
diff --git a/pelican-plugins/bootstrap-rst/doc/components-labels.txt b/pelican-plugins/bootstrap-rst/doc/components-labels.txt
new file mode 100644
index 0000000..3be3594
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-labels.txt
@@ -0,0 +1,64 @@
+Labels
+===============================================================================
+
+Examples
+--------
+
+.. container:: bs-example
+
+   :h1:`Example heading <span class="label label-default">New</span>`
+
+   :h2:`Example heading <span class="label label-default">New</span>`
+
+   :h3:`Example heading <span class="label label-default">New</span>`
+
+   :h4:`Example heading <span class="label label-default">New</span>`
+
+   :h5:`Example heading <span class="label label-default">New</span>`
+
+   :h6:`Example heading <span class="label label-default">New</span>`
+
+
+.. code::
+   :class: highlight
+
+   h1. Example heading :label-default:`New`
+   ========================================
+
+   h2. Example heading :label-default:`New`
+   ----------------------------------------
+
+   h3. Example heading :label-default:`New`
+   ++++++++++++++++++++++++++++++++++++++++
+
+   h4. Example heading :label-default:`New`
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+   h5. Example heading :label-default:`New`
+   ****************************************
+
+   h6. Example heading :label-default:`New`
+   ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
+
+
+Available variations
+--------------------
+
+.. container:: bs-example
+
+   :label-default:`Default`
+   :label-primary:`Primary`
+   :label-success:`Success`
+   :label-info:`Info`
+   :label-warning:`Warning`
+   :label-danger:`Danger`
+
+.. code::
+   :class: highlight
+
+   :label-default:`Default`
+   :label-primary:`Primary`
+   :label-success:`Success`
+   :label-info:`Info`
+   :label-warning:`Warning`
+   :label-danger:`Danger`
diff --git a/pelican-plugins/bootstrap-rst/doc/components-page-header.txt b/pelican-plugins/bootstrap-rst/doc/components-page-header.txt
new file mode 100644
index 0000000..65b10ca
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-page-header.txt
@@ -0,0 +1,26 @@
+Page header
+===============================================================================
+
+A simple shell for an `h1` to appropriately space out and segment sections of
+content on a page. It can utilize the `h1`'s default `small` element, as well as
+most other components (with additional styles).
+
+
+
+.. lead:: Easily highlight new or unread items by adding a <span class="badge">
+          to links, Bootstrap navs, and more.
+
+
+.. container:: bs-example
+
+   .. container:: page-header
+
+      :h1:`Example page header <small>Subtext for header</small>`
+
+
+.. code::
+   :class: highlight
+
+   .. page-header::
+
+      :h1:`Example page header <small>Subtext for header</small>`
diff --git a/pelican-plugins/bootstrap-rst/doc/components-pagination.txt b/pelican-plugins/bootstrap-rst/doc/components-pagination.txt
new file mode 100644
index 0000000..55cd04d
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-pagination.txt
@@ -0,0 +1,210 @@
+Pagination
+===============================================================================
+.. lead:: Provide pagination links for your site or app with the multi-page
+          pagination component, or the simpler pager alternative.
+.. ----------------------------------------------------------------------------
+
+Default pagination
+------------------
+
+Simple pagination inspired by Rdio, great for apps and search results. The
+large block is hard to miss, easily scalable, and provides large click areas.
+
+
+
+.. container:: bs-example
+
+   .. class:: pagination
+
+      * `« <#>`_
+      * `1 <#>`_
+      * `2 <#>`_
+      * `3 <#>`_
+      * `4 <#>`_
+      * `5 <#>`_
+      * `» <#>`_
+
+.. code::
+   :class: highlight
+
+   .. class:: pagination
+
+      * `« <#>`_
+      * `1 <#>`_
+      * `2 <#>`_
+      * `3 <#>`_
+      * `4 <#>`_
+      * `5 <#>`_
+      * `» <#>`_
+
+
+Disabled and active states
+--------------------------
+
+Links are customizable for different circumstances. Use `.disabled` for
+unclickable links and `.active` to indicate the current page.
+
+
+.. container:: bs-example
+
+   .. class:: pagination
+
+      * .. item-class:: disabled
+        `« <#>`_
+      * .. item-class:: active
+        `1 <#>`_
+      * `2 <#>`_
+      * `3 <#>`_
+      * `4 <#>`_
+      * `5 <#>`_
+      * `» <#>`_
+
+.. code::
+   :class: highlight
+
+   .. class:: pagination
+
+      * .. item-class:: disabled
+        `« <#>`_
+      * .. item-class:: active
+        `1 <#>`_
+      * `2 <#>`_
+      * `3 <#>`_
+      * `4 <#>`_
+      * `5 <#>`_
+      * `» <#>`_
+
+Sizing
+------
+
+Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for
+additional sizes.
+
+.. container:: bs-example
+
+   .. class:: pagination pagination-lg
+
+      * `« <#>`_
+      * `1 <#>`_
+      * `2 <#>`_
+      * `3 <#>`_
+      * `4 <#>`_
+      * `5 <#>`_
+      * `» <#>`_
+
+   |
+
+   .. class:: pagination
+
+      * `« <#>`_
+      * `1 <#>`_
+      * `2 <#>`_
+      * `3 <#>`_
+      * `4 <#>`_
+      * `5 <#>`_
+      * `» <#>`_
+
+   |
+
+   .. class:: pagination pagination-sm
+
+      * `« <#>`_
+      * `1 <#>`_
+      * `2 <#>`_
+      * `3 <#>`_
+      * `4 <#>`_
+      * `5 <#>`_
+      * `» <#>`_
+
+.. code::
+   :class: highlight
+
+
+   .. class:: pagination pagination-lg
+
+      ...
+
+   .. class:: pagination
+
+      ...
+
+   .. class:: pagination pagination-sm
+
+      ...
+
+
+Pager
+===============================================================================
+
+Quick previous and next links for simple pagination implementations with light
+markup and styles. It's great for simple sites like blogs or magazines.
+
+Default example
+---------------
+
+By default, the pager centers links.
+
+.. container:: bs-example
+
+   .. class:: pager
+
+      * `Previous <#>`_
+      * `Next <#>`_
+
+.. code::
+   :class: highlight
+
+   .. class:: pager
+
+      * `Previous <#>`_
+      * `Next <#>`_
+
+
+Aligned links
+-------------
+
+Alternatively, you can align each link to the sides:
+
+.. container:: bs-example
+
+   .. class:: pager
+
+      * .. item-class:: previous
+        `← Older <#>`_
+      * .. item-class:: next
+        `Newer → <#>`_
+
+.. code::
+   :class: highlight
+
+   .. class:: pager
+
+      * .. item-class:: previous
+        `← Older <#>`_
+      * .. item-class:: next
+        `Newer → <#>`_
+
+
+Optional disabled state
+-----------------------
+
+Pager links also use the general `disabled` utility class from the pagination.
+
+.. container:: bs-example
+
+   .. class:: pager
+
+      * .. item-class:: previous disabled
+        `← Older <#>`_
+      * .. item-class:: next
+        `Newer → <#>`_
+
+.. code::
+   :class: highlight
+
+   .. class:: pager
+
+      * .. item-class:: previous disabled
+        `← Older <#>`_
+      * .. item-class:: next
+        `Newer → <#>`_
diff --git a/pelican-plugins/bootstrap-rst/doc/components-progress.txt b/pelican-plugins/bootstrap-rst/doc/components-progress.txt
new file mode 100644
index 0000000..11e634a
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-progress.txt
@@ -0,0 +1,140 @@
+Progress bars
+===============================================================================
+.. lead:: Provide up-to-date feedback on the progress of a workflow or action
+          with simple yet flexible progress bars.
+.. ----------------------------------------------------------------------------
+
+.. callout:: danger
+
+   :h4:`Cross-browser compatibility`
+   Progress bars use CSS3 transitions and animations to achieve some of their
+   effects. These features are not supported in Internet Explorer 9 and below
+   or older versions of Firefox. Opera 12 does not support animations.
+
+
+Basic example
+-------------
+
+Default progress bar.
+
+.. container:: bs-example
+
+   .. progress:: 60%
+
+.. code::
+   :class: highlight
+
+   .. progress:: 60%
+
+
+With label
+----------
+
+Remove the `.sr-only` class from within the progress bar to show a visible
+percentage. For low percentages, consider adding a `min-width` to ensure the
+label's text is fully visible.
+
+.. container:: bs-example
+
+   .. progress:: 60%
+      :label: 60%
+
+.. code::
+   :class: highlight
+
+   .. progress:: 60%
+      :label: 60%
+
+
+Contextual alternatives
+-----------------------
+
+Progress bars use some of the same button and alert classes for consistent
+styles.
+
+.. container:: bs-example
+
+   .. progress:: 40%
+      :class: success
+
+   .. progress:: 20%
+      :class: info
+
+   .. progress:: 60%
+      :class: warning
+
+   .. progress:: 80%
+      :class: danger
+
+.. code::
+   :class: highlight
+
+   .. progress:: 40%
+      :class: success
+
+   .. progress:: 20%
+      :class: info
+
+   .. progress:: 60%
+      :class: warning
+
+   .. progress:: 80%
+      :class: danger
+
+
+Striped
+-------
+
+Uses a gradient to create a striped effect. Not available in IE8.
+
+.. container:: bs-example
+
+   .. progress:: 40%
+      :class: success striped
+
+   .. progress:: 20%
+      :class: info striped
+
+   .. progress:: 60%
+      :class: warning striped
+
+   .. progress:: 80%
+      :class: danger striped
+
+.. code::
+   :class: highlight
+
+   .. progress:: 40%
+      :class: success striped
+
+   .. progress:: 20%
+      :class: info striped
+
+   .. progress:: 60%
+      :class: warning striped
+
+   .. progress:: 80%
+      :class: danger striped
+
+
+Animated
+--------
+
+Add `.active` to `.progress-striped` to animate the stripes right to left. Not
+available in IE9 and below.
+
+.. container:: bs-example
+
+   .. progress:: 45%
+      :class: active
+
+.. code::
+   :class: highlight
+
+   .. progress:: 45%
+      :class: active
+
+Stacked
+-------
+
+:text-muted:`N/A`
diff --git a/pelican-plugins/bootstrap-rst/doc/components-thumbnails.txt b/pelican-plugins/bootstrap-rst/doc/components-thumbnails.txt
new file mode 100644
index 0000000..a558658
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-thumbnails.txt
@@ -0,0 +1,157 @@
+Thumbnails
+===============================================================================
+.. lead:: Extend Bootstrap's grid system with the thumbnail component to easily
+          display grids of images, videos, text, and more.
+
+Default example
+---------------
+
+By default, Bootstrap's thumbnails are designed to showcase linked images with
+minimal required markup.
+
+.. container:: bs-example
+
+   .. row::
+
+      .. column::
+         :width: 3
+
+         .. image:: 171x180.png
+            :class: thumbnail
+
+      .. column::
+         :width: 3
+
+         .. image:: 171x180.png
+            :class: thumbnail
+
+      .. column::
+         :width: 3
+
+         .. image:: 171x180.png
+            :class: thumbnail
+
+      .. column::
+         :width: 3
+
+         .. image:: 171x180.png
+            :class: thumbnail
+
+.. code::
+   :class: highlight
+
+      .. column::
+         :width: 3
+
+         .. image:: 171x180.png
+            :class: thumbnail
+
+      .. column::
+         :width: 3
+
+         .. image:: 171x180.png
+            :class: thumbnail
+
+      .. column::
+         :width: 3
+
+         .. image:: 171x180.png
+            :class: thumbnail
+
+      .. column::
+         :width: 3
+
+         .. image:: 171x180.png
+            :class: thumbnail
+
+Custom content
+--------------
+
+With a bit of extra markup, it's possible to add any kind of HTML content like
+headings, paragraphs, or buttons into thumbnails.
+
+.. container:: bs-example
+
+   .. row::
+
+      .. column::
+         :width: 4
+
+         .. thumbnail::
+
+            .. image:: 300x200.png
+
+            .. caption::
+
+               :h3:`Thumbnail label`
+
+               Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec
+               id elit non mi porta gravida at eget metus. Nullam id dolor id nibh
+               ultricies vehicula ut id elit.
+
+               .. button:: Button
+                  :class: primary
+
+               .. button:: Button
+
+
+      .. column::
+         :width: 4
+
+         .. thumbnail::
+
+            .. image:: 300x200.png
+
+            .. caption::
+
+               :h3:`Thumbnail label`
+
+               Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec
+               id elit non mi porta gravida at eget metus. Nullam id dolor id nibh
+               ultricies vehicula ut id elit.
+
+               .. button:: Button
+                  :class: primary
+
+               .. button:: Button
+
+
+      .. column::
+         :width: 4
+
+         .. thumbnail::
+
+            .. image:: 300x200.png
+
+            .. caption::
+
+               :h3:`Thumbnail label`
+
+               Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec
+               id elit non mi porta gravida at eget metus. Nullam id dolor id nibh
+               ultricies vehicula ut id elit.
+
+               .. button:: Button
+                  :class: primary
+
+               .. button:: Button
+
+.. code::
+   :class: highlight
+
+   .. thumbnail::
+
+      .. image:: 300x200.png
+
+      .. caption::
+
+         :h3:`Thumbnail label`
+
+         Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec
+         id elit non mi porta gravida at eget metus. Nullam id dolor id nibh
+         ultricies vehicula ut id elit.
+
+         .. button:: Button
+            :class: primary
+
+         .. button:: Button
diff --git a/pelican-plugins/bootstrap-rst/doc/components-wells.txt b/pelican-plugins/bootstrap-rst/doc/components-wells.txt
new file mode 100644
index 0000000..b5462af
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components-wells.txt
@@ -0,0 +1,53 @@
+Wells
+===============================================================================
+
+Default well
+------------
+
+Use the well as a simple effect on an element to give it an inset effect.
+
+.. container:: bs-example
+
+   .. class:: well
+
+      Look, I'm in a well!
+
+.. code::
+   :class: highlight
+
+   .. class:: well
+
+      Look, I'm in a well!
+
+
+Optional classes
+----------------
+
+Control padding and rounded corners with two optional modifier classes.
+
+.. container:: bs-example
+
+   .. class:: well well-lg
+
+      Look, I'm in a well!
+
+.. code::
+   :class: highlight
+
+   .. class:: well well-lg
+
+      Look, I'm in a well!
+
+
+.. container:: bs-example
+
+   .. class:: well well-sm
+
+      Look, I'm in a well!
+
+.. code::
+   :class: highlight
+
+   .. class:: well well-sm
+
+      Look, I'm in a well!
diff --git a/pelican-plugins/bootstrap-rst/doc/components.rst b/pelican-plugins/bootstrap-rst/doc/components.rst
new file mode 100644
index 0000000..54846cb
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/components.rst
@@ -0,0 +1,65 @@
+.. ----------------------------------------------------------------------------
+.. default-role:: code
+.. include:: bootstrap-roles.txt
+.. include:: bootstrap-glyphs.txt
+.. ----------------------------------------------------------------------------
+
+.. ----------------------------------------------------------------------------
+.. header::
+
+   .. container:: bs-docs-header
+
+      .. container:: container
+
+         :h1:`Components`
+
+         Over a dozen reusable components built to provide iconography,
+         dropdowns, input groups, navigation, alerts, and much more.
+.. ----------------------------------------------------------------------------
+
+.. ----------------------------------------------------------------------------
+.. footer:: bs-docs-footer
+
+   Bootstrap RST - Copyright (c) 2014 Nicolas P. Rougier
+
+   `Bootstrap <http://getbootstrap.com>`_ - Copyright (c) 2011-2014 Twitter, Inc
+
+   Code licensed under MIT, documentation under CC BY 3.0.
+
+   `Get page source <doc/components.rst>`_
+
+   .. class:: bs-docs-footer-links muted
+
+      * `GitHub <https://github.com/rougier/bootstrap-rst>`_
+      * ·
+      * `Examples <examples.html>`_
+      * ·
+      * `Documentation <about.html>`_
+      * ·
+      * `About <about.html>`_
+      * ·
+      * `Issues <https://github.com/rougier/bootstrap-rst/issues>`_
+      * ·
+      * `Releases <https://github.com/rougier/bootstrap-rst/releases>`_
+.. ----------------------------------------------------------------------------
+
+
+.. ----------------------------------------------------------------------------
+.. sidebar:: sidebar
+
+   .. contents:: content
+      :depth: 2
+.. ----------------------------------------------------------------------------
+
+
+.. include:: components-glyphicons.txt
+.. include:: components-breadcrumbs.txt
+.. include:: components-pagination.txt
+.. include:: components-labels.txt
+.. include:: components-badges.txt
+.. include:: components-jumbotron.txt
+.. include:: components-page-header.txt
+.. include:: components-thumbnails.txt
+.. include:: components-alerts.txt
+.. include:: components-progress.txt
+.. include:: components-wells.txt
diff --git a/pelican-plugins/bootstrap-rst/doc/getting-started.rst b/pelican-plugins/bootstrap-rst/doc/getting-started.rst
new file mode 100644
index 0000000..dfd644e
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/getting-started.rst
@@ -0,0 +1,160 @@
+.. default-role:: code
+.. role:: text-muted
+.. role:: sr-only
+
+.. |caret| raw:: html
+
+   <span class="caret"></span>
+
+.. include:: glyphicons-defs.txt
+
+
+.. ----------------------------------------------------------------------------
+.. header::
+   :class: bs-docs-header
+
+   .. container:: container
+
+      :h1:`Getting started`
+
+      An overview of Bootstrap RST, how to download and use, basic
+      templates and examples, and more.
+.. ----------------------------------------------------------------------------
+
+.. ----------------------------------------------------------------------------
+.. footer::
+   :class: bs-docs-footer
+
+   Bootstrap RST - Copyright 2014 Nicolas P. Rougier
+
+   Code licensed under MIT, documentation under CC BY 3.0.
+
+   `Get page source <getting-started.rst>`_
+
+   .. class:: bs-docs-footer-links muted
+
+      * GitHub
+      * ·
+      * Examples
+      * ·
+      * Documentation
+      * ·
+      * About
+      * ·
+      * Issues
+      * ·
+      * Releases
+.. ----------------------------------------------------------------------------
+
+
+.. ----------------------------------------------------------------------------
+.. sidebar:: sidebar
+
+   .. contents:: content
+      :depth: 2
+.. ----------------------------------------------------------------------------
+
+
+Download
+===============================================================================
+.. lead:: Bootstrap RST has a few easy ways to quickly get started, each one
+          appealing to a different skill level and use case. Read through to
+          see what suits your particular needs.
+.. ----------------------------------------------------------------------------
+
+
+.. row:: bs-downloads
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 4
+
+      :h3:`Bootstrap RST`
+
+      Compiled and minified CSS, JavaScript, and fonts. No docs or original
+      source files are included.
+
+      .. button:: Get Bootstrap RST
+         :class: outline large
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 4
+
+      :h3:`Source`
+
+      Compiled and minified CSS, JavaScript, and fonts. No docs or original
+      source files are included.
+
+      .. button:: Download source
+         :class: outline large
+         :target: #
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 4
+
+      :h3:`Bootstrap`
+
+      Compiled and minified CSS, JavaScript, and fonts. No docs or original
+      source files are included.
+
+      .. button:: Download Bootstrap
+         :class: outline large
+   .. -------------------------------------------------------------------------
+
+
+Browser and device support
+===============================================================================
+.. lead:: Bootstrap is built to work best in the latest desktop and mobile
+          browsers, meaning older browsers might display differently styled,
+          though fully functional, renderings of certain components.
+
+Supported browsers
+------------------
+
+Specifically, we support the latest versions of the following browsers and
+platforms. On Windows, we support Internet Explorer 8-11. More specific support
+information is provided below.
+
+.. class:: table table-bordered table-striped
+
+   +----------+--------+-------------------+-------------------+----------+-------------------+
+   |          | Chrome | Firefox           | Internet Explorer | Opera    | Safari            |
+   +==========+========+===================+===================+==========+===================+
+   | Android  | |ok|   | |remove|          | :text-muted:`N/A` | |remove| | :text-muted:`N/A` |
+   +----------+--------+-------------------+-------------------+----------+-------------------+
+   | iOS      | |ok|   | :text-muted:`N/A` | :text-muted:`N/A` | |remove| | |ok|              |
+   +----------+--------+-------------------+-------------------+----------+-------------------+
+   | Mac OS X |	|ok|   | |ok|              | :text-muted:`N/A` | |ok|     | |ok|              |
+   +----------+--------+-------------------+-------------------+----------+-------------------+
+   | Windows  |	|ok|   | |ok|	           | |ok|              | |ok|     | |remove|          |
+   +----------+--------+-------------------+-------------------+----------+-------------------+
+
+
+.. ----------------------------------------------------------------------------
+.. container:: btn-group
+
+   .. button:: 1
+   .. button:: 2
+   .. container:: btn-group
+
+      .. button:: |caret| :sr-only:`Dropdown`
+         :class: toggle
+
+      .. class:: dropdown-menu
+
+         * `Drowpdown link <www.loria.fr>`_
+         * `Drowpdown link <www.loria.fr>`_
+.. ----------------------------------------------------------------------------
+
+.. ----------------------------------------------------------------------------
+.. container:: btn-group
+
+   .. button:: Default
+   .. button:: |caret| :sr-only:`Dropdown`
+      :class: toggle
+
+   .. class:: dropdown-menu
+
+      * `Drowpdown link <www.loria.fr>`_
+      * `Drowpdown link <www.loria.fr>`_
+.. ----------------------------------------------------------------------------
diff --git a/pelican-plugins/bootstrap-rst/doc/glyphicons-defs.txt b/pelican-plugins/bootstrap-rst/doc/glyphicons-defs.txt
new file mode 100644
index 0000000..277ca93
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/glyphicons-defs.txt
@@ -0,0 +1,801 @@
+.. role:: glyphicon-class
+
+.. |asterisk| raw:: html
+
+   <span class="glyphicon glyphicon-asterisk"></span>
+
+.. |plus| raw:: html
+
+   <span class="glyphicon glyphicon-plus"></span>
+
+.. |euro| raw:: html
+
+   <span class="glyphicon glyphicon-euro"></span>
+
+.. |minus| raw:: html
+
+   <span class="glyphicon glyphicon-minus"></span>
+
+.. |cloud| raw:: html
+
+   <span class="glyphicon glyphicon-cloud"></span>
+
+.. |envelope| raw:: html
+
+   <span class="glyphicon glyphicon-envelope"></span>
+
+.. |pencil| raw:: html
+
+   <span class="glyphicon glyphicon-pencil"></span>
+
+.. |glass| raw:: html
+
+   <span class="glyphicon glyphicon-glass"></span>
+
+.. |music| raw:: html
+
+   <span class="glyphicon glyphicon-music"></span>
+
+.. |search| raw:: html
+
+   <span class="glyphicon glyphicon-search"></span>
+
+.. |heart| raw:: html
+
+   <span class="glyphicon glyphicon-heart"></span>
+
+.. |star| raw:: html
+
+   <span class="glyphicon glyphicon-star"></span>
+
+.. |star-empty| raw:: html
+
+   <span class="glyphicon glyphicon-star-empty"></span>
+
+.. |user| raw:: html
+
+   <span class="glyphicon glyphicon-user"></span>
+
+.. |film| raw:: html
+
+   <span class="glyphicon glyphicon-film"></span>
+
+.. |th-large| raw:: html
+
+   <span class="glyphicon glyphicon-th-large"></span>
+
+.. |th| raw:: html
+
+   <span class="glyphicon glyphicon-th"></span>
+
+.. |th-list| raw:: html
+
+   <span class="glyphicon glyphicon-th-list"></span>
+
+.. |ok| raw:: html
+
+   <span class="glyphicon glyphicon-ok"></span>
+
+.. |remove| raw:: html
+
+   <span class="glyphicon glyphicon-remove"></span>
+
+.. |zoom-in| raw:: html
+
+   <span class="glyphicon glyphicon-zoom-in"></span>
+
+.. |zoom-out| raw:: html
+
+   <span class="glyphicon glyphicon-zoom-out"></span>
+
+.. |off| raw:: html
+
+   <span class="glyphicon glyphicon-off"></span>
+
+.. |signal| raw:: html
+
+   <span class="glyphicon glyphicon-signal"></span>
+
+.. |cog| raw:: html
+
+   <span class="glyphicon glyphicon-cog"></span>
+
+.. |trash| raw:: html
+
+   <span class="glyphicon glyphicon-trash"></span>
+
+.. |home| raw:: html
+
+   <span class="glyphicon glyphicon-home"></span>
+
+.. |file| raw:: html
+
+   <span class="glyphicon glyphicon-file"></span>
+
+.. |time| raw:: html
+
+   <span class="glyphicon glyphicon-time"></span>
+
+.. |road| raw:: html
+
+   <span class="glyphicon glyphicon-road"></span>
+
+.. |download-alt| raw:: html
+
+   <span class="glyphicon glyphicon-download-alt"></span>
+
+.. |download| raw:: html
+
+   <span class="glyphicon glyphicon-download"></span>
+
+.. |upload| raw:: html
+
+   <span class="glyphicon glyphicon-upload"></span>
+
+.. |inbox| raw:: html
+
+   <span class="glyphicon glyphicon-inbox"></span>
+
+.. |play-circle| raw:: html
+
+   <span class="glyphicon glyphicon-play-circle"></span>
+
+.. |repeat| raw:: html
+
+   <span class="glyphicon glyphicon-repeat"></span>
+
+.. |refresh| raw:: html
+
+   <span class="glyphicon glyphicon-refresh"></span>
+
+.. |list-alt| raw:: html
+
+   <span class="glyphicon glyphicon-list-alt"></span>
+
+.. |lock| raw:: html
+
+   <span class="glyphicon glyphicon-lock"></span>
+
+.. |flag| raw:: html
+
+   <span class="glyphicon glyphicon-flag"></span>
+
+.. |headphones| raw:: html
+
+   <span class="glyphicon glyphicon-headphones"></span>
+
+.. |volume-off| raw:: html
+
+   <span class="glyphicon glyphicon-volume-off"></span>
+
+.. |volume-down| raw:: html
+
+   <span class="glyphicon glyphicon-volume-down"></span>
+
+.. |volume-up| raw:: html
+
+   <span class="glyphicon glyphicon-volume-up"></span>
+
+.. |qrcode| raw:: html
+
+   <span class="glyphicon glyphicon-qrcode"></span>
+
+.. |barcode| raw:: html
+
+   <span class="glyphicon glyphicon-barcode"></span>
+
+.. |tag| raw:: html
+
+   <span class="glyphicon glyphicon-tag"></span>
+
+.. |tags| raw:: html
+
+   <span class="glyphicon glyphicon-tags"></span>
+
+.. |book| raw:: html
+
+   <span class="glyphicon glyphicon-book"></span>
+
+.. |bookmark| raw:: html
+
+   <span class="glyphicon glyphicon-bookmark"></span>
+
+.. |print| raw:: html
+
+   <span class="glyphicon glyphicon-print"></span>
+
+.. |camera| raw:: html
+
+   <span class="glyphicon glyphicon-camera"></span>
+
+.. |font| raw:: html
+
+   <span class="glyphicon glyphicon-font"></span>
+
+.. |bold| raw:: html
+
+   <span class="glyphicon glyphicon-bold"></span>
+
+.. |italic| raw:: html
+
+   <span class="glyphicon glyphicon-italic"></span>
+
+.. |text-height| raw:: html
+
+   <span class="glyphicon glyphicon-text-height"></span>
+
+.. |text-width| raw:: html
+
+   <span class="glyphicon glyphicon-text-width"></span>
+
+.. |align-left| raw:: html
+
+   <span class="glyphicon glyphicon-align-left"></span>
+
+.. |align-center| raw:: html
+
+   <span class="glyphicon glyphicon-align-center"></span>
+
+.. |align-right| raw:: html
+
+   <span class="glyphicon glyphicon-align-right"></span>
+
+.. |align-justify| raw:: html
+
+   <span class="glyphicon glyphicon-align-justify"></span>
+
+.. |list| raw:: html
+
+   <span class="glyphicon glyphicon-list"></span>
+
+.. |indent-left| raw:: html
+
+   <span class="glyphicon glyphicon-indent-left"></span>
+
+.. |indent-right| raw:: html
+
+   <span class="glyphicon glyphicon-indent-right"></span>
+
+.. |facetime-video| raw:: html
+
+   <span class="glyphicon glyphicon-facetime-video"></span>
+
+.. |picture| raw:: html
+
+   <span class="glyphicon glyphicon-picture"></span>
+
+.. |map-marker| raw:: html
+
+   <span class="glyphicon glyphicon-map-marker"></span>
+
+.. |adjust| raw:: html
+
+   <span class="glyphicon glyphicon-adjust"></span>
+
+.. |tint| raw:: html
+
+   <span class="glyphicon glyphicon-tint"></span>
+
+.. |edit| raw:: html
+
+   <span class="glyphicon glyphicon-edit"></span>
+
+.. |share| raw:: html
+
+   <span class="glyphicon glyphicon-share"></span>
+
+.. |check| raw:: html
+
+   <span class="glyphicon glyphicon-check"></span>
+
+.. |move| raw:: html
+
+   <span class="glyphicon glyphicon-move"></span>
+
+.. |step-backward| raw:: html
+
+   <span class="glyphicon glyphicon-step-backward"></span>
+
+.. |fast-backward| raw:: html
+
+   <span class="glyphicon glyphicon-fast-backward"></span>
+
+.. |backward| raw:: html
+
+   <span class="glyphicon glyphicon-backward"></span>
+
+.. |play| raw:: html
+
+   <span class="glyphicon glyphicon-play"></span>
+
+.. |pause| raw:: html
+
+   <span class="glyphicon glyphicon-pause"></span>
+
+.. |stop| raw:: html
+
+   <span class="glyphicon glyphicon-stop"></span>
+
+.. |forward| raw:: html
+
+   <span class="glyphicon glyphicon-forward"></span>
+
+.. |fast-forward| raw:: html
+
+   <span class="glyphicon glyphicon-fast-forward"></span>
+
+.. |step-forward| raw:: html
+
+   <span class="glyphicon glyphicon-step-forward"></span>
+
+.. |eject| raw:: html
+
+   <span class="glyphicon glyphicon-eject"></span>
+
+.. |chevron-left| raw:: html
+
+   <span class="glyphicon glyphicon-chevron-left"></span>
+
+.. |chevron-right| raw:: html
+
+   <span class="glyphicon glyphicon-chevron-right"></span>
+
+.. |plus-sign| raw:: html
+
+   <span class="glyphicon glyphicon-plus-sign"></span>
+
+.. |minus-sign| raw:: html
+
+   <span class="glyphicon glyphicon-minus-sign"></span>
+
+.. |remove-sign| raw:: html
+
+   <span class="glyphicon glyphicon-remove-sign"></span>
+
+.. |ok-sign| raw:: html
+
+   <span class="glyphicon glyphicon-ok-sign"></span>
+
+.. |question-sign| raw:: html
+
+   <span class="glyphicon glyphicon-question-sign"></span>
+
+.. |info-sign| raw:: html
+
+   <span class="glyphicon glyphicon-info-sign"></span>
+
+.. |screenshot| raw:: html
+
+   <span class="glyphicon glyphicon-screenshot"></span>
+
+.. |remove-circle| raw:: html
+
+   <span class="glyphicon glyphicon-remove-circle"></span>
+
+.. |ok-circle| raw:: html
+
+   <span class="glyphicon glyphicon-ok-circle"></span>
+
+.. |ban-circle| raw:: html
+
+   <span class="glyphicon glyphicon-ban-circle"></span>
+
+.. |arrow-left| raw:: html
+
+   <span class="glyphicon glyphicon-arrow-left"></span>
+
+.. |arrow-right| raw:: html
+
+   <span class="glyphicon glyphicon-arrow-right"></span>
+
+.. |arrow-up| raw:: html
+
+   <span class="glyphicon glyphicon-arrow-up"></span>
+
+.. |arrow-down| raw:: html
+
+   <span class="glyphicon glyphicon-arrow-down"></span>
+
+.. |share-alt| raw:: html
+
+   <span class="glyphicon glyphicon-share-alt"></span>
+
+.. |resize-full| raw:: html
+
+   <span class="glyphicon glyphicon-resize-full"></span>
+
+.. |resize-small| raw:: html
+
+   <span class="glyphicon glyphicon-resize-small"></span>
+
+.. |exclamation-sign| raw:: html
+
+   <span class="glyphicon glyphicon-exclamation-sign"></span>
+
+.. |gift| raw:: html
+
+   <span class="glyphicon glyphicon-gift"></span>
+
+.. |leaf| raw:: html
+
+   <span class="glyphicon glyphicon-leaf"></span>
+
+.. |fire| raw:: html
+
+   <span class="glyphicon glyphicon-fire"></span>
+
+.. |eye-open| raw:: html
+
+   <span class="glyphicon glyphicon-eye-open"></span>
+
+.. |eye-close| raw:: html
+
+   <span class="glyphicon glyphicon-eye-close"></span>
+
+.. |warning-sign| raw:: html
+
+   <span class="glyphicon glyphicon-warning-sign"></span>
+
+.. |plane| raw:: html
+
+   <span class="glyphicon glyphicon-plane"></span>
+
+.. |calendar| raw:: html
+
+   <span class="glyphicon glyphicon-calendar"></span>
+
+.. |random| raw:: html
+
+   <span class="glyphicon glyphicon-random"></span>
+
+.. |comment| raw:: html
+
+   <span class="glyphicon glyphicon-comment"></span>
+
+.. |magnet| raw:: html
+
+   <span class="glyphicon glyphicon-magnet"></span>
+
+.. |chevron-up| raw:: html
+
+   <span class="glyphicon glyphicon-chevron-up"></span>
+
+.. |chevron-down| raw:: html
+
+   <span class="glyphicon glyphicon-chevron-down"></span>
+
+.. |retweet| raw:: html
+
+   <span class="glyphicon glyphicon-retweet"></span>
+
+.. |shopping-cart| raw:: html
+
+   <span class="glyphicon glyphicon-shopping-cart"></span>
+
+.. |folder-close| raw:: html
+
+   <span class="glyphicon glyphicon-folder-close"></span>
+
+.. |folder-open| raw:: html
+
+   <span class="glyphicon glyphicon-folder-open"></span>
+
+.. |resize-vertical| raw:: html
+
+   <span class="glyphicon glyphicon-resize-vertical"></span>
+
+.. |resize-horizontal| raw:: html
+
+   <span class="glyphicon glyphicon-resize-horizontal"></span>
+
+.. |hdd| raw:: html
+
+   <span class="glyphicon glyphicon-hdd"></span>
+
+.. |bullhorn| raw:: html
+
+   <span class="glyphicon glyphicon-bullhorn"></span>
+
+.. |bell| raw:: html
+
+   <span class="glyphicon glyphicon-bell"></span>
+
+.. |certificate| raw:: html
+
+   <span class="glyphicon glyphicon-certificate"></span>
+
+.. |thumbs-up| raw:: html
+
+   <span class="glyphicon glyphicon-thumbs-up"></span>
+
+.. |thumbs-down| raw:: html
+
+   <span class="glyphicon glyphicon-thumbs-down"></span>
+
+.. |hand-right| raw:: html
+
+   <span class="glyphicon glyphicon-hand-right"></span>
+
+.. |hand-left| raw:: html
+
+   <span class="glyphicon glyphicon-hand-left"></span>
+
+.. |hand-up| raw:: html
+
+   <span class="glyphicon glyphicon-hand-up"></span>
+
+.. |hand-down| raw:: html
+
+   <span class="glyphicon glyphicon-hand-down"></span>
+
+.. |circle-arrow-right| raw:: html
+
+   <span class="glyphicon glyphicon-circle-arrow-right"></span>
+
+.. |circle-arrow-left| raw:: html
+
+   <span class="glyphicon glyphicon-circle-arrow-left"></span>
+
+.. |circle-arrow-up| raw:: html
+
+   <span class="glyphicon glyphicon-circle-arrow-up"></span>
+
+.. |circle-arrow-down| raw:: html
+
+   <span class="glyphicon glyphicon-circle-arrow-down"></span>
+
+.. |globe| raw:: html
+
+   <span class="glyphicon glyphicon-globe"></span>
+
+.. |wrench| raw:: html
+
+   <span class="glyphicon glyphicon-wrench"></span>
+
+.. |tasks| raw:: html
+
+   <span class="glyphicon glyphicon-tasks"></span>
+
+.. |filter| raw:: html
+
+   <span class="glyphicon glyphicon-filter"></span>
+
+.. |briefcase| raw:: html
+
+   <span class="glyphicon glyphicon-briefcase"></span>
+
+.. |fullscreen| raw:: html
+
+   <span class="glyphicon glyphicon-fullscreen"></span>
+
+.. |dashboard| raw:: html
+
+   <span class="glyphicon glyphicon-dashboard"></span>
+
+.. |paperclip| raw:: html
+
+   <span class="glyphicon glyphicon-paperclip"></span>
+
+.. |heart-empty| raw:: html
+
+   <span class="glyphicon glyphicon-heart-empty"></span>
+
+.. |link| raw:: html
+
+   <span class="glyphicon glyphicon-link"></span>
+
+.. |phone| raw:: html
+
+   <span class="glyphicon glyphicon-phone"></span>
+
+.. |pushpin| raw:: html
+
+   <span class="glyphicon glyphicon-pushpin"></span>
+
+.. |usd| raw:: html
+
+   <span class="glyphicon glyphicon-usd"></span>
+
+.. |gbp| raw:: html
+
+   <span class="glyphicon glyphicon-gbp"></span>
+
+.. |sort| raw:: html
+
+   <span class="glyphicon glyphicon-sort"></span>
+
+.. |sort-by-alphabet| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-alphabet"></span>
+
+.. |sort-by-alphabet-alt| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-alphabet-alt"></span>
+
+.. |sort-by-order| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-order"></span>
+
+.. |sort-by-order-alt| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-order-alt"></span>
+
+.. |sort-by-attributes| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-attributes"></span>
+
+.. |sort-by-attributes-alt| raw:: html
+
+   <span class="glyphicon glyphicon-sort-by-attributes-alt"></span>
+
+.. |unchecked| raw:: html
+
+   <span class="glyphicon glyphicon-unchecked"></span>
+
+.. |expand| raw:: html
+
+   <span class="glyphicon glyphicon-expand"></span>
+
+.. |collapse-down| raw:: html
+
+   <span class="glyphicon glyphicon-collapse-down"></span>
+
+.. |collapse-up| raw:: html
+
+   <span class="glyphicon glyphicon-collapse-up"></span>
+
+.. |log-in| raw:: html
+
+   <span class="glyphicon glyphicon-log-in"></span>
+
+.. |flash| raw:: html
+
+   <span class="glyphicon glyphicon-flash"></span>
+
+.. |log-out| raw:: html
+
+   <span class="glyphicon glyphicon-log-out"></span>
+
+.. |new-window| raw:: html
+
+   <span class="glyphicon glyphicon-new-window"></span>
+
+.. |record| raw:: html
+
+   <span class="glyphicon glyphicon-record"></span>
+
+.. |save| raw:: html
+
+   <span class="glyphicon glyphicon-save"></span>
+
+.. |open| raw:: html
+
+   <span class="glyphicon glyphicon-open"></span>
+
+.. |saved| raw:: html
+
+   <span class="glyphicon glyphicon-saved"></span>
+
+.. |import| raw:: html
+
+   <span class="glyphicon glyphicon-import"></span>
+
+.. |export| raw:: html
+
+   <span class="glyphicon glyphicon-export"></span>
+
+.. |send| raw:: html
+
+   <span class="glyphicon glyphicon-send"></span>
+
+.. |floppy-disk| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-disk"></span>
+
+.. |floppy-saved| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-saved"></span>
+
+.. |floppy-remove| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-remove"></span>
+
+.. |floppy-save| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-save"></span>
+
+.. |floppy-open| raw:: html
+
+   <span class="glyphicon glyphicon-floppy-open"></span>
+
+.. |credit-card| raw:: html
+
+   <span class="glyphicon glyphicon-credit-card"></span>
+
+.. |transfer| raw:: html
+
+   <span class="glyphicon glyphicon-transfer"></span>
+
+.. |cutlery| raw:: html
+
+   <span class="glyphicon glyphicon-cutlery"></span>
+
+.. |header| raw:: html
+
+   <span class="glyphicon glyphicon-header"></span>
+
+.. |compressed| raw:: html
+
+   <span class="glyphicon glyphicon-compressed"></span>
+
+.. |earphone| raw:: html
+
+   <span class="glyphicon glyphicon-earphone"></span>
+
+.. |phone-alt| raw:: html
+
+   <span class="glyphicon glyphicon-phone-alt"></span>
+
+.. |tower| raw:: html
+
+   <span class="glyphicon glyphicon-tower"></span>
+
+.. |stats| raw:: html
+
+   <span class="glyphicon glyphicon-stats"></span>
+
+.. |sd-video| raw:: html
+
+   <span class="glyphicon glyphicon-sd-video"></span>
+
+.. |hd-video| raw:: html
+
+   <span class="glyphicon glyphicon-hd-video"></span>
+
+.. |subtitles| raw:: html
+
+   <span class="glyphicon glyphicon-subtitles"></span>
+
+.. |sound-stereo| raw:: html
+
+   <span class="glyphicon glyphicon-sound-stereo"></span>
+
+.. |sound-dolby| raw:: html
+
+   <span class="glyphicon glyphicon-sound-dolby"></span>
+
+.. |sound-5-1| raw:: html
+
+   <span class="glyphicon glyphicon-sound-5-1"></span>
+
+.. |sound-6-1| raw:: html
+
+   <span class="glyphicon glyphicon-sound-6-1"></span>
+
+.. |sound-7-1| raw:: html
+
+   <span class="glyphicon glyphicon-sound-7-1"></span>
+
+.. |copyright-mark| raw:: html
+
+   <span class="glyphicon glyphicon-copyright-mark"></span>
+
+.. |registration-mark| raw:: html
+
+   <span class="glyphicon glyphicon-registration-mark"></span>
+
+.. |cloud-download| raw:: html
+
+   <span class="glyphicon glyphicon-cloud-download"></span>
+
+.. |cloud-upload| raw:: html
+
+   <span class="glyphicon glyphicon-cloud-upload"></span>
+
+.. |tree-conifer| raw:: html
+
+   <span class="glyphicon glyphicon-tree-conifer"></span>
+
+.. |tree-deciduous| raw:: html
+
+   <span class="glyphicon glyphicon-tree-deciduous"></span>
diff --git a/pelican-plugins/bootstrap-rst/doc/glyphicons-list.txt b/pelican-plugins/bootstrap-rst/doc/glyphicons-list.txt
new file mode 100644
index 0000000..bbdb990
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/glyphicons-list.txt
@@ -0,0 +1,225 @@
+.. row::
+
+   .. column::
+      :width: 3
+
+      .. class:: list-unstyled
+
+         * |asterisk| : asterisk
+         * |plus| : plus
+         * |euro| : euro
+         * |minus| : minus
+         * |cloud| : cloud
+         * |envelope| : envelope
+         * |pencil| : pencil
+         * |glass| : glass
+         * |music| : music
+         * |search| : search
+         * |heart| : heart
+         * |star| : star
+         * |star-empty| : star-empty
+         * |user| : user
+         * |film| : film
+         * |th-large| : th-large
+         * |th| : th
+         * |th-list| : th-list
+         * |ok| : ok
+         * |remove| : remove
+         * |zoom-in| : zoom-in
+         * |zoom-out| : zoom-out
+         * |off| : off
+         * |signal| : signal
+         * |cog| : cog
+         * |trash| : trash
+         * |home| : home
+         * |file| : file
+         * |time| : time
+         * |road| : road
+         * |download-alt| : download-alt
+         * |download| : download
+         * |upload| : upload
+         * |inbox| : inbox
+         * |play-circle| : play-circle
+         * |repeat| : repeat
+         * |refresh| : refresh
+         * |list-alt| : list-alt
+         * |lock| : lock
+         * |flag| : flag
+         * |headphones| : headphones
+         * |volume-off| : volume-off
+         * |volume-down| : volume-down
+         * |volume-up| : volume-up
+         * |qrcode| : qrcode
+         * |barcode| : barcode
+         * |tag| : tag
+         * |tags| : tags
+         * |book| : book
+         * |bookmark| : bookmark
+
+   .. column::
+      :width: 3
+
+      .. class:: list-unstyled
+
+         * |print| : print
+         * |camera| : camera
+         * |font| : font
+         * |bold| : bold
+         * |italic| : italic
+         * |text-height| : text-height
+         * |text-width| : text-width
+         * |align-left| : align-left
+         * |align-center| : align-center
+         * |align-right| : align-right
+         * |align-justify| : align-justify
+         * |list| : list
+         * |indent-left| : indent-left
+         * |indent-right| : indent-right
+         * |facetime-video| : facetime-video
+         * |picture| : picture
+         * |map-marker| : map-marker
+         * |adjust| : adjust
+         * |tint| : tint
+         * |edit| : edit
+         * |share| : share
+         * |check| : check
+         * |move| : move
+         * |step-backward| : step-backward
+         * |fast-backward| : fast-backward
+         * |backward| : backward
+         * |play| : play
+         * |pause| : pause
+         * |stop| : stop
+         * |forward| : forward
+         * |fast-forward| : fast-forward
+         * |step-forward| : step-forward
+         * |eject| : eject
+         * |chevron-left| : chevron-left
+         * |chevron-right| : chevron-right
+         * |plus-sign| : plus-sign
+         * |minus-sign| : minus-sign
+         * |remove-sign| : remove-sign
+         * |ok-sign| : ok-sign
+         * |question-sign| : question-sign
+         * |info-sign| : info-sign
+         * |screenshot| : screenshot
+         * |remove-circle| : remove-circle
+         * |ok-circle| : ok-circle
+         * |ban-circle| : ban-circle
+         * |arrow-left| : arrow-left
+         * |arrow-right| : arrow-right
+         * |arrow-up| : arrow-up
+         * |arrow-down| : arrow-down
+         * |share-alt| : share-alt
+
+   .. column::
+      :width: 3
+
+      .. class:: list-unstyled
+
+         * |resize-full| : resize-full
+         * |resize-small| : resize-small
+         * |exclamation-sign| : exclamation-sign
+         * |gift| : gift
+         * |leaf| : leaf
+         * |fire| : fire
+         * |eye-open| : eye-open
+         * |eye-close| : eye-close
+         * |warning-sign| : warning-sign
+         * |plane| : plane
+         * |calendar| : calendar
+         * |random| : random
+         * |comment| : comment
+         * |magnet| : magnet
+         * |chevron-up| : chevron-up
+         * |chevron-down| : chevron-down
+         * |retweet| : retweet
+         * |shopping-cart| : shopping-cart
+         * |folder-close| : folder-close
+         * |folder-open| : folder-open
+         * |resize-vertical| : resize-vertical
+         * |resize-horizontal| : resize-horizontal
+         * |hdd| : hdd
+         * |bullhorn| : bullhorn
+         * |bell| : bell
+         * |certificate| : certificate
+         * |thumbs-up| : thumbs-up
+         * |thumbs-down| : thumbs-down
+         * |hand-right| : hand-right
+         * |hand-left| : hand-left
+         * |hand-up| : hand-up
+         * |hand-down| : hand-down
+         * |circle-arrow-right| : circle-arrow-right
+         * |circle-arrow-left| : circle-arrow-left
+         * |circle-arrow-up| : circle-arrow-up
+         * |circle-arrow-down| : circle-arrow-down
+         * |globe| : globe
+         * |wrench| : wrench
+         * |tasks| : tasks
+         * |filter| : filter
+         * |briefcase| : briefcase
+         * |fullscreen| : fullscreen
+         * |dashboard| : dashboard
+         * |paperclip| : paperclip
+         * |heart-empty| : heart-empty
+         * |link| : link
+         * |phone| : phone
+         * |pushpin| : pushpin
+         * |usd| : usd
+         * |gbp| : gbp
+
+   .. column::
+      :width: 3
+
+      .. class:: list-unstyled
+
+         * |sort| : sort
+         * |sort-by-alphabet| : sort-by-alphabet
+         * |sort-by-alphabet-alt| : sort-by-alphabet-alt
+         * |sort-by-order| : sort-by-order
+         * |sort-by-order-alt| : sort-by-order-alt
+         * |sort-by-attributes| : sort-by-attributes
+         * |sort-by-attributes-alt| : sort-by-attributes-alt
+         * |unchecked| : unchecked
+         * |expand| : expand
+         * |collapse-down| : collapse-down
+         * |collapse-up| : collapse-up
+         * |log-in| : log-in
+         * |flash| : flash
+         * |log-out| : log-out
+         * |new-window| : new-window
+         * |record| : record
+         * |save| : save
+         * |open| : open
+         * |saved| : saved
+         * |import| : import
+         * |export| : export
+         * |send| : send
+         * |floppy-disk| : floppy-disk
+         * |floppy-saved| : floppy-saved
+         * |floppy-remove| : floppy-remove
+         * |floppy-save| : floppy-save
+         * |floppy-open| : floppy-open
+         * |credit-card| : credit-card
+         * |transfer| : transfer
+         * |cutlery| : cutlery
+         * |header| : header
+         * |compressed| : compressed
+         * |earphone| : earphone
+         * |phone-alt| : phone-alt
+         * |tower| : tower
+         * |stats| : stats
+         * |sd-video| : sd-video
+         * |hd-video| : hd-video
+         * |subtitles| : subtitles
+         * |sound-stereo| : sound-stereo
+         * |sound-dolby| : sound-dolby
+         * |sound-5-1| : sound-5-1
+         * |sound-6-1| : sound-6-1
+         * |sound-7-1| : sound-7-1
+         * |copyright-mark| : copyright-mark
+         * |registration-mark| : registration-mark
+         * |cloud-download| : cloud-download
+         * |cloud-upload| : cloud-upload
+         * |tree-conifer| : tree-conifer
+         * |tree-deciduous| : tree-deciduous
diff --git a/pelican-plugins/bootstrap-rst/doc/index.rst b/pelican-plugins/bootstrap-rst/doc/index.rst
new file mode 100644
index 0000000..70375bb
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/doc/index.rst
@@ -0,0 +1,403 @@
+.. default-role:: code
+
+.. role:: text-muted
+.. role:: text-primary
+.. role:: text-success
+.. role:: text-info
+.. role:: text-warning
+.. role:: text-danger
+
+
+.. ----------------------------------------------------------------------------
+.. header:: bs-docs-header
+
+   .. container:: container
+
+      :h1:`Bootstrap RST`
+
+      An overview of Bootstrap RST, basic templates and examples, and more.
+.. ----------------------------------------------------------------------------
+
+.. ----------------------------------------------------------------------------
+.. footer:: bs-docs-footer
+
+   Bootstrap RST - Copyright (c) 2014 Nicolas P. Rougier
+
+   `Bootstrap <http://getbootstrap.com>`_ - Copyright (c) 2011-2014 Twitter, Inc
+
+   Code licensed under MIT, documentation under CC BY 3.0.
+
+   `Get page source <doc/index.rst>`_
+
+   .. class:: bs-docs-footer-links muted
+
+      * `GitHub <https://github.com/rougier/bootstrap-rst>`_
+      * ·
+      * `Examples <examples.html>`_
+      * ·
+      * `Documentation <about.html>`_
+      * ·
+      * `About <about.html>`_
+      * ·
+      * `Issues <https://github.com/rougier/bootstrap-rst/issues>`_
+      * ·
+      * `Releases <https://github.com/rougier/bootstrap-rst/releases>`_
+.. ----------------------------------------------------------------------------
+
+
+.. ----------------------------------------------------------------------------
+.. sidebar:: sidebar
+
+   .. contents:: content
+      :depth: 2
+.. ----------------------------------------------------------------------------
+
+Bootstrap RST
+===============================================================================
+.. lead:: Bootstrap RST provides easy acces to bootstrap using the restructured
+          text markup language.
+
+Bootstrap RST offers an easy access to the `bootstrap
+<http://getbootstrap.com/>`_ framework using the `restructured text`_ markup
+language. Bootstrap RST provides a set of new directives and roles (row,
+column, button, list, etc.)  that allow seamless integration of the bootstrap
+framework. Have a look at the `source`_ of this page for example and see below
+for what is available so far.
+
+.. _Nicolas P. Rougier: http://www.loria.fr/~rougier/
+.. _restructured text: http://docutils.sourceforge.net/rst.html
+.. _source: doc/index.rst
+
+
+
+Work in Progress
+===============================================================================
+.. lead:: Bootstrap RST is work in progress. We report here what has been done
+          so far, what needs to be done and what is not relevant.
+.. ----------------------------------------------------------------------------
+
+
+CSS
+---
+
+Global CSS settings, fundamental HTML elements styled and enhanced with
+extensible classes, and an advanced grid system.
+
+
+.. row::
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Grid system`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `grids <CSS.html#grid-system>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Typography`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `typography <CSS.html#typography>`_
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Code`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `code <CSS.html#code>`_
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Tables`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+
+      See `tables <CSS.html#tables>`_
+   .. -------------------------------------------------------------------------
+
+
+.. row::
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Forms`
+      :text-muted:`N/A`
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Buttons`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `buttons <CSS.html#buttons>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Images`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `images <CSS.html#images>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Helper classes`
+
+      .. progress:: 50%
+         :class: warning
+         :label: WIP
+
+      See `helper classes <CSS.html#helper-classes>`_
+   .. -------------------------------------------------------------------------
+
+
+
+Components
+----------
+
+Over a dozen reusable components built to provide iconography, dropdowns, input
+groups, navigation, alerts, and much more.
+
+
+.. row::
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Glyphicons`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `glyphicons <components.html#glyphicons>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Dropdowns`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `dropdowns <components.html#dropdowns>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Button groups`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `button groups <components.html#button-groups>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Glyphicons`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `button dropdowns <components.html#button-dropdowns>`_
+   .. -------------------------------------------------------------------------
+
+
+.. row::
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Input groups`
+      :text-muted:`N/A`
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Navs`
+
+      .. progress:: 25%
+         :class: danger
+         :label: WIP
+      See `navs <components.html#navs>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Navbar`
+
+      .. progress:: 25%
+         :class: danger
+         :label: WIP
+      See `navbar <components.html#navbar>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Breadcrumbs`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `breadcrumbs <components.html#breadcrumbs>`_
+   .. -------------------------------------------------------------------------
+
+
+.. row::
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Pagination`
+
+      .. progress:: 25%
+         :class: danger
+         :label: WIP
+      See `pagination <components.html#pagination>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Labels`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `labels <components.html#labels>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Badges`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `badges <components.html#badges>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Jumbotron`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `jumbotron <components.html#jumbotron>`_
+   .. -------------------------------------------------------------------------
+
+
+.. row::
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Page header`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `page header <components.html#page-header>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Thumbnails`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `thumbnails <components.html#thumbnails>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Alerts`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `alerts <components.html#alerts>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Progress bars`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `progress bars <components.html#progress-bars>`_
+   .. -------------------------------------------------------------------------
+
+
+.. row::
+
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Media object`
+
+      .. progress:: 25%
+         :class: danger
+         :label: WIP
+      See `media object <components.html#media-object>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`List group`
+
+      .. progress:: 25%
+         :class: danger
+         :label: WIP
+      See `list group <components.html#list-group>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Panels`
+
+      .. progress:: 25%
+         :class: danger
+         :label: WIP
+      See `panels <components.html#panels>`_
+   .. -------------------------------------------------------------------------
+   .. column::
+      :width: 3
+
+      :h4:`Wells`
+
+      .. progress:: 100%
+         :class: success
+         :label: Done !
+      See `wells <components.html#wells>`_
+   .. -------------------------------------------------------------------------
diff --git a/pelican-plugins/bootstrap-rst/docs-min.css b/pelican-plugins/bootstrap-rst/docs-min.css
new file mode 100644
index 0000000..3dc750b
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/docs-min.css
@@ -0,0 +1,1542 @@
+/*!
+ * Bootstrap Docs (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under the Creative Commons Attribution 3.0 Unported License. For
+ * details, see http://creativecommons.org/licenses/by/3.0/.
+ */
+body {
+    position: relative
+}
+
+.table code {
+    font-size: 13px;
+    font-weight: 400
+}
+
+.btn-outline {
+    color: #563d7c;
+    background-color: transparent;
+    border-color: #563d7c
+}
+
+.btn-outline:hover, .btn-outline:focus, .btn-outline:active {
+    color: #fff;
+    background-color: #563d7c;
+    border-color: #563d7c
+}
+
+.btn-outline-inverse {
+    color: #fff;
+    background-color: transparent;
+    border-color: #cdbfe3
+}
+
+.btn-outline-inverse:hover, .btn-outline-inverse:focus, .btn-outline-inverse:active {
+    color: #563d7c;
+    text-shadow: none;
+    background-color: #fff;
+    border-color: #fff
+}
+
+.bs-docs-booticon {
+    display: block;
+    font-weight: 500;
+    color: #fff;
+    background-color: #563d7c;
+    border-radius: 15%;
+    cursor: default;
+    text-align: center
+}
+
+.bs-docs-booticon-sm {
+    width: 30px;
+    height: 30px;
+    font-size: 20px;
+    line-height: 28px
+}
+
+.bs-docs-booticon-lg {
+    width: 144px;
+    height: 144px;
+    font-size: 108px;
+    line-height: 140px
+}
+
+.bs-docs-booticon-inverse {
+    color: #563d7c;
+    background-color: #fff
+}
+
+.bs-docs-booticon-outline {
+    background-color: transparent;
+    border: 1px solid #cdbfe3
+}
+
+.bs-docs-nav {
+    margin-bottom: 0;
+    background-color: #fff;
+    border-bottom: 0
+}
+
+.bs-home-nav .bs-nav-b {
+    display: none
+}
+
+.bs-docs-nav .navbar-brand, .bs-docs-nav .navbar-nav>li>a {
+    color: #563d7c;
+    font-weight: 500
+}
+
+.bs-docs-nav .navbar-nav>li>a:hover, .bs-docs-nav .navbar-nav>.active>a,
+.bs-docs-nav .navbar-nav>.active>a:hover {
+    color: #463265;
+    background-color: #f9f9f9
+}
+
+.bs-docs-nav .navbar-toggle .icon-bar {
+    background-color: #563d7c
+}
+
+.bs-docs-nav .navbar-header .navbar-toggle {
+    border-color: #fff
+}
+
+.bs-docs-nav .navbar-header .navbar-toggle:hover, .bs-docs-nav .navbar-header .navbar-toggle:focus {
+    background-color: #f9f9f9;
+    border-color: #f9f9f9
+}
+
+.bs-docs-footer {
+    padding-top: 40px;
+    padding-bottom: 40px;
+    margin-top: 100px;
+    color: #777;
+    text-align: center;
+    border-top: 1px solid #e5e5e5
+}
+
+.bs-docs-footer-links {
+    margin-top: 20px;
+    padding-left: 0;
+    color: #999
+}
+
+.bs-docs-footer-links li {
+    display: inline;
+    padding: 0 2px
+}
+
+.bs-docs-footer-links li:first-child {
+    padding-left: 0
+}
+
+@media (min-width:768px){.bs-docs-footer p {
+        margin-bottom: 0
+    }
+}
+
+.bs-docs-social {
+    margin-bottom: 20px;
+    text-align: center
+}
+
+.bs-docs-social-buttons {
+    display: inline-block;
+    margin-bottom: 0;
+    padding-left: 0;
+    list-style: none
+}
+
+.bs-docs-social-buttons li {
+    display: inline-block;
+    line-height: 1;
+    padding: 5px 8px
+}
+
+.bs-docs-social-buttons .twitter-follow-button {
+    width: 225px !important
+}
+
+.bs-docs-social-buttons .twitter-share-button {
+    width: 98px !important
+}
+
+.github-btn {
+    border: 0;
+    overflow: hidden
+}
+
+.bs-docs-masthead, .bs-docs-header {
+    position: relative;
+    padding: 30px 15px;
+    color: #cdbfe3;
+    text-align: center;
+    text-shadow: 0 1px 0 rgba(0, 0, 0, .1);
+    background-color: #6f5499;
+    background-image: -webkit-linear-gradient(top, #563d7c 0, #6f5499 100%);
+    background-image: linear-gradient(to bottom, #563d7c 0, #6f5499 100%);
+    background-repeat: repeat-x;
+    filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0)
+}
+
+.bs-docs-masthead .bs-docs-booticon {
+    margin: 0 auto 30px
+}
+
+.bs-docs-masthead h1 {
+    font-weight: 300;
+    line-height: 1;
+    color: #fff
+}
+
+.bs-docs-masthead .lead {
+    margin: 0 auto 30px;
+    font-size: 20px;
+    color: #fff
+}
+
+.bs-docs-masthead .version {
+    margin-top: -15px;
+    margin-bottom: 30px;
+    color: #9783b9
+}
+
+.bs-docs-masthead .btn {
+    width: 100%;
+    padding: 15px 30px;
+    font-size: 20px
+}
+
+@media (min-width:480px){.bs-docs-masthead .btn {
+        width: auto
+    }
+}
+
+@media (min-width:768px){.bs-docs-masthead {
+        padding-top: 80px;
+        padding-bottom: 80px
+    }
+
+    .bs-docs-masthead h1 {
+        font-size: 60px
+    }
+
+    .bs-docs-masthead .lead {
+        font-size: 24px
+    }
+}
+
+@media (min-width:992px){.bs-docs-masthead .lead {
+        width: 80%;
+        font-size: 30px
+    }
+}
+
+.bs-docs-header {
+    margin-bottom: 40px;
+    font-size: 20px
+}
+
+.bs-docs-header h1 {
+    margin-top: 0;
+    color: #fff
+}
+
+.bs-docs-header p {
+    margin-bottom: 0;
+    font-weight: 300;
+    line-height: 1.4
+}
+
+.bs-docs-header .container {
+    position: relative
+}
+
+@media (min-width:768px){.bs-docs-header {
+        padding-top: 60px;
+        padding-bottom: 60px;
+        font-size: 24px;
+        text-align: left
+    }
+
+    .bs-docs-header h1 {
+        font-size: 60px;
+        line-height: 1
+    }
+}
+
+@media (min-width:992px){.bs-docs-header h1, .bs-docs-header p {
+        margin-right: 380px
+    }
+}
+
+.carbonad {
+    width: auto !important;
+    margin: 30px -30px -31px !important;
+    padding: 20px !important;
+    overflow: hidden;
+    height: auto !important;
+    font-size: 13px !important;
+    line-height: 16px !important;
+    text-align: left;
+    background: transparent !important;
+    border: solid #866ab3 !important;
+    border-width: 1px 0 !important
+}
+
+.carbonad-img {
+    margin: 0 !important
+}
+
+.carbonad-text, .carbonad-tag {
+    float: none !important;
+    display: block !important;
+    width: auto !important;
+    height: auto !important;
+    margin-left: 145px !important;
+    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important
+}
+
+.carbonad-text {
+    padding-top: 0 !important
+}
+
+.carbonad-tag {
+    color: inherit !important;
+    text-align: left !important
+}
+
+.carbonad-text a, .carbonad-tag a {
+    color: #fff !important
+}
+
+.carbonad #azcarbon>img {
+    display: none
+}
+
+@media (min-width:480px){.carbonad {
+        width: 330px !important;
+        margin: 20px auto !important;
+        border-radius: 4px;
+        border-width: 1px !important
+    }
+
+    .bs-docs-masthead .carbonad {
+        margin: 50px auto 0 !important
+    }
+}
+
+@media (min-width:768px){.carbonad {
+        margin-left: 0 !important;
+        margin-right: 0 !important
+    }
+}
+
+@media (min-width:992px){.carbonad {
+        position: absolute;
+        top: 0;
+        right: 15px;
+        margin: 0 !important;
+        padding: 15px !important;
+        width: 330px !important
+    }
+
+    .bs-docs-masthead .carbonad {
+        position: static
+    }
+}
+
+.bs-docs-featurette {
+    padding-top: 40px;
+    padding-bottom: 40px;
+    font-size: 16px;
+    line-height: 1.5;
+    color: #555;
+    text-align: center;
+    background-color: #fff;
+    border-bottom: 1px solid #e5e5e5
+}
+
+.bs-docs-featurette+.bs-docs-footer {
+    margin-top: 0;
+    border-top: 0
+}
+
+.bs-docs-featurette-title {
+    font-size: 30px;
+    font-weight: 400;
+    color: #333;
+    margin-bottom: 5px
+}
+
+.half-rule {
+    width: 100px;
+    margin: 40px auto
+}
+
+.bs-docs-featurette h3 {
+    font-weight: 400;
+    color: #333;
+    margin-bottom: 5px
+}
+
+.bs-docs-featurette-img {
+    display: block;
+    margin-bottom: 20px;
+    color: #333
+}
+
+.bs-docs-featurette-img:hover {
+    text-decoration: none;
+    color: #428bca
+}
+
+.bs-docs-featurette-img img {
+    display: block;
+    margin-bottom: 15px
+}
+
+.bs-docs-featured-sites {
+    margin-left: -1px;
+    margin-right: -1px
+}
+
+.bs-docs-featured-sites .col-sm-3 {
+    padding-left: 1px;
+    padding-right: 1px
+}
+
+@media (min-width:480px){.bs-docs-featurette .img-responsive {
+        margin-top: 30px
+    }
+}
+
+@media (min-width:768px){.bs-docs-featurette {
+        padding-top: 100px;
+        padding-bottom: 100px
+    }
+
+    .bs-docs-featurette-title {
+        font-size: 40px
+    }
+
+    .bs-docs-featurette .lead {
+        margin-left: auto;
+        margin-right: auto;
+        max-width: 80%
+    }
+
+    .bs-docs-featured-sites .col-sm-3:first-child img {
+        border-top-left-radius: 4px;
+        border-bottom-left-radius: 4px
+    }
+
+    .bs-docs-featured-sites .col-sm-3:last-child img {
+        border-top-right-radius: 4px;
+        border-bottom-right-radius: 4px
+    }
+
+    .bs-docs-featurette .img-responsive {
+        margin-top: 0
+    }
+}
+
+.bs-docs-sidebar.affix {
+    position: static
+}
+
+@media (min-width:768px){.bs-docs-sidebar {
+        padding-left: 20px
+    }
+}
+
+.bs-docs-sidenav {
+    margin-top: 20px;
+    margin-bottom: 20px
+}
+
+.bs-docs-sidebar .nav>li>a {
+    display: block;
+    font-size: 13px;
+    font-weight: 500;
+    color: #999;
+    padding: 4px 20px
+}
+
+.bs-docs-sidebar .nav>li>a:hover, .bs-docs-sidebar .nav>li>a:focus {
+    padding-left: 19px;
+    color: #563d7c;
+    text-decoration: none;
+    background-color: transparent;
+    border-left: 1px solid #563d7c
+}
+
+.bs-docs-sidebar .nav>.active>a, .bs-docs-sidebar .nav>.active:hover>a,
+.bs-docs-sidebar .nav>.active:focus>a {
+    padding-left: 18px;
+    font-weight: 700;
+    color: #563d7c;
+    background-color: transparent;
+    border-left: 2px solid #563d7c
+}
+
+.bs-docs-sidebar .nav .nav {
+    display: none;
+    padding-bottom: 10px
+}
+
+.bs-docs-sidebar .nav .nav>li>a {
+    padding-top: 1px;
+    padding-bottom: 1px;
+    padding-left: 30px;
+    font-size: 12px;
+    font-weight: 400
+}
+
+.bs-docs-sidebar .nav .nav>li>a:hover, .bs-docs-sidebar .nav .nav>li>a:focus {
+    padding-left: 29px
+}
+
+.bs-docs-sidebar .nav .nav>.active>a, .bs-docs-sidebar .nav .nav>.active:hover>a,
+.bs-docs-sidebar .nav .nav>.active:focus>a {
+    font-weight: 500;
+    padding-left: 28px
+}
+
+.back-to-top {
+    display: none;
+    margin-top: 10px;
+    margin-left: 10px;
+    padding: 4px 10px;
+    font-size: 12px;
+    font-weight: 500;
+    color: #999
+}
+
+.back-to-top:hover {
+    text-decoration: none;
+    color: #563d7c
+}
+
+@media (min-width:768px){.back-to-top {
+        display: block
+    }
+}
+
+@media (min-width:992px){.bs-docs-sidebar .nav>.active>ul {
+        display: block
+    }
+
+    .bs-docs-sidebar.affix, .bs-docs-sidebar.affix-bottom {
+        width: 213px
+    }
+
+    .bs-docs-sidebar.affix {
+        position: fixed;
+        top: 20px
+    }
+
+    .bs-docs-sidebar.affix-bottom {
+        position: absolute
+    }
+
+    .bs-docs-sidebar.affix-bottom .bs-docs-sidenav, .bs-docs-sidebar.affix .bs-docs-sidenav {
+        margin-top: 0;
+        margin-bottom: 0
+    }
+}
+
+@media (min-width:1200px){.bs-docs-sidebar.affix-bottom, .bs-docs-sidebar.affix {
+        width: 263px
+    }
+}
+
+.bs-docs-section {
+    margin-bottom: 60px
+}
+
+.bs-docs-section:last-child {
+    margin-bottom: 0
+}
+
+h1[id] {
+    margin-top: 0;
+    padding-top: 20px
+}
+
+.bs-callout {
+    margin: 20px 0;
+    padding: 20px;
+    border-left: 3px solid #eee
+}
+
+.bs-callout h4 {
+    margin-top: 0;
+    margin-bottom: 5px
+}
+
+.bs-callout p:last-child {
+    margin-bottom: 0
+}
+
+.bs-callout code {
+    background-color: #fff;
+    border-radius: 3px
+}
+
+.bs-callout-danger {
+    background-color: #fdf7f7;
+    border-color: #d9534f
+}
+
+.bs-callout-danger h4 {
+    color: #d9534f
+}
+
+.bs-callout-warning {
+    background-color: #fcf8f2;
+    border-color: #f0ad4e
+}
+
+.bs-callout-warning h4 {
+    color: #f0ad4e
+}
+
+.bs-callout-info {
+    background-color: #f4f8fa;
+    border-color: #5bc0de
+}
+
+.bs-callout-info h4 {
+    color: #5bc0de
+}
+
+.color-swatches {
+    margin: 0 -5px;
+    overflow: hidden
+}
+
+.color-swatch {
+    float: left;
+    width: 60px;
+    height: 60px;
+    margin: 0 5px;
+    border-radius: 3px
+}
+
+@media (min-width:768px){.color-swatch {
+        width: 100px;
+        height: 100px
+    }
+}
+
+.color-swatches .gray-darker {
+    background-color: #222
+}
+
+.color-swatches .gray-dark {
+    background-color: #333
+}
+
+.color-swatches .gray {
+    background-color: #555
+}
+
+.color-swatches .gray-light {
+    background-color: #999
+}
+
+.color-swatches .gray-lighter {
+    background-color: #eee
+}
+
+.color-swatches .brand-primary {
+    background-color: #428bca
+}
+
+.color-swatches .brand-success {
+    background-color: #5cb85c
+}
+
+.color-swatches .brand-warning {
+    background-color: #f0ad4e
+}
+
+.color-swatches .brand-danger {
+    background-color: #d9534f
+}
+
+.color-swatches .brand-info {
+    background-color: #5bc0de
+}
+
+.color-swatches .bs-purple {
+    background-color: #563d7c
+}
+
+.color-swatches .bs-purple-light {
+    background-color: #c7bfd3
+}
+
+.color-swatches .bs-purple-lighter {
+    background-color: #e5e1ea
+}
+
+.color-swatches .bs-gray {
+    background-color: #f9f9f9
+}
+
+.bs-team .team-member {
+    color: #555;
+    line-height: 32px
+}
+
+.bs-team .team-member:hover {
+    color: #333;
+    text-decoration: none
+}
+
+.bs-team .github-btn {
+    float: right;
+    margin-top: 6px;
+    width: 180px;
+    height: 20px
+}
+
+.bs-team img {
+    float: left;
+    width: 32px;
+    margin-right: 10px;
+    border-radius: 4px
+}
+
+.show-grid {
+    margin-bottom: 15px
+}
+
+.show-grid [class^=col-] {
+    padding-top: 10px;
+    padding-bottom: 10px;
+    background-color: #eee;
+    background-color: rgba(86, 61, 124, .15);
+    border: 1px solid #ddd;
+    border: 1px solid rgba(86, 61, 124, .2)
+}
+
+.bs-example {
+    position: relative;
+    padding: 45px 15px 15px;
+    margin: 0 -15px 15px;
+    background-color: #fafafa;
+    box-shadow: inset 0 3px 6px rgba(0, 0, 0, .05);
+    border-color: #e5e5e5 #eee #eee;
+    border-style: solid;
+    border-width: 1px 0
+}
+
+.bs-example:after {
+    content: "Example";
+    position: absolute;
+    top: 15px;
+    left: 15px;
+    font-size: 12px;
+    font-weight: 700;
+    color: #bbb;
+    text-transform: uppercase;
+    letter-spacing: 1px
+}
+
+.bs-example+.highlight {
+    margin: -15px -15px 15px;
+    border-radius: 0;
+    border-width: 0 0 1px
+}
+
+@media (min-width:768px){.bs-example {
+        margin-left: 0;
+        margin-right: 0;
+        background-color: #fff;
+        border-width: 1px;
+        border-color: #ddd;
+        border-radius: 4px 4px 0 0;
+        box-shadow: none
+    }
+
+    .bs-example+.highlight {
+        margin-top: -16px;
+        margin-left: 0;
+        margin-right: 0;
+        border-width: 1px;
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px
+    }
+}
+
+.bs-example .container {
+    width: auto
+}
+
+.bs-example>p:last-child, .bs-example>ul:last-child, .bs-example>ol:last-child,
+.bs-example>blockquote:last-child, .bs-example>.form-control:last-child,
+.bs-example>.table:last-child, .bs-example>.navbar:last-child,
+.bs-example>.jumbotron:last-child, .bs-example>.alert:last-child,
+.bs-example>.panel:last-child, .bs-example>.list-group:last-child,
+.bs-example>.well:last-child, .bs-example>.progress:last-child,
+.bs-example>.table-responsive:last-child>.table {
+    margin-bottom: 0
+}
+
+.bs-example>p>.close {
+    float: none
+}
+
+.bs-example-type .table .type-info {
+    color: #999;
+    vertical-align: middle
+}
+
+.bs-example-type .table td {
+    padding: 15px 0;
+    border-color: #eee
+}
+
+.bs-example-type .table tr:first-child td {
+    border-top: 0
+}
+
+.bs-example-type h1, .bs-example-type h2, .bs-example-type h3, .bs-example-type h4,
+.bs-example-type h5, .bs-example-type h6 {
+    margin: 0
+}
+
+.bs-example-bg-classes p {
+    padding: 15px
+}
+
+.bs-example>.img-circle, .bs-example>.img-rounded, .bs-example>.img-thumbnail {
+    margin: 5px
+}
+
+.bs-example>.table-responsive>.table {
+    background-color: #fff
+}
+
+.bs-example>.btn, .bs-example>.btn-group {
+    margin-top: 5px;
+    margin-bottom: 5px
+}
+
+.bs-example>.btn-toolbar+.btn-toolbar {
+    margin-top: 10px
+}
+
+.bs-example-control-sizing select, .bs-example-control-sizing input[type=text]+input[type=text] {
+    margin-top: 10px
+}
+
+.bs-example-form .input-group {
+    margin-bottom: 10px
+}
+
+.bs-example>textarea.form-control {
+    resize: vertical
+}
+
+.bs-example>.list-group {
+    max-width: 400px
+}
+
+.bs-example .navbar:last-child {
+    margin-bottom: 0
+}
+
+.bs-navbar-top-example, .bs-navbar-bottom-example {
+    z-index: 1;
+    padding: 0;
+    overflow: hidden
+}
+
+.bs-navbar-top-example .navbar-header, .bs-navbar-bottom-example .navbar-header {
+    margin-left: 0
+}
+
+.bs-navbar-top-example .navbar-fixed-top, .bs-navbar-bottom-example .navbar-fixed-bottom {
+    position: relative;
+    margin-left: 0;
+    margin-right: 0
+}
+
+.bs-navbar-top-example {
+    padding-bottom: 45px
+}
+
+.bs-navbar-top-example:after {
+    top: auto;
+    bottom: 15px
+}
+
+.bs-navbar-top-example .navbar-fixed-top {
+    top: -1px
+}
+
+.bs-navbar-bottom-example {
+    padding-top: 45px
+}
+
+.bs-navbar-bottom-example .navbar-fixed-bottom {
+    bottom: -1px
+}
+
+.bs-navbar-bottom-example .navbar {
+    margin-bottom: 0
+}
+
+@media (min-width:768px){.bs-navbar-top-example .navbar-fixed-top, .bs-navbar-bottom-example .navbar-fixed-bottom {
+        position: absolute
+    }
+
+    .bs-navbar-top-example {
+        border-radius: 0 0 4px 4px
+    }
+
+    .bs-navbar-bottom-example {
+        border-radius: 4px 4px 0 0
+    }
+}
+
+.bs-example .pagination {
+    margin-top: 10px;
+    margin-bottom: 10px
+}
+
+.bs-example>.pager {
+    margin-top: 0
+}
+
+.bs-example-modal {
+    background-color: #f5f5f5
+}
+
+.bs-example-modal .modal {
+    position: relative;
+    top: auto;
+    right: auto;
+    left: auto;
+    bottom: auto;
+    z-index: 1;
+    display: block
+}
+
+.bs-example-modal .modal-dialog {
+    left: auto;
+    margin-left: auto;
+    margin-right: auto
+}
+
+.bs-example>.dropdown>.dropdown-menu {
+    position: static;
+    display: block;
+    margin-bottom: 5px
+}
+
+.bs-example-tabs .nav-tabs {
+    margin-bottom: 15px
+}
+
+.bs-example-tooltips {
+    text-align: center
+}
+
+.bs-example-tooltips>.btn {
+    margin-top: 5px;
+    margin-bottom: 5px
+}
+
+.bs-example-popover {
+    padding-bottom: 24px;
+    background-color: #f9f9f9
+}
+
+.bs-example-popover .popover {
+    position: relative;
+    display: block;
+    float: left;
+    width: 260px;
+    margin: 20px
+}
+
+.scrollspy-example {
+    position: relative;
+    height: 200px;
+    margin-top: 10px;
+    overflow: auto
+}
+
+.highlight {
+    padding: 9px 14px;
+    margin-bottom: 14px;
+    background-color: #f7f7f9;
+    border: 1px solid #e1e1e8;
+    border-radius: 4px
+}
+
+.highlight pre {
+    padding: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    background-color: transparent;
+    border: 0;
+    white-space: nowrap
+}
+
+.highlight pre code {
+    font-size: inherit;
+    color: #333
+}
+
+.highlight pre .lineno {
+    display: inline-block;
+    width: 22px;
+    padding-right: 5px;
+    margin-right: 10px;
+    text-align: right;
+    color: #bebec5
+}
+
+.table-responsive .highlight pre {
+    white-space: normal
+}
+
+.bs-table th small, .responsive-utilities th small {
+    display: block;
+    font-weight: 400;
+    color: #999
+}
+
+.responsive-utilities tbody th {
+    font-weight: 400
+}
+
+.responsive-utilities td {
+    text-align: center
+}
+
+.responsive-utilities td.is-visible {
+    color: #468847;
+    background-color: #dff0d8 !important
+}
+
+.responsive-utilities td.is-hidden {
+    color: #ccc;
+    background-color: #f9f9f9 !important
+}
+
+.responsive-utilities-test {
+    margin-top: 5px
+}
+
+.responsive-utilities-test .col-xs-6 {
+    margin-bottom: 10px
+}
+
+.responsive-utilities-test span {
+    display: block;
+    padding: 15px 10px;
+    font-size: 14px;
+    font-weight: 700;
+    line-height: 1.1;
+    text-align: center;
+    border-radius: 4px
+}
+
+.visible-on .col-xs-6 .hidden-xs, .visible-on .col-xs-6 .hidden-sm,
+.visible-on .col-xs-6 .hidden-md, .visible-on .col-xs-6 .hidden-lg,
+.hidden-on .col-xs-6 .hidden-xs, .hidden-on .col-xs-6 .hidden-sm, .hidden-on .col-xs-6 .hidden-md,
+.hidden-on .col-xs-6 .hidden-lg {
+    color: #999;
+    border: 1px solid #ddd
+}
+
+.visible-on .col-xs-6 .visible-xs, .visible-on .col-xs-6 .visible-sm,
+.visible-on .col-xs-6 .visible-md, .visible-on .col-xs-6 .visible-lg,
+.hidden-on .col-xs-6 .visible-xs, .hidden-on .col-xs-6 .visible-sm,
+.hidden-on .col-xs-6 .visible-md, .hidden-on .col-xs-6 .visible-lg {
+    color: #468847;
+    background-color: #dff0d8;
+    border: 1px solid #d6e9c6
+}
+
+.bs-glyphicons {
+    margin: 0 -19px 20px -16px;
+    overflow: hidden
+}
+
+.bs-glyphicons-list {
+    padding-left: 0;
+    list-style: none
+}
+
+.bs-glyphicons li {
+    float: left;
+    width: 25%;
+    height: 115px;
+    padding: 10px;
+    font-size: 10px;
+    line-height: 1.4;
+    text-align: center;
+    border: 1px solid #fff;
+    background-color: #f9f9f9
+}
+
+.bs-glyphicons .glyphicon {
+    margin-top: 5px;
+    margin-bottom: 10px;
+    font-size: 24px
+}
+
+.bs-glyphicons .glyphicon-class {
+    display: block;
+    text-align: center;
+    word-wrap: break-word
+}
+
+.bs-glyphicons li:hover {
+    color: #fff;
+    background-color: #563d7c
+}
+
+@media (min-width:768px){.bs-glyphicons {
+        margin-left: 0;
+        margin-right: 0
+    }
+
+    .bs-glyphicons li {
+        width: 12.5%;
+        font-size: 12px
+    }
+}
+
+.bs-customizer .toggle {
+    float: right;
+    margin-top: 25px
+}
+
+.bs-customizer label {
+    margin-top: 10px;
+    font-weight: 500;
+    color: #555
+}
+
+.bs-customizer h2 {
+    margin-top: 0;
+    margin-bottom: 5px;
+    padding-top: 30px
+}
+
+.bs-customizer h3 {
+    margin-bottom: 0
+}
+
+.bs-customizer h4 {
+    margin-top: 15px;
+    margin-bottom: 0
+}
+
+.bs-customizer .bs-callout h4 {
+    margin-top: 0;
+    margin-bottom: 5px
+}
+
+.bs-customizer input[type=text] {
+    font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+    background-color: #fafafa
+}
+
+.bs-customizer .help-block {
+    font-size: 12px;
+    margin-bottom: 5px
+}
+
+#less-section label {
+    font-weight: 400
+}
+
+.bs-customizer-input {
+    float: left;
+    width: 33.333333%;
+    padding-left: 15px;
+    padding-right: 15px
+}
+
+.bs-customize-download .btn-outline {
+    padding: 20px
+}
+
+.bs-customizer-alert {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    z-index: 1030;
+    padding: 15px 0;
+    color: #fff;
+    background-color: #d9534f;
+    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25);
+    border-bottom: 1px solid #b94441
+}
+
+.bs-customizer-alert .close {
+    margin-top: -4px;
+    font-size: 24px
+}
+
+.bs-customizer-alert p {
+    margin-bottom: 0
+}
+
+.bs-customizer-alert .glyphicon {
+    margin-right: 5px
+}
+
+.bs-customizer-alert pre {
+    margin: 10px 0 0;
+    color: #fff;
+    background-color: #a83c3a;
+    border-color: #973634;
+    box-shadow: inset 0 2px 4px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1)
+}
+
+.bs-brand-logos {
+    display: table;
+    width: 100%;
+    margin-bottom: 15px;
+    overflow: hidden;
+    color: #563d7c;
+    background-color: #f9f9f9;
+    border-radius: 4px
+}
+
+.bs-brand-item {
+    padding: 60px 0;
+    text-align: center
+}
+
+.bs-brand-item+.bs-brand-item {
+    border-top: 1px solid #fff
+}
+
+.bs-brand-logos .inverse {
+    color: #fff;
+    background-color: #563d7c
+}
+
+.bs-brand-item h1, .bs-brand-item h3 {
+    margin-top: 0;
+    margin-bottom: 0
+}
+
+.bs-brand-item .bs-docs-booticon {
+    margin-left: auto;
+    margin-right: auto
+}
+
+.bs-brand-item .glyphicon {
+    width: 30px;
+    height: 30px;
+    margin: 10px auto -10px;
+    line-height: 30px;
+    color: #fff;
+    border-radius: 50%
+}
+
+.bs-brand-item .glyphicon-ok {
+    background-color: #5cb85c
+}
+
+.bs-brand-item .glyphicon-remove {
+    background-color: #d9534f
+}
+
+@media (min-width:768px){.bs-brand-item {
+        display: table-cell;
+        width: 1%
+    }
+
+    .bs-brand-item+.bs-brand-item {
+        border-top: 0;
+        border-left: 1px solid #fff
+    }
+
+    .bs-brand-item h1 {
+        font-size: 60px
+    }
+}
+
+.bs-examples .thumbnail {
+    margin-bottom: 10px
+}
+
+.bs-examples h4 {
+    margin-bottom: 5px
+}
+
+.bs-examples p {
+    margin-bottom: 20px
+}
+
+#focusedInput {
+    border-color: #ccc;
+    border-color: rgba(82, 168, 236, .8);
+    outline: 0;
+    outline: thin dotted \9;
+    -moz-box-shadow: 0 0 8px rgba(82, 168, 236, .6);
+    box-shadow: 0 0 8px rgba(82, 168, 236, .6)
+}
+
+.hll {
+    background-color: #ffc
+}
+
+.c {
+    color: #999
+}
+
+.err {
+    color: #A00;
+    background-color: #FAA
+}
+
+.k {
+    color: #069
+}
+
+.o {
+    color: #555
+}
+
+.cm {
+    color: #999
+}
+
+.cp {
+    color: #099
+}
+
+.c1 {
+    color: #999
+}
+
+.cs {
+    color: #999
+}
+
+.gd {
+    background-color: #FCC;
+    border: 1px solid #C00
+}
+
+.ge {
+    font-style: italic
+}
+
+.gr {
+    color: red
+}
+
+.gh {
+    color: #030
+}
+
+.gi {
+    background-color: #CFC;
+    border: 1px solid #0C0
+}
+
+.go {
+    color: #AAA
+}
+
+.gp {
+    color: #009
+}
+
+.gu {
+    color: #030
+}
+
+.gt {
+    color: #9C6
+}
+
+.kc {
+    color: #069
+}
+
+.kd {
+    color: #069
+}
+
+.kn {
+    color: #069
+}
+
+.kp {
+    color: #069
+}
+
+.kr {
+    color: #069
+}
+
+.kt {
+    color: #078
+}
+
+.m {
+    color: #F60
+}
+
+.s {
+    color: #d44950
+}
+
+.na {
+    color: #4f9fcf
+}
+
+.nb {
+    color: #366
+}
+
+.nc {
+    color: #0A8
+}
+
+.no {
+    color: #360
+}
+
+.nd {
+    color: #99F
+}
+
+.ni {
+    color: #999
+}
+
+.ne {
+    color: #C00
+}
+
+.nf {
+    color: #C0F
+}
+
+.nl {
+    color: #99F
+}
+
+.nn {
+    color: #0CF
+}
+
+.nt {
+    color: #2f6f9f
+}
+
+.nv {
+    color: #033
+}
+
+.ow {
+    color: #000
+}
+
+.w {
+    color: #bbb
+}
+
+.mf {
+    color: #F60
+}
+
+.mh {
+    color: #F60
+}
+
+.mi {
+    color: #F60
+}
+
+.mo {
+    color: #F60
+}
+
+.sb {
+    color: #C30
+}
+
+.sc {
+    color: #C30
+}
+
+.sd {
+    color: #C30;
+    font-style: italic
+}
+
+.s2 {
+    color: #C30
+}
+
+.se {
+    color: #C30
+}
+
+.sh {
+    color: #C30
+}
+
+.si {
+    color: #A00
+}
+
+.sx {
+    color: #C30
+}
+
+.sr {
+    color: #3AA
+}
+
+.s1 {
+    color: #C30
+}
+
+.ss {
+    color: #FC3
+}
+
+.bp {
+    color: #366
+}
+
+.vc {
+    color: #033
+}
+
+.vg {
+    color: #033
+}
+
+.vi {
+    color: #033
+}
+
+.il {
+    color: #F60
+}
+
+.css .o, .css .o+.nt, .css .nt+.nt {
+    color: #999
+}
diff --git a/pelican-plugins/bootstrap-rst/make-glyphicons.py b/pelican-plugins/bootstrap-rst/make-glyphicons.py
new file mode 100644
index 0000000..0f7409e
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/make-glyphicons.py
@@ -0,0 +1,224 @@
+from __future__ import print_function
+glyphs = """<span class="glyphicon glyphicon-asterisk"></span>
+<span class="glyphicon glyphicon-plus"></span>
+<span class="glyphicon glyphicon-euro"></span>
+<span class="glyphicon glyphicon-minus"></span>
+<span class="glyphicon glyphicon-cloud"></span>
+<span class="glyphicon glyphicon-envelope"></span>
+<span class="glyphicon glyphicon-pencil"></span>
+<span class="glyphicon glyphicon-glass"></span>
+<span class="glyphicon glyphicon-music"></span>
+<span class="glyphicon glyphicon-search"></span>
+<span class="glyphicon glyphicon-heart"></span>
+<span class="glyphicon glyphicon-star"></span>
+<span class="glyphicon glyphicon-star-empty"></span>
+<span class="glyphicon glyphicon-user"></span>
+<span class="glyphicon glyphicon-film"></span>
+<span class="glyphicon glyphicon-th-large"></span>
+<span class="glyphicon glyphicon-th"></span>
+<span class="glyphicon glyphicon-th-list"></span>
+<span class="glyphicon glyphicon-ok"></span>
+<span class="glyphicon glyphicon-remove"></span>
+<span class="glyphicon glyphicon-zoom-in"></span>
+<span class="glyphicon glyphicon-zoom-out"></span>
+<span class="glyphicon glyphicon-off"></span>
+<span class="glyphicon glyphicon-signal"></span>
+<span class="glyphicon glyphicon-cog"></span>
+<span class="glyphicon glyphicon-trash"></span>
+<span class="glyphicon glyphicon-home"></span>
+<span class="glyphicon glyphicon-file"></span>
+<span class="glyphicon glyphicon-time"></span>
+<span class="glyphicon glyphicon-road"></span>
+<span class="glyphicon glyphicon-download-alt"></span>
+<span class="glyphicon glyphicon-download"></span>
+<span class="glyphicon glyphicon-upload"></span>
+<span class="glyphicon glyphicon-inbox"></span>
+<span class="glyphicon glyphicon-play-circle"></span>
+<span class="glyphicon glyphicon-repeat"></span>
+<span class="glyphicon glyphicon-refresh"></span>
+<span class="glyphicon glyphicon-list-alt"></span>
+<span class="glyphicon glyphicon-lock"></span>
+<span class="glyphicon glyphicon-flag"></span>
+<span class="glyphicon glyphicon-headphones"></span>
+<span class="glyphicon glyphicon-volume-off"></span>
+<span class="glyphicon glyphicon-volume-down"></span>
+<span class="glyphicon glyphicon-volume-up"></span>
+<span class="glyphicon glyphicon-qrcode"></span>
+<span class="glyphicon glyphicon-barcode"></span>
+<span class="glyphicon glyphicon-tag"></span>
+<span class="glyphicon glyphicon-tags"></span>
+<span class="glyphicon glyphicon-book"></span>
+<span class="glyphicon glyphicon-bookmark"></span>
+<span class="glyphicon glyphicon-print"></span>
+<span class="glyphicon glyphicon-camera"></span>
+<span class="glyphicon glyphicon-font"></span>
+<span class="glyphicon glyphicon-bold"></span>
+<span class="glyphicon glyphicon-italic"></span>
+<span class="glyphicon glyphicon-text-height"></span>
+<span class="glyphicon glyphicon-text-width"></span>
+<span class="glyphicon glyphicon-align-left"></span>
+<span class="glyphicon glyphicon-align-center"></span>
+<span class="glyphicon glyphicon-align-right"></span>
+<span class="glyphicon glyphicon-align-justify"></span>
+<span class="glyphicon glyphicon-list"></span>
+<span class="glyphicon glyphicon-indent-left"></span>
+<span class="glyphicon glyphicon-indent-right"></span>
+<span class="glyphicon glyphicon-facetime-video"></span>
+<span class="glyphicon glyphicon-picture"></span>
+<span class="glyphicon glyphicon-map-marker"></span>
+<span class="glyphicon glyphicon-adjust"></span>
+<span class="glyphicon glyphicon-tint"></span>
+<span class="glyphicon glyphicon-edit"></span>
+<span class="glyphicon glyphicon-share"></span>
+<span class="glyphicon glyphicon-check"></span>
+<span class="glyphicon glyphicon-move"></span>
+<span class="glyphicon glyphicon-step-backward"></span>
+<span class="glyphicon glyphicon-fast-backward"></span>
+<span class="glyphicon glyphicon-backward"></span>
+<span class="glyphicon glyphicon-play"></span>
+<span class="glyphicon glyphicon-pause"></span>
+<span class="glyphicon glyphicon-stop"></span>
+<span class="glyphicon glyphicon-forward"></span>
+<span class="glyphicon glyphicon-fast-forward"></span>
+<span class="glyphicon glyphicon-step-forward"></span>
+<span class="glyphicon glyphicon-eject"></span>
+<span class="glyphicon glyphicon-chevron-left"></span>
+<span class="glyphicon glyphicon-chevron-right"></span>
+<span class="glyphicon glyphicon-plus-sign"></span>
+<span class="glyphicon glyphicon-minus-sign"></span>
+<span class="glyphicon glyphicon-remove-sign"></span>
+<span class="glyphicon glyphicon-ok-sign"></span>
+<span class="glyphicon glyphicon-question-sign"></span>
+<span class="glyphicon glyphicon-info-sign"></span>
+<span class="glyphicon glyphicon-screenshot"></span>
+<span class="glyphicon glyphicon-remove-circle"></span>
+<span class="glyphicon glyphicon-ok-circle"></span>
+<span class="glyphicon glyphicon-ban-circle"></span>
+<span class="glyphicon glyphicon-arrow-left"></span>
+<span class="glyphicon glyphicon-arrow-right"></span>
+<span class="glyphicon glyphicon-arrow-up"></span>
+<span class="glyphicon glyphicon-arrow-down"></span>
+<span class="glyphicon glyphicon-share-alt"></span>
+<span class="glyphicon glyphicon-resize-full"></span>
+<span class="glyphicon glyphicon-resize-small"></span>
+<span class="glyphicon glyphicon-exclamation-sign"></span>
+<span class="glyphicon glyphicon-gift"></span>
+<span class="glyphicon glyphicon-leaf"></span>
+<span class="glyphicon glyphicon-fire"></span>
+<span class="glyphicon glyphicon-eye-open"></span>
+<span class="glyphicon glyphicon-eye-close"></span>
+<span class="glyphicon glyphicon-warning-sign"></span>
+<span class="glyphicon glyphicon-plane"></span>
+<span class="glyphicon glyphicon-calendar"></span>
+<span class="glyphicon glyphicon-random"></span>
+<span class="glyphicon glyphicon-comment"></span>
+<span class="glyphicon glyphicon-magnet"></span>
+<span class="glyphicon glyphicon-chevron-up"></span>
+<span class="glyphicon glyphicon-chevron-down"></span>
+<span class="glyphicon glyphicon-retweet"></span>
+<span class="glyphicon glyphicon-shopping-cart"></span>
+<span class="glyphicon glyphicon-folder-close"></span>
+<span class="glyphicon glyphicon-folder-open"></span>
+<span class="glyphicon glyphicon-resize-vertical"></span>
+<span class="glyphicon glyphicon-resize-horizontal"></span>
+<span class="glyphicon glyphicon-hdd"></span>
+<span class="glyphicon glyphicon-bullhorn"></span>
+<span class="glyphicon glyphicon-bell"></span>
+<span class="glyphicon glyphicon-certificate"></span>
+<span class="glyphicon glyphicon-thumbs-up"></span>
+<span class="glyphicon glyphicon-thumbs-down"></span>
+<span class="glyphicon glyphicon-hand-right"></span>
+<span class="glyphicon glyphicon-hand-left"></span>
+<span class="glyphicon glyphicon-hand-up"></span>
+<span class="glyphicon glyphicon-hand-down"></span>
+<span class="glyphicon glyphicon-circle-arrow-right"></span>
+<span class="glyphicon glyphicon-circle-arrow-left"></span>
+<span class="glyphicon glyphicon-circle-arrow-up"></span>
+<span class="glyphicon glyphicon-circle-arrow-down"></span>
+<span class="glyphicon glyphicon-globe"></span>
+<span class="glyphicon glyphicon-wrench"></span>
+<span class="glyphicon glyphicon-tasks"></span>
+<span class="glyphicon glyphicon-filter"></span>
+<span class="glyphicon glyphicon-briefcase"></span>
+<span class="glyphicon glyphicon-fullscreen"></span>
+<span class="glyphicon glyphicon-dashboard"></span>
+<span class="glyphicon glyphicon-paperclip"></span>
+<span class="glyphicon glyphicon-heart-empty"></span>
+<span class="glyphicon glyphicon-link"></span>
+<span class="glyphicon glyphicon-phone"></span>
+<span class="glyphicon glyphicon-pushpin"></span>
+<span class="glyphicon glyphicon-usd"></span>
+<span class="glyphicon glyphicon-gbp"></span>
+<span class="glyphicon glyphicon-sort"></span>
+<span class="glyphicon glyphicon-sort-by-alphabet"></span>
+<span class="glyphicon glyphicon-sort-by-alphabet-alt"></span>
+<span class="glyphicon glyphicon-sort-by-order"></span>
+<span class="glyphicon glyphicon-sort-by-order-alt"></span>
+<span class="glyphicon glyphicon-sort-by-attributes"></span>
+<span class="glyphicon glyphicon-sort-by-attributes-alt"></span>
+<span class="glyphicon glyphicon-unchecked"></span>
+<span class="glyphicon glyphicon-expand"></span>
+<span class="glyphicon glyphicon-collapse-down"></span>
+<span class="glyphicon glyphicon-collapse-up"></span>
+<span class="glyphicon glyphicon-log-in"></span>
+<span class="glyphicon glyphicon-flash"></span>
+<span class="glyphicon glyphicon-log-out"></span>
+<span class="glyphicon glyphicon-new-window"></span>
+<span class="glyphicon glyphicon-record"></span>
+<span class="glyphicon glyphicon-save"></span>
+<span class="glyphicon glyphicon-open"></span>
+<span class="glyphicon glyphicon-saved"></span>
+<span class="glyphicon glyphicon-import"></span>
+<span class="glyphicon glyphicon-export"></span>
+<span class="glyphicon glyphicon-send"></span>
+<span class="glyphicon glyphicon-floppy-disk"></span>
+<span class="glyphicon glyphicon-floppy-saved"></span>
+<span class="glyphicon glyphicon-floppy-remove"></span>
+<span class="glyphicon glyphicon-floppy-save"></span>
+<span class="glyphicon glyphicon-floppy-open"></span>
+<span class="glyphicon glyphicon-credit-card"></span>
+<span class="glyphicon glyphicon-transfer"></span>
+<span class="glyphicon glyphicon-cutlery"></span>
+<span class="glyphicon glyphicon-header"></span>
+<span class="glyphicon glyphicon-compressed"></span>
+<span class="glyphicon glyphicon-earphone"></span>
+<span class="glyphicon glyphicon-phone-alt"></span>
+<span class="glyphicon glyphicon-tower"></span>
+<span class="glyphicon glyphicon-stats"></span>
+<span class="glyphicon glyphicon-sd-video"></span>
+<span class="glyphicon glyphicon-hd-video"></span>
+<span class="glyphicon glyphicon-subtitles"></span>
+<span class="glyphicon glyphicon-sound-stereo"></span>
+<span class="glyphicon glyphicon-sound-dolby"></span>
+<span class="glyphicon glyphicon-sound-5-1"></span>
+<span class="glyphicon glyphicon-sound-6-1"></span>
+<span class="glyphicon glyphicon-sound-7-1"></span>
+<span class="glyphicon glyphicon-copyright-mark"></span>
+<span class="glyphicon glyphicon-registration-mark"></span>
+<span class="glyphicon glyphicon-cloud-download"></span>
+<span class="glyphicon glyphicon-cloud-upload"></span>
+<span class="glyphicon glyphicon-tree-conifer"></span>
+<span class="glyphicon glyphicon-tree-deciduous"></span>"""
+
+glyphs = glyphs.split('\n')
+
+
+#for glyph in glyphs.split('\n'):
+#    name = glyph[33:-9]
+#    print ".. |%s| raw:: html" % name
+#    print ""
+#    print "   %s" % glyph
+#    print ""
+
+
+print(".. row::")
+for i, glyph in enumerate(glyphs):
+    if i % 50 == 0:
+        print("")
+        print("   .. column::")
+        print("      :width: 3")
+        print("")
+        print("      .. list:: list-unstyled")
+        print("")
+    name = glyph[33:-9]
+    print("         * |%s| : %s" % (name,name))
diff --git a/pelican-plugins/bootstrap-rst/page.tmpl b/pelican-plugins/bootstrap-rst/page.tmpl
new file mode 100644
index 0000000..643b282
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/page.tmpl
@@ -0,0 +1,22 @@
+%(head_prefix)s
+%(head)s
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<!-- Bootstrap core CSS =================================================== -->
+<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
+<link href="docs-min.css" rel="stylesheet">
+<link href="custom.css" rel="stylesheet">
+%(stylesheet)s
+%(body_prefix)s
+%(body_pre_docinfo)s
+%(docinfo)s
+<div class="row">
+%(body)s
+</div>
+</div>
+
+<!-- Bootstrap core JavaScript ============================================ -->
+<!-- Placed at the end of the document so the pages load faster -->
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+<script src="bootstrap/js/bootstrap.min.js"></script>
+
+%(body_suffix)s
diff --git a/pelican-plugins/bootstrap-rst/pygments.css b/pelican-plugins/bootstrap-rst/pygments.css
new file mode 100644
index 0000000..6f4f6c8
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/pygments.css
@@ -0,0 +1,59 @@
+.hll { background-color: #ffffcc }
+.c { color: #999988; font-style: italic } /* Comment */
+.err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.k { font-weight: bold } /* Keyword */
+.o { font-weight: bold } /* Operator */
+.cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.cp { color: #999999; font-weight: bold } /* Comment.Preproc */
+.c1 { color: #999988; font-style: italic } /* Comment.Single */
+.cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.ge { font-style: italic } /* Generic.Emph */
+.gr { color: #aa0000 } /* Generic.Error */
+.gh { color: #999999 } /* Generic.Heading */
+.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.go { color: #888888 } /* Generic.Output */
+.gp { color: #555555 } /* Generic.Prompt */
+.gs { font-weight: bold } /* Generic.Strong */
+.gu { color: #aaaaaa } /* Generic.Subheading */
+.gt { color: #aa0000 } /* Generic.Traceback */
+.kc { font-weight: bold } /* Keyword.Constant */
+.kd { font-weight: bold } /* Keyword.Declaration */
+.kn { font-weight: bold } /* Keyword.Namespace */
+.kp { font-weight: bold } /* Keyword.Pseudo */
+.kr { font-weight: bold } /* Keyword.Reserved */
+.kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.m { color: #009999 } /* Literal.Number */
+.s { color: #bb8844 } /* Literal.String */
+.na { color: #008080 } /* Name.Attribute */
+.nb { color: #999999 } /* Name.Builtin */
+.nc { color: #445588; font-weight: bold } /* Name.Class */
+.no { color: #008080 } /* Name.Constant */
+.ni { color: #800080 } /* Name.Entity */
+.ne { color: #990000; font-weight: bold } /* Name.Exception */
+.nf { color: #990000; font-weight: bold } /* Name.Function */
+.nn { color: #555555 } /* Name.Namespace */
+.nt { color: #000080 } /* Name.Tag */
+.nv { color: #008080 } /* Name.Variable */
+.ow { font-weight: bold } /* Operator.Word */
+.w { color: #bbbbbb } /* Text.Whitespace */
+.mf { color: #009999 } /* Literal.Number.Float */
+.mh { color: #009999 } /* Literal.Number.Hex */
+.mi { color: #009999 } /* Literal.Number.Integer */
+.mo { color: #009999 } /* Literal.Number.Oct */
+.sb { color: #bb8844 } /* Literal.String.Backtick */
+.sc { color: #bb8844 } /* Literal.String.Char */
+.sd { color: #bb8844 } /* Literal.String.Doc */
+.s2 { color: #bb8844 } /* Literal.String.Double */
+.se { color: #bb8844 } /* Literal.String.Escape */
+.sh { color: #bb8844 } /* Literal.String.Heredoc */
+.si { color: #bb8844 } /* Literal.String.Interpol */
+.sx { color: #bb8844 } /* Literal.String.Other */
+.sr { color: #808000 } /* Literal.String.Regex */
+.s1 { color: #bb8844 } /* Literal.String.Single */
+.ss { color: #bb8844 } /* Literal.String.Symbol */
+.bp { color: #999999 } /* Name.Builtin.Pseudo */
+.vc { color: #008080 } /* Name.Variable.Class */
+.vg { color: #008080 } /* Name.Variable.Global */
+.vi { color: #008080 } /* Name.Variable.Instance */
+.il { color: #009999 } /* Literal.Number.Integer.Long */
diff --git a/pelican-plugins/bootstrap-rst/roles.py b/pelican-plugins/bootstrap-rst/roles.py
new file mode 100644
index 0000000..06bc689
--- /dev/null
+++ b/pelican-plugins/bootstrap-rst/roles.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+# -----------------------------------------------------------------------------
+# Bootstrap RST
+# Copyright (c) 2014, Nicolas P. Rougier
+# Distributed under the (new) BSD License. See LICENSE.txt for more info.
+# -----------------------------------------------------------------------------
+from docutils import nodes, utils
+from docutils.parsers.rst import roles
+
+class h1(nodes.Inline, nodes.TextElement): pass
+class h2(nodes.Inline, nodes.TextElement): pass
+class h3(nodes.Inline, nodes.TextElement): pass
+class h4(nodes.Inline, nodes.TextElement): pass
+class h5(nodes.Inline, nodes.TextElement): pass
+class h6(nodes.Inline, nodes.TextElement): pass
+
+class label_default(nodes.Inline, nodes.TextElement): pass
+class label_muted(nodes.Inline, nodes.TextElement): pass
+class label_primary(nodes.Inline, nodes.TextElement): pass
+class label_success(nodes.Inline, nodes.TextElement): pass
+class label_info(nodes.Inline, nodes.TextElement): pass
+class label_warning(nodes.Inline, nodes.TextElement): pass
+class label_danger(nodes.Inline, nodes.TextElement): pass
+
+
+roles.register_generic_role('h1',h1)
+roles.register_generic_role('h2',h2)
+roles.register_generic_role('h3',h3)
+roles.register_generic_role('h4',h4)
+roles.register_generic_role('h5',h5)
+roles.register_generic_role('h6',h6)
+
+roles.register_generic_role('label-default',label_default)
+roles.register_generic_role('label-muted',label_muted)
+roles.register_generic_role('label-primary',label_primary)
+roles.register_generic_role('label-success',label_success)
+roles.register_generic_role('label-info',label_info)
+roles.register_generic_role('label-warning',label_warning)
+roles.register_generic_role('label-danger',label_danger)
diff --git a/pelican-plugins/category_meta/README.md b/pelican-plugins/category_meta/README.md
new file mode 100644
index 0000000..02f909c
--- /dev/null
+++ b/pelican-plugins/category_meta/README.md
@@ -0,0 +1,22 @@
+Category Metadata
+-----------------
+
+A plugin to read metadata for each category from an index file in that
+category's directory.
+
+For this plugin to work properly, your articles should not have a
+Category: tag in their metadata; instead, they should be stored in
+(subdirectories of) per-category directories.  Each per-category
+directory must have a file named 'index.ext' at its top level, where
+.ext is any extension that will be picked up by an article reader.
+The metadata of that article becomes the metadata for the category,
+copied over verbatim, with three special cases:
+
+ * The category's name is set to the article's title.
+ * The category's slug is set to the name of the parent directory
+   of the index.ext file.
+ * The _text_ of the article is stored as category.description.
+
+You can use this, for example, to control the slug used for each
+category independently of its name, or to add a description at the top
+of each category page.
diff --git a/pelican-plugins/category_meta/__init__.py b/pelican-plugins/category_meta/__init__.py
new file mode 100644
index 0000000..aa50e46
--- /dev/null
+++ b/pelican-plugins/category_meta/__init__.py
@@ -0,0 +1 @@
+from .category_meta import *
diff --git a/pelican-plugins/category_meta/category_meta.py b/pelican-plugins/category_meta/category_meta.py
new file mode 100644
index 0000000..de8a129
--- /dev/null
+++ b/pelican-plugins/category_meta/category_meta.py
@@ -0,0 +1,132 @@
+'''Copyright 2014, 2015 Zack Weinberg
+
+Category Metadata
+-----------------
+
+A plugin to read metadata for each category from an index file in that
+category's directory.
+
+For this plugin to work properly, your articles should not have a
+Category: tag in their metadata; instead, they should be stored in
+(subdirectories of) per-category directories.  Each per-category
+directory must have a file named 'index.ext' at its top level, where
+.ext is any extension that will be picked up by an article reader.
+The metadata of that article becomes the metadata for the category,
+copied over verbatim, with three special cases:
+
+ * The category's name is set to the article's title.
+ * The category's slug is set to the name of the parent directory
+   of the index.ext file.
+ * The _text_ of the article is stored as category.description.
+'''
+
+from pelican import signals
+import os
+import re
+
+import logging
+logger = logging.getLogger(__name__)
+
+### CORE BUG: https://github.com/getpelican/pelican/issues/1547
+### Content.url_format does not honor category.slug (or author.slug).
+### The sanest way to work around this is to dynamically redefine each
+### article's class to a subclass of itself with the bug fixed.
+###
+### Core was fixed in rev 822fb134e041c6938c253dd4db71813c4d0dc74a,
+### which is not yet in any release, so we dynamically detect whether
+### the installed version of Pelican still has the bug.
+
+patched_subclasses = {}
+def make_patched_subclass(klass):
+    if klass.__name__ not in patched_subclasses:
+        class PatchedContent(klass):
+            @property
+            def url_format(self):
+                metadata = super(PatchedContent, self).url_format
+                if hasattr(self, 'author'):
+                    metadata['author'] = self.author.slug
+                if hasattr(self, 'category'):
+                    metadata['category'] = self.category.slug
+
+                return metadata
+        # Code in core uses Content class names as keys for things.
+        PatchedContent.__name__ = klass.__name__
+        patched_subclasses[klass.__name__] = PatchedContent
+    return patched_subclasses[klass.__name__]
+
+def patch_urlformat(cont):
+    # Test whether this content object needs to be patched.
+    md = cont.url_format
+    if ((hasattr(cont, 'author') and cont.author.slug != md['author']) or
+        (hasattr(cont, 'category') and cont.category.slug != md['category'])):
+        logger.debug("Detected bug 1547, applying workaround.")
+        cont.__class__ = make_patched_subclass(cont.__class__)
+
+### END OF BUG WORKAROUND
+
+def make_category(article, slug):
+    # Reuse the article's existing category object.
+    category = article.category
+
+    # Setting a category's name resets its slug, so do that first.
+    category.name = article.title
+    try:
+        category.slug = slug
+    except AttributeError:
+        category._slug = slug
+
+    # Description from article text.
+    # XXX Relative URLs in the article content may not be handled correctly.
+    setattr(category, 'description', article.content)
+
+    # Metadata, to the extent that this makes sense.
+    for k, v in article.metadata.items():
+        if k not in ('path', 'slug', 'category', 'name', 'title',
+                     'description', 'reader'):
+            setattr(category, k, v)
+
+    logger.debug("Category: %s -> %s", category.slug, category.name)
+    return category
+
+def pretaxonomy_hook(generator):
+    """This hook is invoked before the generator's .categories property is
+       filled in. Each article has already been assigned a category
+       object, but these objects are _not_ unique per category and so are
+       not safe to tack metadata onto (as is).
+
+       The category metadata we're looking for is represented as an
+       Article object, one per directory, whose filename is 'index.ext'.
+    """
+
+    category_objects = {}
+    real_articles = []
+
+    for article in generator.articles:
+        dirname, fname = os.path.split(article.source_path)
+        fname, _ = os.path.splitext(fname)
+        if fname == 'index':
+            category_objects[dirname] = \
+                make_category(article, os.path.basename(dirname))
+        else:
+            real_articles.append(article)
+
+    category_assignment = \
+        re.compile("^(" +
+                   "|".join(re.escape(prefix)
+                            for prefix in category_objects.keys()) +
+                   ")/")
+
+    for article in real_articles:
+        m = category_assignment.match(article.source_path)
+        if not m or m.group(1) not in category_objects:
+            logger.error("No category assignment for %s (%s)",
+                         article, article.source_path)
+            continue
+
+        article.category = category_objects[m.group(1)]
+        patch_urlformat(article)
+
+    generator.articles = real_articles
+
+def register():
+    signals.article_generator_pretaxonomy.connect(pretaxonomy_hook)
diff --git a/pelican-plugins/clean_summary/README.md b/pelican-plugins/clean_summary/README.md
new file mode 100644
index 0000000..b230796
--- /dev/null
+++ b/pelican-plugins/clean_summary/README.md
@@ -0,0 +1,34 @@
+# Clean Summary Plugin
+
+This plugin cleans your summary of excess images. Images can take up much more
+space than text and lead to summaries being different sizes on archive and
+index pages. With this plugin, you can specify a maximum number of images that
+will appear in your summaries.
+
+There is also an option to include a minimum of one image.
+
+## Settings
+
+This plugin has two settings: `CLEAN_SUMMARY_MAXIMUM`, which takes an integer,
+and `CLEAN_SUMMARY_MINIMUM_ONE`, which takes a Boolean value. They default to
+`0` and `False`, respectively.
+
+`CLEAN_SUMMARY_MAXIMUM` sets the maximum number of images that will appear in
+your summary.
+
+If `CLEAN_SUMMARY_MINIMUM_ONE` is set to `True` and your summary doesn't already
+contain an image, the plugin will add the first image in your article (if one
+exists) to the beginning of the summary.
+
+## Requirements
+
+Requires Beautiful Soup:
+
+    pip install BeautifulSoup4
+
+## Usage with Summary Plugin
+
+If using the Summary plugin, make sure it appears in your plugin list before
+the Clean Summary plugin. For example:
+
+    PLUGINS = ['summary', 'clean_summary', ... ]
diff --git a/pelican-plugins/clean_summary/__init__.py b/pelican-plugins/clean_summary/__init__.py
new file mode 100644
index 0000000..1b96611
--- /dev/null
+++ b/pelican-plugins/clean_summary/__init__.py
@@ -0,0 +1 @@
+from .clean_summary import *
diff --git a/pelican-plugins/clean_summary/clean_summary.py b/pelican-plugins/clean_summary/clean_summary.py
new file mode 100644
index 0000000..9d0fe0e
--- /dev/null
+++ b/pelican-plugins/clean_summary/clean_summary.py
@@ -0,0 +1,52 @@
+"""
+Clean Summary
+-------------
+
+adds option to specify maximum number of images to appear in article summary
+also adds option to include an image by default if one exists in your article
+"""
+
+from pelican import signals
+from pelican.contents import Content, Article
+from pelican.generators import ArticlesGenerator
+from bs4 import BeautifulSoup
+from six import text_type
+
+def init(pelican):
+    global maximum_images
+    global minimum_one
+    maximum_images = pelican.settings.get('CLEAN_SUMMARY_MAXIMUM', 0)
+    minimum_one = pelican.settings.get('CLEAN_SUMMARY_MINIMUM_ONE', False)
+
+
+def clean_summary(instance):
+    if type(instance) == Article:
+        summary = instance.summary
+        summary = BeautifulSoup(instance.summary, 'html.parser')
+        images = summary.findAll('img')
+        if (len(images) > maximum_images):
+            for image in images[maximum_images:]:
+                image.extract()
+        if len(images) < 1 and minimum_one: #try to find one
+            content = BeautifulSoup(instance.content, 'html.parser')
+            first_image = content.find('img')
+            if first_image:
+                summary.insert(0, first_image)
+        instance._summary = text_type(summary)
+
+
+def run_plugin(generators):
+    for generator in generators:
+        if isinstance(generator, ArticlesGenerator):
+            for article in generator.articles:
+                clean_summary(article)
+
+
+def register():
+    signals.initialized.connect(init)
+    try:
+        signals.all_generators_finalized.connect(run_plugin)
+    except AttributeError:
+        # NOTE: This may result in #314 so shouldn't really be relied on
+        # https://github.com/getpelican/pelican-plugins/issues/314
+        signals.content_object_init.connect(clean_summary)
diff --git a/pelican-plugins/code_include/README.rst b/pelican-plugins/code_include/README.rst
new file mode 100644
index 0000000..b7e08ec
--- /dev/null
+++ b/pelican-plugins/code_include/README.rst
@@ -0,0 +1,69 @@
+Include Pygments highlighted code with reStructuredText
+=======================================================
+
+:author: Colin Dunklau
+
+Use this plugin to make writing coding tutorials easier! You can
+maintain the example source files separately from the actual article.
+
+Based heavily on ``docutils.parsers.rst.directives.Include``. Include
+a file and output as a code block formatted with pelican's Pygments
+directive.
+
+Note that this is broken with the Docutils 0.10 release, there's a
+circular import. It was fixed in trunk:
+http://sourceforge.net/p/docutils/bugs/214/
+
+Directives
+----------
+
+.. code:: rst
+
+    .. code-include:: incfile.py
+        :lexer: string, name of the Pygments lexer to use, default 'text'
+        :encoding: string, encoding with which to open the file
+        :tab-width: integer, hard tabs are replaced with `tab-width` spaces
+        :start-line: integer, starting line to begin reading include file
+        :end-line: integer, last line from include file to display
+
+``start-line``, and ``end-line`` have the same meaning as in the
+docutils ``include`` directive, that is, they index from zero.
+
+Example
+-------
+
+./incfile.py:
+
+.. code:: python
+
+    # These two comment lines will not
+    # be included in the output
+    import random
+
+    insults = ['I fart in your general direction',
+               'your mother was a hampster',
+               'your father smelt of elderberries']
+
+    def insult():
+        print random.choice(insults)
+    # This comment line will be included
+    # ...but this one won't
+
+./yourfile.rst:
+
+.. code:: rst
+
+    How to Insult the English
+    =========================
+
+    :author: Pierre Devereaux
+
+    A function to help insult those silly English knnnnnnniggets:
+
+    .. code-include:: incfile.py
+        :lexer: python
+        :encoding: utf-8
+        :tab-width: 4
+        :start-line: 3
+        :end-line: 11
+
diff --git a/pelican-plugins/code_include/__init__.py b/pelican-plugins/code_include/__init__.py
new file mode 100644
index 0000000..6eca8be
--- /dev/null
+++ b/pelican-plugins/code_include/__init__.py
@@ -0,0 +1 @@
+from .code_include import *
diff --git a/pelican-plugins/code_include/code_include.py b/pelican-plugins/code_include/code_include.py
new file mode 100644
index 0000000..b87c8dd
--- /dev/null
+++ b/pelican-plugins/code_include/code_include.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os.path
+
+from docutils import io, nodes, statemachine, utils
+from docutils.utils.error_reporting import SafeString, ErrorString
+from docutils.parsers.rst import directives, Directive
+
+from pelican.rstdirectives import Pygments
+
+
+class CodeInclude(Directive):
+    required_arguments = 1
+    optional_arguments = 0
+    final_argument_whitespace = True
+    option_spec = {'lexer': directives.unchanged,
+                   'encoding': directives.encoding,
+                   'tab-width': int,
+                   'start-line': int,
+                   'end-line': int}
+
+    def run(self):
+        """Include a file as part of the content of this reST file."""
+        if not self.state.document.settings.file_insertion_enabled:
+            raise self.warning('"%s" directive disabled.' % self.name)
+        source = self.state_machine.input_lines.source(
+            self.lineno - self.state_machine.input_offset - 1)
+        source_dir = os.path.dirname(os.path.abspath(source))
+
+        path = directives.path(self.arguments[0])
+        path = os.path.normpath(os.path.join(source_dir, path))
+        path = utils.relative_path(None, path)
+        path = nodes.reprunicode(path)
+
+        encoding = self.options.get(
+            'encoding', self.state.document.settings.input_encoding)
+        e_handler = self.state.document.settings.input_encoding_error_handler
+        tab_width = self.options.get(
+            'tab-width', self.state.document.settings.tab_width)
+
+        try:
+            self.state.document.settings.record_dependencies.add(path)
+            include_file = io.FileInput(source_path=path,
+                                        encoding=encoding,
+                                        error_handler=e_handler)
+        except UnicodeEncodeError as error:
+            raise self.severe('Problems with "%s" directive path:\n'
+                              'Cannot encode input file path "%s" '
+                              '(wrong locale?).' %
+                              (self.name, SafeString(path)))
+        except IOError as error:
+            raise self.severe('Problems with "%s" directive path:\n%s.' %
+                              (self.name, ErrorString(error)))
+        startline = self.options.get('start-line', None)
+        endline = self.options.get('end-line', None)
+        try:
+            if startline or (endline is not None):
+                lines = include_file.readlines()
+                rawtext = ''.join(lines[startline:endline])
+            else:
+                rawtext = include_file.read()
+        except UnicodeError as error:
+            raise self.severe('Problem with "%s" directive:\n%s' %
+                              (self.name, ErrorString(error)))
+
+        include_lines = statemachine.string2lines(rawtext, tab_width,
+                                                  convert_whitespace=True)
+
+        # default lexer to 'text'
+        lexer = self.options.get('lexer', 'text')
+
+        self.options['source'] = path
+        codeblock = Pygments(self.name,
+                             [lexer],  # arguments
+                             {},  # no options for this directive
+                             include_lines,  # content
+                             self.lineno,
+                             self.content_offset,
+                             self.block_text,
+                             self.state,
+                             self.state_machine)
+        return codeblock.run()
+
+
+def register():
+    directives.register_directive('code-include', CodeInclude)
diff --git a/pelican-plugins/collate_content/.gitignore b/pelican-plugins/collate_content/.gitignore
new file mode 100644
index 0000000..52e0e81
--- /dev/null
+++ b/pelican-plugins/collate_content/.gitignore
@@ -0,0 +1,3 @@
+
+# Python files
+*.pyc
diff --git a/pelican-plugins/collate_content/LICENSE b/pelican-plugins/collate_content/LICENSE
new file mode 100644
index 0000000..dba13ed
--- /dev/null
+++ b/pelican-plugins/collate_content/LICENSE
@@ -0,0 +1,661 @@
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+  A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+  The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+  An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU Affero General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Remote Network Interaction; Use with the GNU General Public License.
+
+  Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software.  This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/pelican-plugins/collate_content/README.md b/pelican-plugins/collate_content/README.md
new file mode 100644
index 0000000..7e173c2
--- /dev/null
+++ b/pelican-plugins/collate_content/README.md
@@ -0,0 +1,57 @@
+# Collate Content
+*Author: Edward J. Stronge <ejstronge@gmail.com>*
+
+Makes categories of content available to the template as lists through a
+`collations` attribute. I primarily developed this to make it easier
+to work with `Page` objects that contain category metadata.
+
+## Installation
+
+If you downloaded this module as part of the pelican-plugins repository, 
+add it to your Pelican configuration as follows:
+
+    PLUGIN_PATH = '/path/to/pelican-plugins'
+    PLUGINS = ['pelican_collate_content', ]
+    
+Otherwise, you can import it into Python as a normal module if you place
+this repository in your `$PYTHONPATH`.
+
+## Usage
+
+To display all content in the category `Software Development`, 
+you could use the following block in a template. In the template, the category
+will appear in lowercase with internal whitespace and '-' characters
+converted to underscores:
+
+    ```html
+    <h1>Development blog</h1>
+    <ul> 
+    {% for a in collations.software_development_articles %}
+        <li>a.date - a.title</li> 
+    {% endfor %}
+    </ul>
+    
+    <h1> Open source projects </h1>
+    I'm an active contributor to the following projects:
+    
+    <ul>
+    {% for p in software_development_pages %}
+        <li> p.title - p.summary</li> 
+    {% endfor %}
+    </ul>
+    ```
+
+### Articles or pages with multiple categories
+
+Multiple categories are supported out-of-the box. Categories may not
+contain commas but otherwise work with no problem.
+
+## Settings
+
+To limit which categories and subcategories are collated, set the
+`CATEGORIES_TO_COLLATE` option in your Pelican configuration file.
+
+If this option is present and is a list, only categories present
+in `CATEGORIES_TO_COLLATE` will be collated:
+
+    CATEGORIES_TO_COLLATE = ['category-of-interest', 'another-cool-category']
diff --git a/pelican-plugins/collate_content/__init__.py b/pelican-plugins/collate_content/__init__.py
new file mode 100644
index 0000000..fcbd7a8
--- /dev/null
+++ b/pelican-plugins/collate_content/__init__.py
@@ -0,0 +1,10 @@
+"""
+__init__.py
+===========
+
+Edward J. Stronge
+(c) 2014
+
+Imports collate_content to facilitate Pelican's plugin loading process.
+"""
+from .collate_content import *
diff --git a/pelican-plugins/collate_content/collate_content.py b/pelican-plugins/collate_content/collate_content.py
new file mode 100644
index 0000000..ed1d271
--- /dev/null
+++ b/pelican-plugins/collate_content/collate_content.py
@@ -0,0 +1,74 @@
+"""
+collate_content.py
+==================
+(c) 2014 - Edward Stronge
+
+Connects to the content generator finalized signal to combine
+articles and pages sharing a category into lists that will be
+available in the template context.
+
+Thanks to #pelican member @kura for suggestions on creating this
+plugin.
+"""
+from collections import defaultdict
+import functools
+import re
+
+from pelican import signals
+
+
+def group_content(generator, content_type):
+    """
+    Assembles articles and pages into lists based on each
+    article or page's content. These lists are available
+    through the global context passed to the template engine.
+
+    When multiple categories are present, splits category names
+    based on commas and trims whitespace surrounding a
+    category's name. Thus, commas may not appear within a category
+    but they can be used to delimit categories and may be surrounded by
+    arbitrary amounts of whitespace.
+
+    For each category, substitutes '_' for all whitespace and '-'
+    characters, then creates a list named `SUBSTITUTED_CATEGORY_NAME`_articles
+    or `SUBSTITUTED_CATEGORY_NAME`_pages for Articles or Pages,
+    respectively.
+
+    Note that the *original* category name must appear in the
+    `CATEGORIES_TO_COLLATE` when using this plugin with category
+    filtering enabled.
+    """
+    category_filter = generator.settings.get('CATEGORIES_TO_COLLATE', None)
+    filtering_active = type(category_filter) in (list, tuple, set)
+
+    collations = generator.context.get('collations', defaultdict(list))
+    for content in generator.context[content_type]:
+        category_list = [c.strip() for c in content.category.name.split(',')]
+        for category in category_list:
+            if filtering_active and category not in category_filter:
+                continue
+            category = substitute_category_name(category)
+            collations['%s_%s' % (category, content_type)].append(content)
+    generator.context['collations'] = collations
+
+
+def substitute_category_name(category_name):
+    """
+    Replaces whitespace and '-' characters in `category_name`
+    to allow category_name to be made into a valid Python
+    identifier.
+
+    Doesn't check all possible ways a string might be invalid;
+    the user of the collate_content module is advised to use
+    categories with Python-friendly names.
+    """
+    return re.sub(r'\s', '_', category_name).replace('-', '_').lower()
+
+ARTICLE_GROUPER = functools.partial(group_content, content_type='articles')
+PAGE_GROUPER = functools.partial(group_content, content_type='pages')
+
+
+def register():
+    """Register the new plugin"""
+    signals.article_generator_finalized.connect(ARTICLE_GROUPER)
+    signals.page_generator_finalized.connect(PAGE_GROUPER)
diff --git a/pelican-plugins/collate_content/test_collate_content.py b/pelican-plugins/collate_content/test_collate_content.py
new file mode 100644
index 0000000..176827b
--- /dev/null
+++ b/pelican-plugins/collate_content/test_collate_content.py
@@ -0,0 +1,252 @@
+"""
+test_collate_content.py
+=======================
+
+(c) 2014 - Edward J. Stronge
+
+Tests for the collate_content module
+"""
+from collections import defaultdict, namedtuple
+import os
+import random
+import tempfile
+import shutil
+import string
+import unittest
+
+from pelican import Pelican
+from pelican import ArticlesGenerator, PagesGenerator
+from pelican.settings import read_settings
+
+import collate_content as cc
+
+TEMP_PAGE_TEMPLATE = """Title: {title}
+Category: {category}
+"""
+
+Content = namedtuple('Content', ['title', 'path', 'category'])
+# Characters likely to appear in blog titles/categories. Could eventually
+# extend support to more characters that can't appear in a Python identifier
+BLOG_CHARACTERS = string.ascii_letters + ' -:'
+
+
+def make_content(directory, categories, count=5, categories_per_content=1):
+    """
+    make_content --> {(processed_category, original_category): articles, ...}
+
+    Writes random titles and categories into `count` temporary
+    files in `directory`. If desired, specify `categories_per_content`
+    to assign multiple categories to each written file.
+
+    Returns a dictionary whose keys are in `categories` with values
+    that are (title, path, category) tuples for the generated
+    content files.
+    """
+    new_content = defaultdict(list)
+    for _ in range(count):
+        title = get_random_text_and_whitespace()
+        category_choice = random.sample(categories, categories_per_content)
+        categories_string = ', '.join(category_choice)
+        output = TEMP_PAGE_TEMPLATE.format(
+            title=title, category=categories_string)
+        with tempfile.NamedTemporaryFile(
+                dir=directory, mode='w', suffix='.md', delete=False) as tmp:
+            tmp.write(output)
+            path = os.path.join(directory, tmp.name)
+
+        for each_cat in category_choice:
+            new_content[(cc.substitute_category_name(each_cat), each_cat)]\
+                .append(Content(title, path, categories_string))
+    return new_content
+
+
+def get_random_text_and_whitespace(length=10):
+    """
+    Returns at most `length` randomly-generated letters and/or
+    whitespace. The returned string will not begin or end in whitespace.
+    """
+    return "".join(random.sample(BLOG_CHARACTERS, length)).strip()
+
+
+def modified_pelican_run(self):
+    """Runs the generators and returns the context object
+
+    Modified from the Pelican object's run methods.
+    """
+
+    context = self.settings.copy()
+    context['filenames'] = {}  # share the dict between all the generators
+    context['localsiteurl'] = self.settings['SITEURL']  # share
+    context['generated_content'] = dict()
+    context['static_links'] = set()
+    generators = [
+        cls(
+            context=context,
+            settings=self.settings,
+            path=self.path,
+            theme=self.theme,
+            output_path=self.output_path,
+        ) for cls in self.get_generator_classes()
+    ]
+
+    for p in generators:
+        if hasattr(p, 'generate_context'):
+            p.generate_context()
+
+    writer = self.get_writer()
+
+    for p in generators:
+        if hasattr(p, 'generate_output'):
+            p.generate_output(writer)
+
+    next(g for g in generators if isinstance(g, ArticlesGenerator))
+    next(g for g in generators if isinstance(g, PagesGenerator))
+    return context
+
+
+class ContentCollationTester(unittest.TestCase):
+    """Test generation of lists of content based on their Category metadata"""
+
+    def setUp(self, settings_overrides=None, count=5,
+              categories_per_content=1, categories=None):
+        self.temp_input_dir = tempfile.mkdtemp(prefix="cc-input-")
+        page_directory = os.path.join(self.temp_input_dir, 'pages')
+        os.mkdir(page_directory)
+        self.temp_output_dir = tempfile.mkdtemp(prefix="cc-output-")
+
+        if categories is None:
+            categories = [get_random_text_and_whitespace() for _ in range(5)]
+
+        self.articles = make_content(
+            self.temp_input_dir, categories, count=count,
+            categories_per_content=categories_per_content)
+        self.pages = make_content(
+            page_directory, categories, count=count,
+            categories_per_content=categories_per_content)
+        settings = {
+            'PATH': self.temp_input_dir,
+            'PAGE_DIR': 'pages',
+            'OUTPUT_PATH': self.temp_output_dir,
+            'PLUGINS': [cc],
+            'DEFAULT_DATE': (2014, 6, 8),
+            }
+        if settings_overrides is not None:
+            settings.update(settings_overrides)
+        settings = read_settings(override=settings)
+        pelican = Pelican(settings=settings)
+        pelican.modified_run = modified_pelican_run
+        self.collations = pelican.modified_run(pelican)['collations']
+
+    def tearDown(self):
+        shutil.rmtree(self.temp_input_dir)
+        shutil.rmtree(self.temp_output_dir)
+
+
+class TestCollation(ContentCollationTester):
+    """Test generation of lists of content based on their Category metadata"""
+
+    def test_articles_with_one_category(self):
+
+        for substituted_category, original_category in self.articles.keys():
+            collation_key = '%s_articles' % substituted_category
+            self.assertIn(collation_key, self.collations)
+
+            collated_titles = [a.title for a in self.collations[collation_key]]
+
+            for title, _, _ in self.articles[
+                    (substituted_category, original_category)]:
+                self.assertIn(title, collated_titles)
+
+    def test_pages_with_one_category(self):
+
+        for substituted_category, original_category in self.pages.keys():
+            collation_key = '%s_pages' % substituted_category
+            self.assertIn(collation_key, self.collations)
+
+            collated_titles = [a.title for a in self.collations[collation_key]]
+
+            for title, _, _ in self.pages[
+                    (substituted_category, original_category)]:
+                self.assertIn(title, collated_titles)
+
+
+class TestCollationAndMultipleCategories(TestCollation):
+    """
+    Test collate_content with multiple categories specified in each
+    article and each page.
+    """
+    def setUp(self):
+        categories = [get_random_text_and_whitespace() for _ in range(5)]
+
+        ContentCollationTester.setUp(
+            self, categories=categories, categories_per_content=3)
+
+
+class TestFilteredCategories(ContentCollationTester):
+    """
+    Test collate_content with the `CATEGORIES_TO_COLLATE` setting
+    in effect
+    """
+
+    def setUp(self):
+        categories = [get_random_text_and_whitespace() for _ in range(5)]
+        self.retained_categories = categories[:2]
+        override = {'CATEGORIES_TO_COLLATE': self.retained_categories}
+
+        ContentCollationTester.setUp(
+            self, settings_overrides=override, categories=categories)
+
+    def test_articles_with_one_category_after_filtering(self):
+
+        for substituted_category, original_category in self.articles.keys():
+            collation_key = '%s_articles' % substituted_category
+
+            if original_category not in self.retained_categories:
+                self.assertNotIn(collation_key, self.collations)
+                continue
+
+            self.assertIn(collation_key, self.collations)
+
+            collated_titles = [a.title for a in self.collations[collation_key]]
+
+            for title, _, _ in self.articles[
+                    (substituted_category, original_category)]:
+                self.assertIn(title, collated_titles)
+
+    def test_pages_with_one_category_after_filtering(self):
+
+        for substituted_category, original_category in self.pages.keys():
+            collation_key = '%s_pages' % substituted_category
+
+            if original_category not in self.retained_categories:
+                self.assertNotIn(collation_key, self.collations)
+                continue
+
+            self.assertIn(collation_key, self.collations)
+
+            collated_titles = [a.title for a in self.collations[collation_key]]
+
+            for title, _, _ in self.pages[
+                    (substituted_category, original_category)]:
+                self.assertIn(title, collated_titles)
+
+
+class TestFilteredAndMultipleCategories(TestFilteredCategories):
+    """
+    Test collate_content with the `CATEGORIES_TO_COLLATE` setting
+    in effect as well as with multiple categories specified in each
+    article and each page.
+    """
+    def setUp(self):
+        categories = [get_random_text_and_whitespace() for _ in range(5)]
+        self.retained_categories = categories[:2]
+        override = {'CATEGORIES_TO_COLLATE': self.retained_categories}
+
+        ContentCollationTester.setUp(
+            self, settings_overrides=override, categories=categories,
+            categories_per_content=3)
+
+
+if __name__ == '__main__':
+    suite = unittest.TestLoader().loadTestsFromNames(['test_collate_content'])
+    unittest.TextTestRunner(verbosity=1).run(suite)
diff --git a/pelican-plugins/creole_reader/Readme.md b/pelican-plugins/creole_reader/Readme.md
new file mode 100644
index 0000000..d72bc07
--- /dev/null
+++ b/pelican-plugins/creole_reader/Readme.md
@@ -0,0 +1,41 @@
+# Creole Reader
+
+This plugins allows you to write your posts using the wikicreole syntax. Give to
+these files the creole extension. The metadata are between `<<header>> <</header>>`
+tags.
+
+## Dependency
+This plugin relies on [python-creole](https://pypi.python.org/pypi/python-creole/) to work. Install it with:
+`pip install python-creole`
+
+## Syntax
+Use ** for strong, // for emphasis, one = for 1st level titles. Please use the
+following macro for code highlighting:
+`<<code ext=".file_extension">> <</code>>`
+
+For the complete syntax, look at: http://www.wikicreole.org/
+
+## Basic example
+```
+<<header>>
+title: Créole
+tags: creole, python, pelican_open
+date: 2013-12-12
+<</header>>
+
+= Title 1
+== Title 2
+
+Some nice text with **strong** and //emphasis//.
+
+* A nice list
+** With sub-elements
+* Python
+
+<<code ext=".py">>
+print("Hello World")
+<</code>>
+
+# An ordered list
+# A second item
+```
diff --git a/pelican-plugins/creole_reader/__init__.py b/pelican-plugins/creole_reader/__init__.py
new file mode 100644
index 0000000..2e26d46
--- /dev/null
+++ b/pelican-plugins/creole_reader/__init__.py
@@ -0,0 +1 @@
+from .creole_reader import *
diff --git a/pelican-plugins/creole_reader/creole_reader.py b/pelican-plugins/creole_reader/creole_reader.py
new file mode 100644
index 0000000..c95651b
--- /dev/null
+++ b/pelican-plugins/creole_reader/creole_reader.py
@@ -0,0 +1,101 @@
+#-*- conding: utf-8 -*-
+
+'''
+Creole Reader
+-------------
+
+This plugins allows you to write your posts using the wikicreole syntax. Give to
+these files the creole extension.
+For the syntax, look at: http://www.wikicreole.org/
+'''
+
+from pelican import readers
+from pelican import signals
+from pelican import settings
+
+from pelican.utils import pelican_open
+
+try:
+    from creole import creole2html
+    creole = True
+except ImportError:
+    creole = False
+
+try:
+    from pygments import lexers
+    from pygments.formatters import HtmlFormatter
+    from pygments import highlight
+    PYGMENTS = True
+except:
+    PYGMENTS = False
+
+class CreoleReader(readers.BaseReader):
+    enabled = creole
+
+    file_extensions = ['creole']
+
+    def __init__(self, settings):
+        super(CreoleReader, self).__init__(settings)
+
+    def _parse_header_macro(self, text):
+        for line in text.split('\n'):
+            name, value = line.split(':')
+            name, value = name.strip(), value.strip()
+            if name == 'title':
+                self._metadata[name] = value
+            else:
+                self._metadata[name] = self.process_metadata(name, value)
+        return u''
+
+    def _no_highlight(self, text):
+        html = u'\n<pre><code>{}</code></pre>\n'.format(text)
+        return html
+
+    def _get_lexer(self, source_type, code):
+        try:
+            return lexers.get_lexer_by_name(source_type)
+        except:
+            return lexers.guess_lexer(code)
+
+    def _get_formatter(self):
+        formatter = HtmlFormatter(lineos = True, encoding='utf-8',
+                                  style='colorful', outencoding='utf-8',
+                                  cssclass='pygments')
+        return formatter
+
+    def _parse_code_macro(self, ext, text):
+        if not PYGMENTS:
+            return self._no_highlight(text)
+
+        try:
+            source_type = ''
+            if '.' in ext:
+                source_type = ext.strip().split('.')[1]
+            else:
+                source_type = ext.strip()
+        except IndexError:
+            source_type = ''
+        lexer = self._get_lexer(source_type, text)
+        formatter = self._get_formatter()
+
+        try:
+            return highlight(text, lexer, formatter).decode('utf-8')
+        except:
+            return self._no_highlight(text)
+
+    # You need to have a read method, which takes a filename and returns
+    # some content and the associated metadata.
+    def read(self, source_path):
+        """Parse content and metadata of creole files"""
+
+        self._metadata = {}
+        with pelican_open(source_path) as text:
+            content = creole2html(text, macros={'header': self._parse_header_macro,
+                                            'code': self._parse_code_macro})
+        return content, self._metadata
+
+def add_reader(readers):
+    readers.reader_classes['creole'] = CreoleReader
+
+def register():
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/css-html-js-minify/__init__.py b/pelican-plugins/css-html-js-minify/__init__.py
new file mode 100644
index 0000000..7922403
--- /dev/null
+++ b/pelican-plugins/css-html-js-minify/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from .css_html_js_minify import *
diff --git a/pelican-plugins/css-html-js-minify/css_html_js_minify.py b/pelican-plugins/css-html-js-minify/css_html_js_minify.py
new file mode 100644
index 0000000..d3019f8
--- /dev/null
+++ b/pelican-plugins/css-html-js-minify/css_html_js_minify.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+"""
+css-html-js-minify wrapper for Pelican
+"""
+
+import glob
+import os
+import sys
+
+from css_html_js_minify import (
+    process_single_css_file,
+    process_single_html_file,
+    process_single_js_file,
+)
+from pelican import signals
+
+def main(pelican):
+    for f in glob.iglob(pelican.output_path + '/**/*.htm*', recursive=True):
+        process_single_html_file(f, overwrite=True)
+    for f in glob.iglob(pelican.output_path + '/**/*.css', recursive=True):
+        process_single_css_file(f, overwrite=True)
+    for f in glob.iglob(pelican.output_path + '/**/*.js', recursive=True):
+        process_single_js_file(f, overwrite=True)
+
+def register():
+    signals.finalized.connect(main)
diff --git a/pelican-plugins/css-html-js-minify/readme.rst b/pelican-plugins/css-html-js-minify/readme.rst
new file mode 100644
index 0000000..2ec9d1d
--- /dev/null
+++ b/pelican-plugins/css-html-js-minify/readme.rst
@@ -0,0 +1,9 @@
+css-html-js-minify wrapper for Pelican
+======================================
+
+This plugin simply finds all css, html and javascript files in the pelican
+output folder and minifies them in place using `css-html-js-minify`_.
+
+`css-html-js-minify`_ needs to be installed separately and importable.
+
+.. _`css-html-js-minify`: https://github.com/juancarlospaco/css-html-js-minify
diff --git a/pelican-plugins/ctags_generator/README.md b/pelican-plugins/ctags_generator/README.md
new file mode 100644
index 0000000..22b2196
--- /dev/null
+++ b/pelican-plugins/ctags_generator/README.md
@@ -0,0 +1,21 @@
+# Summary
+
+This plugin generates a `tags` file following the [CTags format](http://ctags.sourceforge.net/FORMAT) in the `content/` directory,
+to provide autocompletion for code editors that support it.
+
+
+## Installation
+
+To enable, add the following to your settings.py:
+
+    PLUGIN_PATH = 'path/to/pelican-plugins'
+    PLUGINS = ['ctags_generator']
+
+`PLUGIN_PATH` can be a path relative to your settings file or an absolute path.
+
+
+## Tests
+
+To execute them:
+
+    nosetests -w ctags_generator
diff --git a/pelican-plugins/ctags_generator/__init__.py b/pelican-plugins/ctags_generator/__init__.py
new file mode 100644
index 0000000..51b5633
--- /dev/null
+++ b/pelican-plugins/ctags_generator/__init__.py
@@ -0,0 +1 @@
+from .ctags_generator import *
diff --git a/pelican-plugins/ctags_generator/ctags_generator.py b/pelican-plugins/ctags_generator/ctags_generator.py
new file mode 100644
index 0000000..b5ced48
--- /dev/null
+++ b/pelican-plugins/ctags_generator/ctags_generator.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+
+import os
+
+from pelican import signals
+
+
+CTAGS_TEMPLATE = '''{% for tag, articles in tags_articles %}
+{% for article in articles %}
+{{tag}}\t{{article}}\t0;"\ttag
+{% endfor %}
+{% endfor %}
+'''
+
+
+def generate_ctags(article_generator, writer):
+    tags_file_path = os.path.join(article_generator.path, 'tags')
+    if article_generator.settings.get('WRITE_SELECTED'):
+        article_generator.settings['WRITE_SELECTED'].append(tags_file_path)
+    writer.output_path = article_generator.path
+    try:
+        writer.write_file('tags', article_generator.env.from_string(CTAGS_TEMPLATE), article_generator.context,
+                          tags_articles=sorted(article_generator.tags.items()))
+    finally:
+        writer.output_path = article_generator.output_path
+
+
+def register():
+    signals.article_writer_finalized.connect(generate_ctags)
diff --git a/pelican-plugins/ctags_generator/test_content/article_with_duplicate_tags_authors.md b/pelican-plugins/ctags_generator/test_content/article_with_duplicate_tags_authors.md
new file mode 100644
index 0000000..7ab046f
--- /dev/null
+++ b/pelican-plugins/ctags_generator/test_content/article_with_duplicate_tags_authors.md
@@ -0,0 +1,15 @@
+Title: Test metadata duplicates
+Category: test
+Tags: foo, bar, foobar, foo, bar
+Authors: Author, First; Author, Second; Author, First
+Date: 2010-12-02 10:14
+Modified: 2010-12-02 10:20
+Summary: I have a lot to test
+
+Test Markdown File Header
+=========================
+
+Used for pelican test
+---------------------
+
+The quick brown fox jumped over the lazy dog's back.
diff --git a/pelican-plugins/ctags_generator/test_content/article_with_markdown_and_nonascii_summary.md b/pelican-plugins/ctags_generator/test_content/article_with_markdown_and_nonascii_summary.md
new file mode 100644
index 0000000..d76ed4a
--- /dev/null
+++ b/pelican-plugins/ctags_generator/test_content/article_with_markdown_and_nonascii_summary.md
@@ -0,0 +1,19 @@
+Title: マックOS X 10.8でパイソンとVirtualenvをインストールと設定
+Slug: python-virtualenv-on-mac-osx-mountain-lion-10.8
+Date: 2012-12-20
+Modified: 2012-12-22
+Tags: パイソン, マック
+Category: 指導書
+Summary: パイソンとVirtualenvをまっくでインストールする方法について明確に説明します。
+
+Writing unicode is certainly fun.
+
+パイソンとVirtualenvをまっくでインストールする方法について明確に説明します。
+
+And let's mix languages.
+
+первый пост
+
+Now another.
+
+İlk yazı çok özel değil.
diff --git a/pelican-plugins/ctags_generator/test_content/article_with_md_extension.md b/pelican-plugins/ctags_generator/test_content/article_with_md_extension.md
new file mode 100644
index 0000000..89b6980
--- /dev/null
+++ b/pelican-plugins/ctags_generator/test_content/article_with_md_extension.md
@@ -0,0 +1,14 @@
+Title: Test md File
+Category: test
+Tags: foo, bar, foobar
+Date: 2010-12-02 10:14
+Modified: 2010-12-02 10:20
+Summary: I have a lot to test
+
+Test Markdown File Header
+=========================
+
+Used for pelican test
+---------------------
+
+The quick brown fox jumped over the lazy dog's back.
diff --git a/pelican-plugins/ctags_generator/test_ctags_generator.py b/pelican-plugins/ctags_generator/test_ctags_generator.py
new file mode 100644
index 0000000..53a23c8
--- /dev/null
+++ b/pelican-plugins/ctags_generator/test_ctags_generator.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+import os, shutil
+
+from pelican.generators import ArticlesGenerator
+from pelican.tests.support import get_settings, unittest
+from pelican.writers import Writer
+
+from ctags_generator import generate_ctags
+
+
+CUR_DIR = os.path.dirname(__file__)
+TEST_CONTENT_DIR = os.path.join(CUR_DIR, 'test_content')
+
+
+class CtagsGeneratorTest(unittest.TestCase):
+
+    def test_generate_ctags(self):
+        settings = get_settings(filenames={})
+        settings['GENERATE_CTAGS'] = True
+
+        context = settings.copy()
+        context['generated_content'] = dict()
+        context['static_links'] = set()
+        generator = ArticlesGenerator(
+            context=context, settings=settings,
+            path=TEST_CONTENT_DIR, theme=settings['THEME'], output_path=TEST_CONTENT_DIR)
+        generator.generate_context()
+
+        writer = Writer(TEST_CONTENT_DIR, settings=settings)
+        generate_ctags(generator, writer)
+
+        output_path = os.path.join(TEST_CONTENT_DIR, 'tags')
+        self.assertTrue(os.path.exists(output_path))
+
+        try:
+            # output content is correct
+            with open(output_path, 'r') as output_file:
+                ctags = [l.split('\t')[0] for l in output_file.readlines()]
+                self.assertEqual(['bar', 'bar', 'foo', 'foo', 'foobar', 'foobar', 'マック', 'パイソン'], ctags)
+        finally:
+            os.remove(output_path)
diff --git a/pelican-plugins/custom_article_urls/README.md b/pelican-plugins/custom_article_urls/README.md
new file mode 100644
index 0000000..89e0459
--- /dev/null
+++ b/pelican-plugins/custom_article_urls/README.md
@@ -0,0 +1,36 @@
+#Custom Article URLs#
+
+This plugin adds support for defining different default URLs for different
+categories, or different subcategories if using the subcategory plugin.
+
+##Usage##
+
+After adding `custom_article_urls` to your `PLUGINS`, add a
+`CUSTOM_ARTICLE_URLS` setting, which is a dictionary of rules. The rules are
+also a dictionary, consisting of the `URL` and the `SAVE_AS` values.
+
+For example, if you had two categories, *Category 1* and *Category 2*, and you
+would like *Category 1* saved as `category-1/article-slug/` and *Category 2*
+saved as `/year/month/article-slug/`, you would add:
+
+    CUSTOM_ARTICLE_URLS = {
+        'Category 1': {'URL': '{category}/{slug}/',
+            'SAVE_AS': '{category}/{slug}/index.html}',
+        'Category 2': {'URL': '{date:%Y}/{date:%B}/{slug}/',
+            'SAVE_AS': '{date:%Y}/{date:%B}/{slug}/index.html}',
+        }
+
+If you had any other categories, they would use the default `ARTICLE_SAVE_AS`
+and `ARTICLE_URL` settings.
+
+If you are using the subcategory plugin, you can define them the same way.
+For example, if *Category 1* had a subcategory called *Sub Category*, you could
+define its rules with::
+
+    'Category 1/Sub Category`: ...
+
+##Other Usage: Article Metadata##
+
+If you define `URL` and `Save_as` in your article metadata, then this plugin
+will not alter that value. So you can still specify special one-off URLs as
+you normally would.
diff --git a/pelican-plugins/custom_article_urls/__init__.py b/pelican-plugins/custom_article_urls/__init__.py
new file mode 100644
index 0000000..ed876ab
--- /dev/null
+++ b/pelican-plugins/custom_article_urls/__init__.py
@@ -0,0 +1 @@
+from .custom_article_urls import *
diff --git a/pelican-plugins/custom_article_urls/custom_article_urls.py b/pelican-plugins/custom_article_urls/custom_article_urls.py
new file mode 100644
index 0000000..a59c387
--- /dev/null
+++ b/pelican-plugins/custom_article_urls/custom_article_urls.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+"""
+@Author: Alistair Magee
+
+Adds ability to specify custom urls for different categories 
+(or subcategories if using subcategory plugin) of article
+using a dictionary stored in pelican settings file as
+{category: {article_url_structure: stirng, article_save_as: string}}
+"""
+from pelican import signals
+from pelican.contents import Article, Category
+from six import text_type
+
+def custom_url(generator, metadata):
+    if 'CUSTOM_ARTICLE_URLS' in generator.settings:
+        custom_urls = generator.settings['CUSTOM_ARTICLE_URLS']
+        category = text_type(metadata['category'])
+        pattern_matched = {}
+        
+        if category in custom_urls:
+            pattern_matched = custom_urls[category]
+
+        if 'subcategories' in metadata: #using subcategory plugin
+            for subcategory in metadata['subcategories']:
+                if subcategory in custom_urls:
+                    pattern_matched = custom_urls[subcategory]
+
+        if pattern_matched:
+            #only alter url if hasn't been set in the metdata
+            ignore = False
+            if ('url', 'save_as') in metadata:
+                """ if both url and save_as are set in the metadata already
+                then there is already a custom url set, skip this one
+                """
+                ignore = True
+            elif ('status' in metadata) and (metadata['status'] == 'draft'):
+                ignore = True
+
+            if not ignore:
+                temp_article = Article("", metadata=metadata)
+                url_format = pattern_matched['URL']
+                save_as_format = pattern_matched['SAVE_AS']
+                url = url_format.format(**temp_article.url_format)
+                save_as = save_as_format.format(**temp_article.url_format)
+                metadata.update({'url': url, 'save_as': save_as})
+
+        
+def register():
+    signals.article_generator_context.connect(custom_url)
diff --git a/pelican-plugins/dateish/Readme.rst b/pelican-plugins/dateish/Readme.rst
new file mode 100644
index 0000000..0de6361
--- /dev/null
+++ b/pelican-plugins/dateish/Readme.rst
@@ -0,0 +1,41 @@
+Dateish Plugin for Pelican
+==========================
+
+This plugin adds the ability to treat arbitrary metadata fields as datetime
+objects.
+
+Usage
+-----
+
+For example, if you have the following pieces of metadata in an article:
+
+.. code-block:: markdown
+
+    # my_article.markdown
+    Date: 2000-01-01
+    Idea_Date: 1993-03-04
+    Important_Dates: 2013-10-12
+                     2013-11-08
+                     2013-12-02
+
+Normally, the Idea_Date and Important_Dates variables will be strings, so
+you will not be able to use the strftime() Jinja filter on them.
+
+With this plugin, you define in your settings file a list of the names of
+the additional metadata fields you want to treat as dates:
+
+.. code-block:: python
+
+    # pelicanconf.py
+    DATEISH_PROPERTIES = ['idea_date', 'important_dates']
+
+Then you can use them in templates just like date:
+
+.. code-block:: html+jinja
+
+    # mytemplate.html
+    <p>Idea date: {{ article.idea_date | strftime('%d %B %Y') }}</p>
+    {% for d in article.important_dates %}
+        <p>Important date: {{ d | strftime('%d %B %Y') }}</p>
+    {% endfor %}
+
diff --git a/pelican-plugins/dateish/__init__.py b/pelican-plugins/dateish/__init__.py
new file mode 100644
index 0000000..52db509
--- /dev/null
+++ b/pelican-plugins/dateish/__init__.py
@@ -0,0 +1 @@
+from .dateish import *
diff --git a/pelican-plugins/dateish/dateish.py b/pelican-plugins/dateish/dateish.py
new file mode 100644
index 0000000..5036db2
--- /dev/null
+++ b/pelican-plugins/dateish/dateish.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+"""
+Dateish Plugin for Pelican
+==========================
+
+This plugin adds the ability to treat arbitrary metadata fields as datetime
+objects.
+"""
+
+from pelican import signals
+from pelican.utils import get_date
+
+
+def dateish(generator):
+    if 'DATEISH_PROPERTIES' not in generator.settings:
+        return
+
+    for article in generator.articles:
+        for field in generator.settings['DATEISH_PROPERTIES']:
+            if hasattr(article, field):
+                value = getattr(article, field)
+                if type(value) == list:
+                    setattr(article, field, [get_date(d) for d in value])
+                else:
+                    setattr(article, field, get_date(value))
+
+def register():
+    signals.article_generator_finalized.connect(dateish)
diff --git a/pelican-plugins/disqus_static/README.rst b/pelican-plugins/disqus_static/README.rst
new file mode 100644
index 0000000..77cc5fa
--- /dev/null
+++ b/pelican-plugins/disqus_static/README.rst
@@ -0,0 +1,60 @@
+Disqus static comment plugin for Pelican
+====================================
+
+This plugin adds a disqus_comments property to all articles.
+Comments are fetched at generation time using disqus API.
+
+Installation
+------------
+Because we use disqus API to retrieve the comments you need to create an application at
+http://disqus.com/api/applications/ which will provide you with a secret and public keys for the API.
+
+We use disqus-python package for communication with disqus API:
+``pip install disqus-python``
+
+Put ``disqus_static.py`` plugin in ``plugins`` folder in pelican installation 
+and use the following in your settings::
+
+    PLUGINS = [u"disqus_static"]
+
+    DISQUS_SITENAME = u'YOUR_SITENAME'
+    DISQUS_SECRET_KEY = u'YOUR_SECRET_KEY'
+    DISQUS_PUBLIC_KEY = u'YOUR_PUBLIC_KEY'
+
+Usage
+-----
+
+.. code-block:: html+jinja
+
+    {% if article.disqus_comments %}
+    <div id="disqus_static_comments">
+        <h4>{{ article.disqus_comment_count }} comments</h4>
+        <ul class="post-list">
+            {% for comment in article.disqus_comments recursive %}
+            <li class="post">
+                <div class="post-content">
+                    <div class="avatar hovercard">
+                        <img alt="Avatar" src="{{ comment.author.avatar.small.cache }}">
+                    </div>
+                    <div class="post-body">
+                        <header>
+                            <span class="publisher-anchor-color">{{ comment.author.name }}</span>
+                            <span class="time-ago" title="{{ comment.createdAt }}">{{ comment.createdAt }}</span>
+                        </header>
+                        <div class="post-message-container">
+                            <div class="post-message publisher-anchor-color ">
+                                {{ comment.message }}
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                {% if comment.children %}
+                <ul class="children">
+                    {{ loop(comment.children) }}
+                </ul>
+                {% endif %}
+            </li>
+            {% endfor %}
+        </ul>
+    </div>
+    {% endif %}
diff --git a/pelican-plugins/disqus_static/__init__.py b/pelican-plugins/disqus_static/__init__.py
new file mode 100644
index 0000000..acda53f
--- /dev/null
+++ b/pelican-plugins/disqus_static/__init__.py
@@ -0,0 +1 @@
+from .disqus_static import *
diff --git a/pelican-plugins/disqus_static/disqus_static.py b/pelican-plugins/disqus_static/disqus_static.py
new file mode 100644
index 0000000..6fb087a
--- /dev/null
+++ b/pelican-plugins/disqus_static/disqus_static.py
@@ -0,0 +1,80 @@
+# -*- coding: utf-8 -*-
+"""
+Disqus static comment plugin for Pelican
+====================================
+This plugin adds a disqus_comments property to all articles.          
+Comments are fetched at generation time using disqus API.
+"""
+
+from __future__ import unicode_literals
+from disqusapi import DisqusAPI, Paginator
+from pelican import signals
+
+def initialized(pelican):
+    from pelican.settings import DEFAULT_CONFIG
+    DEFAULT_CONFIG.setdefault('DISQUS_SECRET_KEY', '')
+    DEFAULT_CONFIG.setdefault('DISQUS_PUBLIC_KEY', '')
+    if pelican:
+        pelican.settings.setdefault('DISQUS_SECRET_KEY', '')
+        pelican.settings.setdefault('DISQUS_PUBLIC_KEY', '')
+
+def disqus_static(generator):
+    disqus = DisqusAPI(generator.settings['DISQUS_SECRET_KEY'], 
+                       generator.settings['DISQUS_PUBLIC_KEY'])
+    # first retrieve the threads
+    threads = Paginator(disqus.threads.list, 
+                        forum=generator.settings['DISQUS_SITENAME'])
+    # build a {thread_id: title} dict
+    thread_dict = {}
+    for thread in threads:
+        thread_dict[thread['id']] = thread['title']
+
+    # now retrieve the posts
+    posts = Paginator(disqus.posts.list, 
+                      forum=generator.settings['DISQUS_SITENAME'])
+
+    # build a {post_id: [child_post1, child_post2, ...]} dict
+    child_dict = {}
+    for post in posts:
+        if post['id'] not in child_dict.keys():
+            child_dict[post['id']] = []
+        if post['parent'] is not None:
+            if str(post['parent']) not in child_dict.keys():
+                child_dict[str(post['parent'])] = []
+            child_dict[str(post['parent'])].append(post)
+
+    # build a {title: [post1, post2, ...]} dict
+    post_dict = {}
+    for post in posts:
+        build_post_dict(post_dict, child_dict, thread_dict, post)
+
+    for article in generator.articles:
+        if article.title in post_dict:
+            article.disqus_comments = post_dict[article.title]
+            article.disqus_comment_count = sum([
+                postcounter(post) for post in post_dict[article.title]])
+
+def postcounter(node):
+    return 1 + sum([postcounter(n) for n in node['children']])
+
+def build_post_dict(post_dict, child_dict, thread_dict, post):
+    if post['thread'] not in thread_dict.keys():
+        return # invalid thread, should never happen
+
+    build_child_dict(child_dict, post)
+
+    if post['parent'] is not None:
+        return # this is a child post, don't want to display it here
+
+    if thread_dict[post['thread']] not in post_dict.keys():
+        post_dict[thread_dict[post['thread']]] = []
+    post_dict[thread_dict[post['thread']]].append(post)
+
+def build_child_dict(child_dict, post):
+    post['children'] = child_dict[post['id']]
+    for child in child_dict[post['id']]:
+        build_child_dict(child_dict, child)
+
+def register():
+    signals.initialized.connect(initialized)
+    signals.article_generator_finalized.connect(disqus_static)
diff --git a/pelican-plugins/disqus_static/requirements.txt b/pelican-plugins/disqus_static/requirements.txt
new file mode 100755
index 0000000..7692c84
--- /dev/null
+++ b/pelican-plugins/disqus_static/requirements.txt
@@ -0,0 +1,2 @@
+# Using latest repo version because latest pypi release is bugged: https://github.com/disqus/disqus-python/issues/34
+git+https://github.com/disqus/disqus-python.git
diff --git a/pelican-plugins/events/README.md b/pelican-plugins/events/README.md
new file mode 100644
index 0000000..63b95f5
--- /dev/null
+++ b/pelican-plugins/events/README.md
@@ -0,0 +1,82 @@
+Events plugin
+=============
+
+This plugin allows you to put events in your content via metadata. An
+iCal file is generated containing all events.
+
+
+Dependencies
+------------
+
+This plugin depends on the `icalendar` package, which can be installed
+using APT, DNF/YUM or pip:
+
+```sh
+pip install icalendar
+```
+
+
+Settings
+--------
+
+You can define settings with the `PLUGIN_EVENTS` variable:
+
+```python
+PLUGIN_EVENTS = {
+    'ics_fname': 'calendar.ics',
+}
+```
+
+Settings:
+- `ics_fname`: Where the iCal file is written
+
+
+Usage
+-----
+
+You can use the following metadata in your content:
+- `event-start`: When the event will start in "YYYY-MM-DD hh:mm"
+- `event-end`: When the event will stop in "YYYY-MM-DD hh:mm"
+- `event-duration`: The duration of the event [1]
+- `event-location`: Where the event takes place
+
+[1] To specify the event duration, use a number followed by a time unit:
+- `w`: weeks
+- `d`: days
+- `h`: hours
+- `m`: minutes
+- `s`: seconds
+
+
+Examples
+--------
+
+Example in reST format:
+```reST
+:event-start: 2015-01-21 10:30
+:event-duration: 2h
+:event-location: somewhere
+```
+
+Example in Markdown format:
+```markdown
+Event-start: 2015-01-21 10:30
+Event-duration: 2h
+Event-location: somewhere
+```
+
+
+Dedicated page
+--------------
+
+To generate a sorted event list in its own dedicated page:
+- Copy the `events_list.html` template under the templates directory of your theme
+- Create a page for this list, for example in `content/pages/events_list.rst`
+- Include the following metadata in your content:
+```reST
+Events list
+###########
+:slug: events-list
+:summary:
+:template: events_list
+```
diff --git a/pelican-plugins/events/__init__.py b/pelican-plugins/events/__init__.py
new file mode 100644
index 0000000..7b9b76e
--- /dev/null
+++ b/pelican-plugins/events/__init__.py
@@ -0,0 +1 @@
+from .events import *
diff --git a/pelican-plugins/events/events.py b/pelican-plugins/events/events.py
new file mode 100644
index 0000000..3f08b09
--- /dev/null
+++ b/pelican-plugins/events/events.py
@@ -0,0 +1,194 @@
+# -*- coding: utf-8 -*-
+"""
+events plugin for Pelican
+=========================
+
+This plugin looks for and parses an "events" directory and generates
+blog posts with a user-defined event date. (typically in the future)
+It also generates an ICalendar v2.0 calendar file.
+https://en.wikipedia.org/wiki/ICalendar
+
+
+Author: Federico Ceratto <federico.ceratto@gmail.com>
+Released under AGPLv3+ license, see LICENSE
+"""
+
+from datetime import datetime, timedelta
+from pelican import signals, utils, contents
+from collections import namedtuple, defaultdict
+import icalendar
+import logging
+import os.path
+import pytz
+
+log = logging.getLogger(__name__)
+
+TIME_MULTIPLIERS = {
+    'w': 'weeks',
+    'd': 'days',
+    'h': 'hours',
+    'm': 'minutes',
+    's': 'seconds'
+}
+
+events = []
+localized_events = defaultdict(list)
+
+
+def parse_tstamp(metadata, field_name):
+    """Parse a timestamp string in format "YYYY-MM-DD HH:MM"
+
+    :returns: datetime
+    """
+    try:
+        return datetime.strptime(metadata[field_name], '%Y-%m-%d %H:%M')
+    except Exception as e:
+        log.error("Unable to parse the '%s' field in the event named '%s': %s" \
+            % (field_name, metadata['title'], e))
+        raise
+
+
+def parse_timedelta(metadata):
+    """Parse a timedelta string in format [<num><multiplier> ]*
+    e.g. 2h 30m
+
+    :returns: timedelta
+    """
+
+    chunks = metadata['event-duration'].split()
+    tdargs = {}
+    for c in chunks:
+        try:
+            m = TIME_MULTIPLIERS[c[-1]]
+            val = int(c[:-1])
+            tdargs[m] = val
+        except KeyError:
+            log.error("""Unknown time multiplier '%s' value in the \
+'event-duration' field in the '%s' event. Supported multipliers \
+are: '%s'.""" % (c, metadata['title'], ' '.join(TIME_MULTIPLIERS)))
+            raise RuntimeError("Unknown time multiplier '%s'" % c)
+        except ValueError:
+            log.error("""Unable to parse '%s' value in the 'event-duration' \
+field in the '%s' event.""" % (c, metadata['title']))
+            raise ValueError("Unable to parse '%s'" % c)
+
+
+    return timedelta(**tdargs)
+
+
+def basic_isoformat(datetime_value):
+    return datetime_value.strftime("%Y%m%dT%H%M%S")
+
+
+def parse_article(content):
+    """Collect articles metadata to be used for building the event calendar
+
+    :returns: None
+    """
+    if not isinstance(content, contents.Article):
+        return
+
+    if 'event-start' not in content.metadata:
+        return
+
+    dtstart = parse_tstamp(content.metadata, 'event-start')
+
+    if 'event-end' in content.metadata:
+        dtend = parse_tstamp(content.metadata, 'event-end')
+
+    elif 'event-duration' in content.metadata:
+        dtdelta = parse_timedelta(content.metadata)
+        dtend = dtstart + dtdelta
+
+    else:
+        msg = "Either 'event-end' or 'event-duration' must be" + \
+            " speciefied in the event named '%s'" % content.metadata['title']
+        log.error(msg)
+        raise ValueError(msg)
+
+    content.event_plugin_data = {"dtstart": dtstart, "dtend": dtend}
+
+    events.append(content)
+
+
+def generate_ical_file(generator):
+    """Generate an iCalendar file
+    """
+    global events
+    ics_fname = generator.settings['PLUGIN_EVENTS']['ics_fname']
+    if not ics_fname:
+        return
+
+    ics_fname = os.path.join(generator.settings['OUTPUT_PATH'], ics_fname)
+    log.debug("Generating calendar at %s with %d events" % (ics_fname, len(events)))
+
+    tz = generator.settings.get('TIMEZONE', 'UTC')
+    tz = pytz.timezone(tz)
+
+    ical = icalendar.Calendar()
+    ical.add('prodid', '-//My calendar product//mxm.dk//')
+    ical.add('version', '2.0')
+
+    DEFAULT_LANG = generator.settings['DEFAULT_LANG']
+    curr_events = events if not localized_events else localized_events[DEFAULT_LANG]
+
+    for e in curr_events:
+        ie = icalendar.Event(
+            summary=e.metadata['summary'],
+            dtstart=basic_isoformat(e.event_plugin_data["dtstart"]),
+            dtend=basic_isoformat(e.event_plugin_data["dtend"]),
+            dtstamp=basic_isoformat(e.metadata['date']),
+            priority=5,
+            uid=e.metadata['title'] + e.metadata['summary'],
+        )
+        if 'event-location' in e.metadata:
+            ie.add('location', e.metadata['event-location'])
+
+        ical.add_component(ie)
+
+    with open(ics_fname, 'wb') as f:
+        f.write(ical.to_ical())
+
+
+def generate_localized_events(generator):
+    """ Generates localized events dict if i18n_subsites plugin is active """
+
+    if "i18n_subsites" in generator.settings["PLUGINS"]:
+        if not os.path.exists(generator.settings['OUTPUT_PATH']):
+            os.makedirs(generator.settings['OUTPUT_PATH'])
+
+        for e in events:
+            if "lang" in e.metadata:
+                localized_events[e.metadata["lang"]].append(e)
+            else:
+                log.debug("event %s contains no lang attribute" % (e.metadata["title"],))
+
+
+def generate_events_list(generator):
+    """Populate the event_list variable to be used in jinja templates"""
+
+    if not localized_events:
+        generator.context['events_list'] = sorted(events, reverse = True,
+                                                  key=lambda ev: (ev.event_plugin_data["dtstart"], ev.event_plugin_data["dtend"]))
+    else:
+        generator.context['events_list'] = {k: sorted(v, reverse = True,
+                                                      key=lambda ev: (ev.event_plugin_data["dtstart"], ev.event_plugin_data["dtend"]))
+                                            for k, v in localized_events.items()}
+
+def initialize_events(article_generator):
+    """
+    Clears the events list before generating articles to properly support plugins with
+    multiple generation passes like i18n_subsites
+    """
+
+    del events[:]
+    localized_events.clear()
+
+def register():
+    signals.article_generator_init.connect(initialize_events)
+    signals.content_object_init.connect(parse_article)
+    signals.article_generator_finalized.connect(generate_localized_events)
+    signals.article_generator_finalized.connect(generate_ical_file)
+    signals.article_generator_finalized.connect(generate_events_list)
+
+
diff --git a/pelican-plugins/events/events_list.html b/pelican-plugins/events/events_list.html
new file mode 100644
index 0000000..98885c9
--- /dev/null
+++ b/pelican-plugins/events/events_list.html
@@ -0,0 +1,36 @@
+
+{% extends "base.html" %}
+
+{% block title %} Events list - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+    {% if events_list %}
+    <ul class="post-list">
+    {% for event in events_list %}
+      <li>
+        <p>
+          <a href="{{ SITEURL }}/{{ event.url }}">
+            <b>{{ event.metadata["title"] }}</b>
+          </a>
+        </p>
+        <p>
+        {% if event.event_plugin_data["dtstart"].date() == event.event_plugin_data["dtend"].date() %}
+        From {{ event.event_plugin_data["dtstart"] }} to {{ event.event_plugin_data["dtend"].time() }}
+        {% else %}
+        From {{ event.event_plugin_data["dtstart"] }} to {{ event.event_plugin_data["dtend"] }}
+        {% endif %}
+        </p>
+
+        {% if event.location %}
+        <p>Location: {{ event.metadata["location"] }}</p>
+        {% endif %}
+
+        <p>{{ event.metadata["summary"] }}</p>
+
+      </li>
+    {% endfor %}
+    </ul>
+    {% endif %}
+
+{% endblock %}
diff --git a/pelican-plugins/events/requirements.txt b/pelican-plugins/events/requirements.txt
new file mode 100755
index 0000000..44466d5
--- /dev/null
+++ b/pelican-plugins/events/requirements.txt
@@ -0,0 +1 @@
+icalendar
\ No newline at end of file
diff --git a/pelican-plugins/events/requiremets.txt b/pelican-plugins/events/requiremets.txt
new file mode 100755
index 0000000..744b7a9
--- /dev/null
+++ b/pelican-plugins/events/requiremets.txt
@@ -0,0 +1 @@
+icalendar
diff --git a/pelican-plugins/extract_toc/README.md b/pelican-plugins/extract_toc/README.md
new file mode 100644
index 0000000..40d2bee
--- /dev/null
+++ b/pelican-plugins/extract_toc/README.md
@@ -0,0 +1,137 @@
+Extract Table of Content
+========================
+
+A Pelican plugin to extract table of contents (ToC) from `article.content` and
+place it in its own `article.toc` variable for use in templates.
+
+Copyright (c) Talha Mansoor
+
+Author          | Talha Mansoor
+----------------|-----
+Author Email    | talha131@gmail.com
+Author Homepage | http://onCrashReboot.com
+Github Account  | https://github.com/talha131
+
+
+Acknowledgement
+---------------
+
+Thanks to [Avaris](https://github.com/avaris) for going out of the way to help
+me fix Unicode issues and doing a thorough code review.
+
+Thanks to [gw0](http://gw.tnode.com/) for adding Pandoc reader support.
+
+
+Why do you need it?
+===================
+
+Pelican can generate ToC of reST and Markdown files, using markup's respective
+directive and extension. Such ToC is generated and placed at the beginning of
+`article.content` like a string. Consequently it can not be placed anywhere
+else on the page (eg. `<nav>` HTML5 tag, in header, or at the end of your
+article's contents).
+
+To solve this problem, this plugin extracts ToC from `article.content` and
+places it in its own `article.toc` variable for use in templates.
+
+
+Requirements
+============
+
+`extract_toc` requires BeautifulSoup.
+
+```bash
+pip install beautifulsoup4
+```
+
+
+How to Use
+==========
+
+This plugin works by extracting the first occurrence of enclosed in:
+
+- `<div class="toc">` for the default Markdown reader
+- `<div class="contents topic">` for the default reStructuredText reader
+- `<nav class="TOC">` for the Pandoc reader
+
+If ToC appears in your article at more than one places, `extract_toc` will
+remove only the first occurrence. You shouldn't probably need to have multiple
+ToC in your article. In case you need to display it multiple times, you can
+print it via your template.
+
+
+Template example
+----------------
+
+Add something like this to your Pelican templates if missing:
+
+```python
+{% if article.toc %}
+    <nav class="toc">
+    {{ article.toc }}
+    </nav>
+{% endif %}
+```
+
+
+reStructuredText reader
+-----------------------
+
+To add a table of contents to your reStructuredText document (`.rst`) you need to add a `.. contents::` directive to its beginning. See the [docutils documentation](http://docutils.sourceforge.net/docs/ref/rst/directives.html#table-of-contents) for more details.
+
+```rst
+My super title
+##############
+
+:date: 2010-10-03
+:tags: thats, awesome
+
+.. contents::
+..
+   1  Head 1
+     1.1  Head 2
+   2  Head 3
+   3  head 4
+
+Heading 1
+---------
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.
+```
+
+
+Markdown reader
+---------------
+
+To enable table of contents generation for the Markdown reader you need to set `MD_EXTENSIONS = (['toc'])` in your Pelican configuration file.
+
+To add a table of contents to your Markdown document (`.md`) you need to place the `[TOC]` marker to its beginning. See the [Python Markdown documentation](http://pythonhosted.org/Markdown/extensions/toc.html) for more details.
+
+```markdown
+title: My super title
+date: 4-4-2013
+tags: thats, awesome
+
+[TOC]
+
+# Heading 1 #
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.
+```
+
+
+Pandoc reader
+-------------
+
+To enable table of contents generation for the Pandoc reader you need to set `PANDOC_ARGS = (['--toc', '--template=pandoc-template-toc'])` in your Pelican configuration file.
+
+Contents of the Pandoc template file `pandoc-template-toc.html5`:
+
+```html
+$if(toc)$
+<nav id="TOC">
+$toc$
+</nav>
+$endif$
+$body$
+```
diff --git a/pelican-plugins/extract_toc/__init__.py b/pelican-plugins/extract_toc/__init__.py
new file mode 100644
index 0000000..52c5778
--- /dev/null
+++ b/pelican-plugins/extract_toc/__init__.py
@@ -0,0 +1 @@
+from .extract_toc import *
diff --git a/pelican-plugins/extract_toc/extract_toc.py b/pelican-plugins/extract_toc/extract_toc.py
new file mode 100644
index 0000000..c92c4a4
--- /dev/null
+++ b/pelican-plugins/extract_toc/extract_toc.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+"""
+Extract Table of Content
+========================
+
+A Pelican plugin to extract table of contents (ToC) from `article.content` and
+place it in its own `article.toc` variable for use in templates.
+"""
+
+from os import path
+from bs4 import BeautifulSoup
+from pelican import signals, readers, contents
+import logging
+
+logger = logging.getLogger(__name__)
+
+
+def extract_toc(content):
+    if isinstance(content, contents.Static):
+        return
+
+    soup = BeautifulSoup(content._content, 'html.parser')
+    filename = content.source_path
+    extension = path.splitext(filename)[1][1:]
+    toc = None
+
+    # default Markdown reader
+    if not toc and readers.MarkdownReader.enabled and extension in readers.MarkdownReader.file_extensions:
+        toc = soup.find('div', class_='toc')
+        if toc:
+            toc.extract()
+            if len(toc.find_next('ul').find_all('li')) == 0:
+                toc = None
+
+    # default reStructuredText reader
+    if not toc and readers.RstReader.enabled and extension in readers.RstReader.file_extensions:
+        toc = soup.find('div', class_='contents topic')
+        if toc:
+            toc.extract()
+            tag = BeautifulSoup(str(toc), 'html.parser')
+            tag.div['class'] = 'toc'
+            tag.div['id'] = ''
+            p = tag.find('p', class_='topic-title first')
+            if p:
+                p.extract()
+            toc = tag
+
+    # Pandoc reader (markdown and other formats)
+    if 'pandoc_reader' in content.settings['PLUGINS']:
+        try:
+            from pandoc_reader import PandocReader
+        except ImportError:
+            PandocReader = False
+        if not toc and PandocReader and PandocReader.enabled and extension in PandocReader.file_extensions:
+            toc = soup.find('nav', id='TOC')
+
+    if toc:
+        toc.extract()
+        content._content = soup.decode()
+        content.toc = toc.decode()
+        if content.toc.startswith('<html>'):
+            content.toc = content.toc[12:-14]
+
+
+def register():
+    signals.content_object_init.connect(extract_toc)
diff --git a/pelican-plugins/feed_summary/Readme.md b/pelican-plugins/feed_summary/Readme.md
new file mode 100644
index 0000000..591fb34
--- /dev/null
+++ b/pelican-plugins/feed_summary/Readme.md
@@ -0,0 +1,38 @@
+# DEPRECATED — Do Not Use #
+
+**As noted in the [Pelican 3.7 release notes](https://blog.getpelican.com/pelican-3.7-released.html), RSS feeds now provide summaries by default, so this plugin is no longer relevant and will eventually be removed from this repository.**
+
+-----------------------
+
+This plugin allows article summaries to be used in ATOM and RSS feeds instead of the entire article. It uses the
+built-in pelican `Summary:` metadata.
+
+The summary of an article can either be set explicitly with the `Summary:` metadata attribute as described in the
+[Pelican documentation](http://docs.getpelican.com/) (*Writing content* > *File metadata* section),
+or automatically generated using the number of words specified in the
+[SUMMARY_MAX_LENGTH](http://docs.getpelican.com/en/latest/settings.html) setting.
+
+## Usage ##
+To use this plugin, ensure the following are set in your `pelicanconf.py` file:
+
+    PLUGIN_PATH = '/path/to/pelican-plugins'
+    PLUGINS = [
+		'feed_summary',
+		]
+    FEED_USE_SUMMARY = True
+
+The default value of `FEED_USE_SUMMARY` is `False`, so it must be set to `True` to enable the plugin, even if it is loaded.
+
+This plugin is written for pelican 3.3 and later.
+
+
+## Implementation Notes ##
+
+This plugin derives `FeedSummaryWriter` from the `Writer` class, duplicating code of the `Writer._add_item_to_the_feed` method.
+
+When the `initialized` signal is sent, it alternates the `get_writer` method of the `Pelican` object to use `FeedSummaryWriter` instead of `Writer`.
+
+A little hackish, but currently this can't be done otherwise via the regular plugin methods.
+
+ * *Initial Code (PR #36): Michelle L. Gill <michelle.lynn.gill@gmail.com>*
+ * *Resumption of PR and Maintainer: Florian Jacob ( projects[PLUS]pelican[ÄT]florianjacob.de )*
diff --git a/pelican-plugins/feed_summary/__init__.py b/pelican-plugins/feed_summary/__init__.py
new file mode 100644
index 0000000..93db3be
--- /dev/null
+++ b/pelican-plugins/feed_summary/__init__.py
@@ -0,0 +1 @@
+from .feed_summary import *
diff --git a/pelican-plugins/feed_summary/feed_summary.py b/pelican-plugins/feed_summary/feed_summary.py
new file mode 100644
index 0000000..0710669
--- /dev/null
+++ b/pelican-plugins/feed_summary/feed_summary.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+"""
+Feed Summary
+============
+
+This plugin allows summaries to be used in feeds instead of the full length article.
+"""
+
+from __future__ import unicode_literals
+
+from jinja2 import Markup
+
+import six
+if not six.PY3:
+    from urlparse import urlparse
+else:
+    from urllib.parse import urlparse
+
+from pelican import signals
+from pelican.writers import Writer
+from pelican.utils import set_date_tzinfo
+
+from .magic_set import magic_set
+
+class FeedSummaryWriter(Writer):
+    def _add_item_to_the_feed(self, feed, item):
+        if self.settings['FEED_USE_SUMMARY']:
+            title = Markup(item.title).striptags()
+            link = '%s/%s' % (self.site_url, item.url)
+            feed.add_item(
+                title=title,
+                link=link,
+                unique_id='tag:%s,%s:%s' % (urlparse(link).netloc,
+                                            item.date.date(),
+                                            urlparse(link).path.lstrip('/')),
+                description=item.summary if hasattr(item, 'summary') else item.get_content(self.site_url),
+                categories=item.tags if hasattr(item, 'tags') else None,
+                author_name=getattr(item, 'author', ''),
+                pubdate=set_date_tzinfo(item.modified if hasattr(item, 'modified') else item.date,
+                    self.settings.get('TIMEZONE', None)))
+        else:
+            super(FeedSummaryWriter, self)._add_item_to_the_feed(feed, item)
+
+def set_feed_use_summary_default(pelican_object):
+    # modifying DEFAULT_CONFIG doesn't have any effect at this point in pelican setup
+    # everybody who uses DEFAULT_CONFIG is already used/copied it or uses the pelican_object.settings copy.
+
+    pelican_object.settings.setdefault('FEED_USE_SUMMARY', False)
+
+def patch_pelican_writer(pelican_object):
+    @magic_set(pelican_object)
+    def get_writer(self):
+        return FeedSummaryWriter(self.output_path,settings=self.settings)
+
+def register():
+    signals.initialized.connect(set_feed_use_summary_default)
+    signals.initialized.connect(patch_pelican_writer)
diff --git a/pelican-plugins/feed_summary/magic_set.py b/pelican-plugins/feed_summary/magic_set.py
new file mode 100644
index 0000000..ee3d6f0
--- /dev/null
+++ b/pelican-plugins/feed_summary/magic_set.py
@@ -0,0 +1,92 @@
+import inspect
+import six
+
+# Modifies class methods (or instances of them) on the fly
+# http://blog.ianbicking.org/2007/08/08/opening-python-classes/
+# http://svn.colorstudy.com/home/ianb/recipes/magicset.py
+# including python 3 fixes for func_name => __name__ and types.ClassType => type
+
+def magic_set(obj):
+    """
+Adds a function/method to an object. Uses the name of the first
+argument as a hint about whether it is a method (``self``), class
+method (``cls`` or ``klass``), or static method (anything else).
+Works on both instances and classes.
+
+>>> class color:
+... def __init__(self, r, g, b):
+... self.r, self.g, self.b = r, g, b
+>>> c = color(0, 1, 0)
+>>> c # doctest: +ELLIPSIS
+<__main__.color instance at ...>
+>>> @magic_set(color)
+... def __repr__(self):
+... return '<color %s %s %s>' % (self.r, self.g, self.b)
+>>> c
+<color 0 1 0>
+>>> @magic_set(color)
+... def red(cls):
+... return cls(1, 0, 0)
+>>> color.red()
+<color 1 0 0>
+>>> c.red()
+<color 1 0 0>
+>>> @magic_set(color)
+... def name():
+... return 'color'
+>>> color.name()
+'color'
+>>> @magic_set(c)
+... def name(self):
+... return 'red'
+>>> c.name()
+'red'
+>>> @magic_set(c)
+... def name(cls):
+... return cls.__name__
+>>> c.name()
+'color'
+>>> @magic_set(c)
+... def pr(obj):
+... print obj
+>>> c.pr(1)
+1
+"""
+    def decorator(func):
+        is_class = isinstance(obj, six.class_types)
+        args, varargs, varkw, defaults = inspect.getargspec(func)
+        if not args or args[0] not in ('self', 'cls', 'klass'):
+            # Static function/method
+            if is_class:
+                replacement = staticmethod(func)
+            else:
+                replacement = func
+        elif args[0] == 'self':
+            if is_class:
+                replacement = func
+            else:
+                def replacement(*args, **kw):
+                    return func(obj, *args, **kw)
+                try:
+                    replacement.__name__ = func.__name__
+                except:
+                    pass
+        else:
+            if is_class:
+                replacement = classmethod(func)
+            else:
+                def replacement(*args, **kw):
+                    return func(obj.__class__, *args, **kw)
+                try:
+                    replacement.__name__ = func.__name__
+                except:
+                    pass
+        setattr(obj, func.__name__, replacement)
+        return replacement
+    return decorator
+
+if __name__ == '__main__':
+    import doctest
+    doctest.testmod()
+
+
diff --git a/pelican-plugins/figure-ref/LICENSE b/pelican-plugins/figure-ref/LICENSE
new file mode 100644
index 0000000..733c072
--- /dev/null
+++ b/pelican-plugins/figure-ref/LICENSE
@@ -0,0 +1,675 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    {one line to give the program's name and a brief idea of what it does.}
+    Copyright (C) {year}  {name of author}
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    {project}  Copyright (C) {year}  {fullname}
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/pelican-plugins/figure-ref/README.md b/pelican-plugins/figure-ref/README.md
new file mode 100644
index 0000000..3e21f0c
--- /dev/null
+++ b/pelican-plugins/figure-ref/README.md
@@ -0,0 +1,45 @@
+figure-ref
+==========
+
+Provides a system to reference figures using labels, as happens in LaTeX.
+
+Requirements
+============
+
+`figure-ref` requires `BeautifulSoup4`.
+
+```bash
+pip install BeautifulSoup4
+```
+
+How to Use
+==========
+
+This plugin will search for labels within `<figcaption>` tags. Figures and
+figcaptions can be inserted via Restructured Text or using the
+[figureAltCaption](https://github.com/jdittrich/figureAltCaption) plugin with
+Markdown. Labelled figures take the form:
+```html
+<figure>
+  <img src="path/to/image.png">
+  <figcaption>
+  labelname :: This is the label text.
+  </figcaption>
+</figure>
+```
+In Markdown, using the aforementioned plugin, you can create such a figure
+with the syntax `![labelname :: This is the label text.](path/to/image.png)`.
+
+This would be traslated to
+```html
+<figure id="figref-labelname">
+  <img src="path/to/image.png">
+  <figcaption>
+  <strong>Figure 1:</strong> This is the label text.
+  </figcaption>
+</figure>
+```
+
+This figure can be referenced in a paragraph using the syntax `{#labelname}`.
+This will then be replaced by the figure number, which will act as a link
+to the figure.
diff --git a/pelican-plugins/figure-ref/__init__.py b/pelican-plugins/figure-ref/__init__.py
new file mode 100644
index 0000000..7029bec
--- /dev/null
+++ b/pelican-plugins/figure-ref/__init__.py
@@ -0,0 +1 @@
+from .figure_ref import *
diff --git a/pelican-plugins/figure-ref/figure-ref-40e04d32bff468a6b3e63c373c5d95fca39783fe.zip b/pelican-plugins/figure-ref/figure-ref-40e04d32bff468a6b3e63c373c5d95fca39783fe.zip
new file mode 100644
index 0000000000000000000000000000000000000000..6f3faa8a5dc00f56153735ff0ee7c64f44aae3ca
GIT binary patch
literal 15169
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
O0R%(=^#4`w`hNgay^o;)

literal 0
HcmV?d00001

diff --git a/pelican-plugins/figure-ref/figure-ref-40e04d32bff468a6b3e63c373c5d95fca39783fe/.gitignore b/pelican-plugins/figure-ref/figure-ref-40e04d32bff468a6b3e63c373c5d95fca39783fe/.gitignore
new file mode 100644
index 0000000..f7bc639
--- /dev/null
+++ b/pelican-plugins/figure-ref/figure-ref-40e04d32bff468a6b3e63c373c5d95fca39783fe/.gitignore
@@ -0,0 +1,5 @@
+*.pyc
+*.swp
+*~
+papers.bib
+test-blog
\ No newline at end of file
diff --git a/pelican-plugins/figure-ref/figure_ref.py b/pelican-plugins/figure-ref/figure_ref.py
new file mode 100644
index 0000000..66d8713
--- /dev/null
+++ b/pelican-plugins/figure-ref/figure_ref.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+"""
+figure_ref
+==============
+
+A Pelican plugin that provices a LaTeX-like system for referencing figure
+elements within an article or page. Figures whose figcaption elements begin
+with the format
+
+    labelname :: caption text
+
+will have `labelname ::` replaced by figure numbering. This figure can
+be referenced with the syntax {#labelname}, which will be replaced by
+the figure number. The figure number will provide a link to the figure.
+"""
+
+import logging
+import re
+
+from bs4 import BeautifulSoup, FeatureNotFound
+
+from pelican import signals
+from pelican.generators import ArticlesGenerator, PagesGenerator
+
+import sys
+if (sys.version_info[0]>2):
+    unicode = str
+
+__version__ = '0.0.1'
+
+REF_RE = re.compile("\{#\s*(\w+)\s*\}")
+LABEL_RE = re.compile("^\s*(\w+)\s*::")
+REF = "<a href='#figref-{}'>{}</a>"
+LABEL = "<strong>Figure {}:</strong> "
+
+logger = logging.getLogger(__name__)
+
+def process_content(article):
+    """
+    Substitute reference links for an individual article or page.
+    """
+    try:
+        soup = BeautifulSoup(article._content,'lxml')
+    except FeatureNotFound:
+        soup = BeautifulSoup(article._content,'html.parser')
+    
+    # Get figures and number them
+    figlist = []
+    for fig in soup.find_all('figcaption'):
+        caption = unicode(fig.string)
+        m = LABEL_RE.search(caption)
+        if m:
+            figlist.append(m.group(1))
+            fig.parent['id'] = 'figref-' + m.group(1)
+            new_tag = soup.new_tag("strong")
+            fig.string.replace_with(' ' + caption[m.end():])
+            new_tag.string = "Figure {}:".format(len(figlist))
+            fig.insert(0,new_tag)
+    
+    # Replace references to figures with links
+    def substitute(match):
+        try:
+            num = figlist.index(match.group(1)) + 1
+        except ValueError:
+            logger.warn('`figure_ref` unable to find figure with label "{}" in file {}'.format(match.group(1), article.source_path))
+            return match.string
+        return REF.format(match.group(1),num)
+        
+    article._content = REF_RE.sub(substitute, unicode(soup))
+
+
+
+def add_figure_refs(generators):
+    # Process the articles and pages
+    for generator in generators:
+        if isinstance(generator, ArticlesGenerator):
+            for article in generator.articles:
+                process_content(article)
+        elif isinstance(generator, PagesGenerator):
+            for page in generator.pages:
+                process_content(page)
+
+
+
+def register():
+    signals.all_generators_finalized.connect(add_figure_refs)
diff --git a/pelican-plugins/filetime_from_git/README.rst b/pelican-plugins/filetime_from_git/README.rst
new file mode 100644
index 0000000..9290cb2
--- /dev/null
+++ b/pelican-plugins/filetime_from_git/README.rst
@@ -0,0 +1,60 @@
+Use Git commit to determine page date
+======================================
+If the blog content is managed by git repo, this plugin will set articles'
+and pages' ``metadata['date']`` according to git commit. This plugin depends
+on python package ``gitpython``, install::
+
+    pip install gitpython
+
+The date is determined via the following logic:
+
+* if a file is not tracked by Git, or a file is staged but never committed
+    - metadata['date'] = filesystem time
+    - metadata['modified'] = filesystem time
+* if a file is tracked, but no changes in staging area or working directory
+    - metadata['date'] = first commit time
+    - metadata['modified'] = last commit time
+* if a file is tracked, and has changes in stage area or working directory
+    - metadata['date'] = first commit time
+    - metadata['modified'] = filesystem time
+
+When this module is enabled, ``date`` and ``modified`` will be determined
+by Git status; no need to manually set in article/page metadata. And
+operations like copy and move will not affect the generated results.
+
+If you don't want a given article or page to use the Git time, set the
+metadata to ``gittime: off`` to disable it.
+
+Other options
+-------------
+
+### GIT_HISTORY_FOLLOWS_RENAME (default True)
+You can also set GIT_HISTORY_FOLLOWS_RENAME to True in your pelican config to 
+make the plugin follow file renames i.e. ensure the creation date matches
+the original file creation date, not the date is was renamed.
+
+### GIT_GENERATE_PERMALINK (default False)
+Use in combination with permalink plugin to generate permalinks using the original
+commit sha 
+
+### GIT_SHA_METADATA (default True)
+Adds sha of current and oldest commit to metadata
+
+### GIT_FILETIME_FROM_GIT (default True)
+Enable filetime from git behaviour
+
+Content specific options
+------------------------
+Adding metadata `gittime` = False will prevent the plugin trying to setting filetime for this
+content.
+
+Adding metadata `git_permalink` = False will prevent the plugin from adding permalink for this
+content.
+
+FAQ
+---
+
+### Q. I get a GitCommandError: 'git rev-list ...' when I run the plugin. What's up?
+Be sure to use the correct gitpython module for your distros git binary.
+Using the GIT_HISTORY_FOLLOWS_RENAME option to True may also make your problem go away as it uses
+a different method to find commits.
diff --git a/pelican-plugins/filetime_from_git/__init__.py b/pelican-plugins/filetime_from_git/__init__.py
new file mode 100644
index 0000000..b7281c8
--- /dev/null
+++ b/pelican-plugins/filetime_from_git/__init__.py
@@ -0,0 +1 @@
+from .registration import *
diff --git a/pelican-plugins/filetime_from_git/actions.py b/pelican-plugins/filetime_from_git/actions.py
new file mode 100755
index 0000000..3fed176
--- /dev/null
+++ b/pelican-plugins/filetime_from_git/actions.py
@@ -0,0 +1,120 @@
+# -*- coding: utf-8 -*-
+import base64
+import hashlib
+import logging
+import os
+
+from pelican.utils import strftime
+
+from .registration import content_git_object_init
+from .utils import datetime_from_timestamp
+from .utils import string_to_bool
+
+
+logger = logging.getLogger(__name__)
+
+
+@content_git_object_init.connect
+def filetime_from_git(content, git_content):
+    '''
+    Update modification and creation times from git
+    '''
+    if not content.settings['GIT_FILETIME_FROM_GIT']:
+        # Disabled for everything
+        return
+
+    if not string_to_bool(content.metadata.get('gittime', 'yes')):
+        # Disable for this content
+        return
+
+    path = content.source_path
+    fs_creation_time = datetime_from_timestamp(os.stat(path).st_ctime, content)
+    fs_modified_time = datetime_from_timestamp(os.stat(path).st_mtime, content)
+
+    # 1. file is not managed by git
+    #    date: fs time
+    # 2. file is staged, but has no commits
+    #    date: fs time
+    # 3. file is managed, and clean
+    #    date: first commit time, update: last commit time or None
+    # 4. file is managed, but dirty
+    #    date: first commit time, update: fs time
+    if git_content.is_managed_by_git():
+        if git_content.is_committed():
+            content.date = git_content.get_oldest_commit_date()
+
+            if git_content.is_modified():
+                content.modified = fs_modified_time
+            else:
+                content.modified = git_content.get_newest_commit_date()
+        else:
+            # File isn't committed
+            content.date = fs_creation_time
+    else:
+        # file is not managed by git
+        content.date = fs_creation_time
+
+    # Clean up content attributes
+    if not hasattr(content, 'modified'):
+        content.modified = content.date
+
+    if hasattr(content, 'date'):
+        content.locale_date = strftime(content.date, content.date_format)
+
+    if hasattr(content, 'modified'):
+        content.locale_modified = strftime(
+            content.modified, content.date_format)
+
+
+@content_git_object_init.connect
+def git_sha_metadata(content, git_content):
+    '''
+    Add sha metadata to content
+    '''
+    if not content.settings['GIT_SHA_METADATA']:
+        return
+
+    if not git_content.is_committed():
+        return
+
+    content.metadata['gitsha_newest'] = str(git_content.get_newest_commit())
+    content.metadata['gitsha_oldest'] = str(git_content.get_oldest_commit())
+
+
+def update_hash_from_str(hsh, str_input):
+    """
+    Convert a str to object supporting buffer API and update a hash with it.
+    """
+    byte_input = str(str_input).encode("UTF-8")
+    hsh.update(byte_input)
+
+
+@content_git_object_init.connect
+def git_permalink(content, git_content):
+    '''
+    Add git based permalink id to content metadata
+    '''
+    if not content.settings['GIT_GENERATE_PERMALINK']:
+        return
+
+    if not string_to_bool(content.metadata.get('git_permalink', 'yes')):
+        # Disable for this content
+        return
+
+    if not git_content.is_committed():
+        return
+
+    permalink_hash = hashlib.sha1()
+    update_hash_from_str(permalink_hash, git_content.get_oldest_commit())
+    update_hash_from_str(permalink_hash, git_content.get_oldest_filename())
+    git_permalink_id_raw = base64.urlsafe_b64encode(permalink_hash.digest())
+    git_permalink_id = git_permalink_id_raw.decode("UTF-8")
+    permalink_id_metadata_key = content.settings['PERMALINK_ID_METADATA_KEY']
+
+    if permalink_id_metadata_key in content.metadata:
+        content.metadata[permalink_id_metadata_key] = (
+            ','.join((
+                content.metadata[permalink_id_metadata_key], git_permalink_id))
+        )
+    else:
+        content.metadata[permalink_id_metadata_key] = git_permalink_id
diff --git a/pelican-plugins/filetime_from_git/content_adapter.py b/pelican-plugins/filetime_from_git/content_adapter.py
new file mode 100644
index 0000000..3be6b7b
--- /dev/null
+++ b/pelican-plugins/filetime_from_git/content_adapter.py
@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+"""
+Wraps a content object to provide some git information
+"""
+import logging
+from pelican.utils import memoized
+from .git_wrapper import git_wrapper
+
+DEV_LOGGER = logging.getLogger(__name__)
+
+
+class GitContentAdapter(object):
+    """
+    Wraps a content object to provide some git information
+    """
+    def __init__(self, content):
+        self.content = content
+        self.git = git_wrapper('.')
+        self.tz_name = content.settings.get('TIMEZONE', None)
+        self.follow = content.settings['GIT_HISTORY_FOLLOWS_RENAME']
+
+    @memoized
+    def is_committed(self):
+        '''
+        Is committed
+        '''
+        return len(self.get_commits()) > 0
+
+    @memoized
+    def is_modified(self):
+        '''
+        Has content been modified since last commit
+        '''
+        return self.git.is_file_modified(self.content.source_path)
+
+    @memoized
+    def is_managed_by_git(self):
+        '''
+        Is content stored in a file managed by git
+        '''
+        return self.git.is_file_managed_by_git(self.content.source_path)
+
+    @memoized
+    def get_commits(self):
+        '''
+        Get all commits involving this filename
+        :returns: List of commits newest to oldest
+        '''
+        if not self.is_managed_by_git():
+            return []
+        return self.git.get_commits(self.content.source_path, self.follow)
+
+    @memoized
+    def get_oldest_commit(self):
+        '''
+        Get oldest commit involving this file
+
+        :returns: Oldest commit
+        '''
+        return self.git.get_commits(self.content.source_path, self.follow)[-1]
+
+    @memoized
+    def get_newest_commit(self):
+        '''
+        Get oldest commit involving this file
+
+        :returns: Newest commit
+        '''
+        return self.git.get_commits(self.content.source_path, follow=False)[0]
+
+    @memoized
+    def get_oldest_filename(self):
+        '''
+        Get the original filename of this content. Implies follow
+        '''
+        commit_and_name_iter = self.git.get_commits_and_names_iter(
+            self.content.source_path)
+        _commit, name = next(commit_and_name_iter)
+        return name
+
+    @memoized
+    def get_oldest_commit_date(self):
+        '''
+        Get datetime of oldest commit involving this file
+
+        :returns: Datetime of oldest commit
+        '''
+        oldest_commit = self.get_oldest_commit()
+        return self.git.get_commit_date(oldest_commit, self.tz_name)
+
+    @memoized
+    def get_newest_commit_date(self):
+        '''
+        Get datetime of newest commit involving this file
+
+        :returns: Datetime of newest commit
+        '''
+        newest_commit = self.get_newest_commit()
+        return self.git.get_commit_date(newest_commit, self.tz_name)
diff --git a/pelican-plugins/filetime_from_git/git_wrapper.py b/pelican-plugins/filetime_from_git/git_wrapper.py
new file mode 100644
index 0000000..4c31070
--- /dev/null
+++ b/pelican-plugins/filetime_from_git/git_wrapper.py
@@ -0,0 +1,169 @@
+# -*- coding: utf-8 -*-
+"""
+Wrap python git interface for compatibility with older/newer version
+"""
+try:
+    from itertools import zip_longest
+except ImportError:
+    from six.moves import zip_longest
+import logging
+import os
+from time import mktime
+from datetime import datetime
+from pelican.utils import set_date_tzinfo
+from git import Git, Repo
+
+DEV_LOGGER = logging.getLogger(__name__)
+
+
+def grouper(iterable, n, fillvalue=None):
+    '''
+    Collect data into fixed-length chunks or blocks
+    '''
+    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
+    args = [iter(iterable)] * n
+    return zip_longest(fillvalue=fillvalue, *args)
+
+
+class _GitWrapperCommon(object):
+    '''
+    Wrap git module to provide a more stable interface across versions
+    '''
+    def __init__(self, repo_path):
+        self.git = Git()
+        self.git.update_environment(
+            GIT_CONFIG_NOSYSTEM='true',
+            HOME=os.getcwd(),
+            XDG_CONFIG_HOME=os.getcwd()
+        )
+        self.repo = Repo(os.path.abspath("."), search_parent_directories=True)
+
+    def is_file_managed_by_git(self, path):
+        '''
+        :param path: Path to check
+        :returns: True if path is managed by git
+        '''
+        status, _stdout, _stderr = self.git.execute(
+            ['git', 'ls-files', path, '--error-unmatch'],
+            with_extended_output=True,
+            with_exceptions=False)
+        return status == 0
+
+    def is_file_modified(self, path):
+        '''
+        Does a file have local changes not yet committed
+
+        :returns: True if file has local changes
+        '''
+        status, _stdout, _stderr = self.git.execute(
+            ['git', 'diff', '--quiet', 'HEAD', path],
+            with_extended_output=True,
+            with_exceptions=False)
+        return status != 0
+
+    def get_commits_following(self, path):
+        '''
+        Get all commits including path following the file through
+        renames
+
+        :param path: Path which we will find commits for
+        :returns: Sequence of commit objects. Newest to oldest
+        '''
+        return [
+            commit for commit, _ in self.get_commits_and_names_iter(
+                path)]
+
+    def get_commits_and_names_iter(self, path):
+        '''
+        Get all commits including a given path following renames
+        '''
+        log_result = self.git.log(
+            '--pretty=%H',
+            '--follow',
+            '--name-only',
+            '--',
+            path).splitlines()
+
+        for commit_sha, _, filename in grouper(log_result, 3):
+            yield self.repo.commit(commit_sha), filename
+
+    def get_commits(self, path, follow=False):
+        '''
+        Get all commits including path
+
+        :param path: Path which we will find commits for
+        :param bool follow: If True we will follow path through renames
+
+        :returns: Sequence of commit objects. Newest to oldest
+        '''
+        if follow:
+            return self.get_commits_following(path)
+        else:
+            return self._get_commits(path)
+
+
+class _GitWrapperLegacy(_GitWrapperCommon):
+    def _get_commits(self, path):
+        '''
+        Get all commits including path without following renames
+
+        :param path: Path which we will find commits for
+
+        :returns: Sequence of commit objects. Newest to oldest
+        '''
+        return self.repo.commits(path=path)
+
+    @staticmethod
+    def get_commit_date(commit, tz_name):
+        '''
+        Get datetime of commit comitted_date
+        '''
+        return set_date_tzinfo(
+            datetime.fromtimestamp(mktime(commit.committed_date)),
+            tz_name=tz_name)
+
+
+class _GitWrapper(_GitWrapperCommon):
+    def _get_commits(self, path):
+        '''
+        Get all commits including path without following renames
+
+        :param path: Path which we will find commits for
+
+        :returns: Sequence of commit objects. Newest to oldest
+
+        .. NOTE ::
+            If this fails it could be that your gitpython version is out of
+            sync with the git binary on your distro.
+            Make sure you use the correct gitpython version.
+
+            Alternatively enabling GIT_FILETIME_FOLLOW may also make your
+            problem go away.
+        '''
+        return list(self.repo.iter_commits(paths=path))
+
+    @staticmethod
+    def get_commit_date(commit, tz_name):
+        '''
+        Get datetime of commit comitted_date
+        '''
+        return set_date_tzinfo(
+            datetime.fromtimestamp(commit.committed_date),
+            tz_name=tz_name)
+
+
+_wrapper_cache = {}
+
+
+def git_wrapper(path):
+    '''
+    Get appropriate wrapper factory and cache instance for path
+    '''
+    path = os.path.abspath(path)
+    if path not in _wrapper_cache:
+        if hasattr(Repo, 'commits'):
+            _wrapper_cache[path] = _GitWrapperLegacy(path)
+        else:
+            _wrapper_cache[path] = _GitWrapper(path)
+
+    return _wrapper_cache[path]
diff --git a/pelican-plugins/filetime_from_git/registration.py b/pelican-plugins/filetime_from_git/registration.py
new file mode 100644
index 0000000..e91d254
--- /dev/null
+++ b/pelican-plugins/filetime_from_git/registration.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+"""
+Handle registration and setup for plugin
+"""
+import logging
+from blinker import signal
+from .content_adapter import GitContentAdapter
+from pelican import signals
+
+DEV_LOGGER = logging.getLogger(__name__)
+
+content_git_object_init = signal('content_git_object_init')
+
+def send_content_git_object_init(content):
+    content_git_object_init.send(content, git_content=GitContentAdapter(content))
+
+
+def setup_option_defaults(pelican_inst):
+    pelican_inst.settings.setdefault('GIT_FILETIME_FROM_GIT', True)
+    pelican_inst.settings.setdefault('GIT_HISTORY_FOLLOWS_RENAME', True)
+    pelican_inst.settings.setdefault('GIT_SHA_METADATA', True)
+    pelican_inst.settings.setdefault('GIT_GENERATE_PERMALINK', False)
+
+
+def register():
+    signals.content_object_init.connect(send_content_git_object_init)
+    signals.initialized.connect(setup_option_defaults)
+
+    # Import actions
+    from . import actions
diff --git a/pelican-plugins/filetime_from_git/requirements.txt b/pelican-plugins/filetime_from_git/requirements.txt
new file mode 100755
index 0000000..59348f9
--- /dev/null
+++ b/pelican-plugins/filetime_from_git/requirements.txt
@@ -0,0 +1 @@
+gitpython
diff --git a/pelican-plugins/filetime_from_git/utils.py b/pelican-plugins/filetime_from_git/utils.py
new file mode 100644
index 0000000..d5bd52f
--- /dev/null
+++ b/pelican-plugins/filetime_from_git/utils.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+"""
+Utility functions
+"""
+from datetime import datetime
+import logging
+from pelican.utils import set_date_tzinfo
+
+DEV_LOGGER = logging.getLogger(__name__)
+
+
+STRING_BOOLS = {
+    'yes': True,
+    'no': False,
+    'true': True,
+    'false': False,
+    '0': False,
+    '1': True,
+    'on': True,
+    'off': False,
+}
+
+
+def string_to_bool(string):
+    '''
+    Convert a string to a bool based
+    '''
+    return STRING_BOOLS[string.strip().lower()]
+
+
+def datetime_from_timestamp(timestamp, content):
+    """
+    Helper function to add timezone information to datetime,
+    so that datetime is comparable to other datetime objects in recent versions
+    that now also have timezone information.
+    """
+    return set_date_tzinfo(
+        datetime.fromtimestamp(timestamp),
+        tz_name=content.settings.get('TIMEZONE', None))
diff --git a/pelican-plugins/filetime_from_hg/README.rst b/pelican-plugins/filetime_from_hg/README.rst
new file mode 100644
index 0000000..cd20007
--- /dev/null
+++ b/pelican-plugins/filetime_from_hg/README.rst
@@ -0,0 +1,41 @@
+Use Mercurial commit to determine page date
+===========================================
+
+If your blog content is versioned via Mercurial, this plugin will set
+articles' and pages' ``metadata['date']`` to correspond to that of the
+hg commit.  This plugin depends on the ``hglib`` python package,
+which can be installed via::
+
+    sudo apt-get install python-hglib
+
+or::
+
+    pip install hglib
+
+The date is determined via the following logic:
+
+* if a file is not tracked by hg, or a file is added but never committed
+    - metadata['date'] = filesystem time
+    - metadata['modified'] = filesystem time
+* if a file is tracked, but no changes in working directory
+    - metadata['date'] = first commit time
+    - metadata['modified'] = last commit time
+* if a file is tracked, and has changes in working directory
+    - metadata['date'] = first commit time
+    - metadata['modified'] = filesystem time
+
+When this module is enabled, ``date`` and ``modified`` will be determined
+by hg status; no need to manually set in article/page metadata. And
+operations like copy and move will not affect the generated results.
+
+If you don't want a given article or page to use the hg time, set the
+metadata to ``hgtime: off`` to disable it.
+
+You can also set ``HG_FILETIME_FOLLOW`` to ``True`` in your settings to
+make the plugin follow file renames — i.e., ensure the creation date matches
+the original file creation date, not the date it was renamed.
+
+Credits
+=======
+
+This plugin is based on filetime_from_git.
diff --git a/pelican-plugins/filetime_from_hg/__init__.py b/pelican-plugins/filetime_from_hg/__init__.py
new file mode 100644
index 0000000..3ae2de7
--- /dev/null
+++ b/pelican-plugins/filetime_from_hg/__init__.py
@@ -0,0 +1 @@
+from .filetime_from_hg import *
diff --git a/pelican-plugins/filetime_from_hg/filetime_from_hg.py b/pelican-plugins/filetime_from_hg/filetime_from_hg.py
new file mode 100755
index 0000000..77e0ae5
--- /dev/null
+++ b/pelican-plugins/filetime_from_hg/filetime_from_hg.py
@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+"""
+This plugin is mostly a copy of the filetime_from_git plugin
+by Zhang Cheng <StephenPCG@gmail.com> and others.
+
+Copyright (c) David Douard <david.douard@sdfa3.org>
+
+Compute Date and Modified metadata from Mercurial revisions.
+"""
+
+import os
+from pelican import signals, contents
+from pelican.utils import strftime, set_date_tzinfo
+from datetime import datetime
+
+import hglib
+
+def datetime_from_timestamp(timestamp, content):
+    """
+    Helper function to add timezone information to datetime,
+    so that datetime is comparable to other datetime objects in recent versions
+    that now also have timezone information.
+    """
+    return set_date_tzinfo(
+        datetime.fromtimestamp(timestamp),
+        tz_name=content.settings.get('TIMEZONE', None))
+
+
+def filetime_from_hg(content):
+    if isinstance(content, contents.Static):
+        return
+    if 'date' in content.metadata:
+        # if user did explicitely set a date, do not overwrite it
+        return
+    repo = hglib.open('.')
+    tz_name = content.settings.get('TIMEZONE', None)
+
+    hgtime = content.metadata.get('hgtime', 'yes').lower()
+    if hgtime in ('no', 'off', 'false', '0'):
+        return
+
+    # 1. file is not managed by hg
+    #    date: fs time
+    # 2. file is staged, but has no commits
+    #    date: fs time
+    # 3. file is managed, and clean
+    #    date: first commit time, update: last commit time or None
+    # 4. file is managed, but dirty
+    #    date: first commit time, update: fs time
+    path = content.source_path
+    root = repo.root()
+    filelog = repo.log(revrange='.:0', files=[path,],
+                       follow=content.settings.get('HG_FILETIME_FOLLOW', False))
+    if filelog:
+        # has commited
+        content.date = set_date_tzinfo(filelog[-1][6], tz_name)
+        if path in [os.path.join(root, mfile) for flag, mfile in repo.status(modified=True)]:
+            # file is modified in the wd
+            content.modified = datetime_from_timestamp(
+                os.stat(path).st_ctime, content)
+        else:
+            # file is not changed
+            if len(filelog) > 1:
+                content.modified = set_date_tzinfo(filelog[0][6], tz_name)
+    else:
+        # file is not managed by hg
+        content.date = datetime_from_timestamp(os.stat(path).st_ctime, content)
+
+    if not hasattr(content, 'modified'):
+        content.modified = content.date
+
+    content.locale_date = strftime(content.date, content.date_format)
+    content.locale_modified = strftime(content.modified, content.date_format)
+    # ensure the metadata directory is synchronized. Might be used by
+    # some other plugin (eg. series)
+    content.metadata['modified'] = content.modified
+    content.metadata['date'] = content.date
+
+
+def register():
+    signals.content_object_init.connect(filetime_from_hg)
diff --git a/pelican-plugins/filetime_from_hg/requirements.txt b/pelican-plugins/filetime_from_hg/requirements.txt
new file mode 100755
index 0000000..1b4d43b
--- /dev/null
+++ b/pelican-plugins/filetime_from_hg/requirements.txt
@@ -0,0 +1 @@
+python-hglib
\ No newline at end of file
diff --git a/pelican-plugins/footer_insert/README.md b/pelican-plugins/footer_insert/README.md
new file mode 100644
index 0000000..9521060
--- /dev/null
+++ b/pelican-plugins/footer_insert/README.md
@@ -0,0 +1,17 @@
+# Footer Insert
+
+This plugin allows you to insert a `FOOTER_INSERT_HTML` to the end of the blog.
+
+eg.  add authors / blog infomation to every blog.
+
+## Usage
+
+1. Insert `FOOTER_INSERT_HTML` to your `pelicanconf.py`. You can use
+title / url / author / authors / slug / category / summary
+/ date infomation in the config like this: `%(title)s`.
+2. Insert this code to your artical template file, eg. `templates/article.html`:
+```
+{% if article.footer_insert_html %}
+  {{ article.footer_insert_html }}
+{% endif %}
+```
diff --git a/pelican-plugins/footer_insert/__init__.py b/pelican-plugins/footer_insert/__init__.py
new file mode 100644
index 0000000..0b673a7
--- /dev/null
+++ b/pelican-plugins/footer_insert/__init__.py
@@ -0,0 +1 @@
+from .footer_insert import *
diff --git a/pelican-plugins/footer_insert/footer_insert.py b/pelican-plugins/footer_insert/footer_insert.py
new file mode 100644
index 0000000..3647a77
--- /dev/null
+++ b/pelican-plugins/footer_insert/footer_insert.py
@@ -0,0 +1,30 @@
+"""
+Footer Insert
+"""
+
+from pelican import signals
+from pelican.contents import Content, Article
+
+
+def add_footer(content):
+    if not isinstance(content, Article):
+        return
+    
+    if 'FOOTER_INSERT_HTML' not in content.settings:
+        return
+    data_dict = {
+        'title': content.title,
+        'url': content.url,
+        'author': content.author.name,
+        'authors': ','.join([x.name for x in content.authors]),
+        'slug': content.slug,
+        'category': content.category,
+        'summary': content.summary,
+    }
+    if hasattr(content, 'date'):
+        data_dict['date'] = content.date
+    foot_insert_html = content.settings['FOOTER_INSERT_HTML'] % data_dict
+    content.footer_insert_html = foot_insert_html
+
+def register():
+    signals.content_object_init.connect(add_footer)
diff --git a/pelican-plugins/gallery/README.md b/pelican-plugins/gallery/README.md
new file mode 100644
index 0000000..69d66db
--- /dev/null
+++ b/pelican-plugins/gallery/README.md
@@ -0,0 +1,91 @@
+Gallery
+==================
+
+* Allows an article to contain an album of pictures.
+* All albums can also be syndicated into a central gallery page.
+
+## How to Use
+
+1. Group images into folders, with each folder representing an album.
+2. Place all album folders within a folder, which should reside under content.
+3. Insert `GALLERY_PATH` to your `pelicanconf.py` and set a path to that folder. By default it is `images/gallery`.
+
+		./content/images/gallery/{your albums}
+	
+### Articles
+
+Attach an album to an article/post by placing a gallery metadata tag with the name of the album.
+
+	gallery:album_name
+    
+The template has access to the album name.
+
+	article.album
+
+And the filename of images within an album.
+
+	article.albumimages
+
+### Gallery Page
+
+Create a page and a gallery template (named gallery.html). And inform pelican to use the gallery template for the page.
+
+	template:gallery
+    
+The template has access to a dictionary of lists.  
+The dictionary key is the name of the album and the lists contain the filenames.
+
+	page.gallery
+	
+## Examples
+
+### article.html
+
+	<h2><a href="{{ SITEURL }}/pages/gallery.html#{{ article.album }}">{{ article.album }}</a></h2>
+	    <ul>
+		{% for image in article.galleryimages %}
+		<li><a class="{{ article.album }} cboxElement" href="{{ SITEURL }}/static/images/gallery/{{ article.album }}/{{ image }}"><img src="{{ SITEURL }}/static/images/gallery200x200/{{ article.album }}/{{ image }}"></a></li>
+		{% endfor %}
+	    </ul>
+		
+### gallery.html
+
+	{% for album, images in page.gallery.iteritems() %}
+	<h2><a name="{{ album }}">{{ album }}</a></h2>
+	<ul>
+	    {% for image in images %}
+	    <li><a class="{{ album }} cboxElement" href="{{ SITEURL }}/static/images/gallery/{{album}}/{{ image }}" title="{{ image }}"><img src="{{ SITEURL }}/static/images/gallery200x200/{{album}}/{{ image }}"></a></li>
+	    {% endfor %}
+	</ul>
+	{% endfor %}
+
+### posts/foo.md
+
+	title:Foo
+	gallery:albumname
+	
+### pages/gallery.md
+
+	title:All Images
+	template:gallery
+	
+## Reasoning
+
+The album name and filenames are returned as opposed to the direct path to the images,
+to allow flexibility of different thumbnail sizes to be used it different locations of a website.
+
+	href="{{ SITEURL }}/static/images/gallery/{{album}}/{{ image }}"
+	href="{{ SITEURL }}/static/images/gallery200x200/{{album}}/{{ image }}"
+	
+It also allows a thumbnail to link to the full image,
+as well as the filename extension to be stripped and the title of an image to be displayed along side the title of an album.
+
+## Recommendation
+
+It is recommended to use this extension along with the thumbnailer plugin.
+
+	RESIZE = [
+            ('gallery', False, 200,200),
+          ]
+
+You may also wish to use this along with a gallery plugin such as [Colorbox](http://www.jacklmoore.com/colorbox/).
diff --git a/pelican-plugins/gallery/__init__.py b/pelican-plugins/gallery/__init__.py
new file mode 100644
index 0000000..c605999
--- /dev/null
+++ b/pelican-plugins/gallery/__init__.py
@@ -0,0 +1 @@
+from .gallery import *
diff --git a/pelican-plugins/gallery/gallery.py b/pelican-plugins/gallery/gallery.py
new file mode 100644
index 0000000..3c56c81
--- /dev/null
+++ b/pelican-plugins/gallery/gallery.py
@@ -0,0 +1,75 @@
+import os
+from pelican import signals
+
+
+def get_content_path(pelican):
+    return pelican.settings.get('PATH')
+
+
+def get_gallery_path(pelican):
+    gallery_path = pelican.settings.get('GALLERY_PATH', 'images/gallery')
+    content_path = get_content_path(pelican)
+
+    return os.path.join(content_path, gallery_path)
+
+
+def add_gallery_post(generator):
+    gallerycontentpath = get_gallery_path(generator)
+
+    for article in generator.articles:
+        if 'gallery' in article.metadata.keys():
+            album = article.metadata.get('gallery')
+            galleryimages = []
+
+            articlegallerypath=os.path.join(gallerycontentpath, album)
+
+            if(os.path.isdir(articlegallerypath)):
+                for i in os.listdir(articlegallerypath):
+                    if not i.startswith('.') and os.path.isfile(os.path.join(os.path.join(gallerycontentpath, album), i)):
+                        galleryimages.append(i)
+
+            article.album = album
+            article.galleryimages = sorted(galleryimages)
+
+
+def add_gallery_page(generator):
+    gallerycontentpath = get_gallery_path(generator)
+
+    for page in generator.pages:
+        if 'gallery' in page.metadata.keys():
+            album = page.metadata.get('gallery')
+            galleryimages = []
+
+            pagegallerypath=os.path.join(gallerycontentpath, album)
+
+            if(os.path.isdir(pagegallerypath)):
+                for i in os.listdir(pagegallerypath):
+                    if not i.startswith('.') and os.path.isfile(os.path.join(os.path.join(gallerycontentpath, album), i)):
+                        galleryimages.append(i)
+
+            page.album = album
+            page.galleryimages = sorted(galleryimages)
+
+
+def generate_gallery_page(generator):
+    gallerycontentpath = get_gallery_path(generator)
+
+    for page in generator.pages:
+        if page.metadata.get('template') == 'gallery':
+            gallery = dict()
+
+            for a in os.listdir(gallerycontentpath):
+                if not a.startswith('.') and os.path.isdir(os.path.join(gallerycontentpath, a)):
+
+                    for i in os.listdir(os.path.join(gallerycontentpath, a)):
+                        if not a.startswith('.') and os.path.isfile(os.path.join(os.path.join(gallerycontentpath, a), i)):
+                            gallery.setdefault(a, []).append(i)
+                    gallery[a].sort()
+
+            page.gallery=gallery
+
+
+def register():
+    signals.article_generator_finalized.connect(add_gallery_post)
+    signals.page_generator_finalized.connect(generate_gallery_page)
+    signals.page_generator_finalized.connect(add_gallery_page)
diff --git a/pelican-plugins/gist_directive/README.rst b/pelican-plugins/gist_directive/README.rst
new file mode 100644
index 0000000..67aebad
--- /dev/null
+++ b/pelican-plugins/gist_directive/README.rst
@@ -0,0 +1,18 @@
+Pelican ``gist_directive`` plugin
+=================================
+
+This plugin adds a ``gist`` reStructuredText directive. Eg::
+
+   .. gist:: ionelmc/eb11afbcca187bad5273 setup.py python
+   
+It will download (with cache) and include the gist contents in the document.
+
+.. note::
+
+    It also supports embedding content from github directly.
+    
+    Example, to include ``https://raw.githubusercontent.com/ionelmc/cookiecutter-pylibrary/master/%7B%7Bcookiecutter.repo_name%7D%7D/setup.py``::
+    
+        .. github:: ionelmc/cookiecutter-pylibrary master/{{cookiecutter.repo_name}}/setup.py
+    
+    
\ No newline at end of file
diff --git a/pelican-plugins/gist_directive/__init__.py b/pelican-plugins/gist_directive/__init__.py
new file mode 100644
index 0000000..81abad2
--- /dev/null
+++ b/pelican-plugins/gist_directive/__init__.py
@@ -0,0 +1 @@
+from gist_directive import *
diff --git a/pelican-plugins/gist_directive/gist_directive.py b/pelican-plugins/gist_directive/gist_directive.py
new file mode 100644
index 0000000..ea381b9
--- /dev/null
+++ b/pelican-plugins/gist_directive/gist_directive.py
@@ -0,0 +1,73 @@
+try:
+    from urllib.request import urlopen
+except ImportError:
+    from urllib import urlopen
+import os
+import io
+
+from docutils.parsers.rst import directives
+from pelican.rstdirectives import Pygments
+
+
+def fetch(gid, filename, typ):
+    if not os.path.exists('.gists'):
+        os.mkdir('.gists')
+    key = os.path.join('.gists', ("%s/%s/%s" % (typ, gid, filename)).replace('/', ';'))
+    if os.path.isfile(key):
+        print('LOAD-CACHED:', key)
+        return io.open(key, encoding='utf8').read()
+    else:
+        if typ == 'gist':
+            url = 'https://gist.githubusercontent.com/%s/raw/%s' % (gid, filename)
+        elif typ == 'github':
+            url = 'https://raw.githubusercontent.com/%s/%s' % (gid, filename)
+        else:
+            raise RuntimeError(typ)
+        print('FETCHING:', url)
+        fp = urlopen(url)
+        if fp.getcode() != 200:
+            print('FAILED TO FETCH:', url)
+            print('   status code:', fp.getcode())
+            print('   response:')
+            try:
+                print(fp.read())
+            finally:
+                raise SystemExit()
+        data = fp.read()
+        with open(key, 'wb') as fh:
+            fh.write(data)
+        return data.decode('utf8')
+
+
+class Gist(Pygments):
+    """ Embed Github Gist Snippets in rst text
+
+        GIST_ID and FILENAME are required.
+
+        Usage:
+          .. gist:: GIST_ID FILENAME
+
+    """
+
+    required_arguments = 1
+    optional_arguments = 2
+    has_content = False
+    gist_type = 'gist'
+
+    def run(self):
+        gist = self.arguments[0]
+        filename = self.arguments[1] if len(self.arguments) > 1 else ''
+        language = self.arguments[2] if len(self.arguments) > 2 else None
+        self.arguments = [language]
+
+        self.content = fetch(gist, filename, self.gist_type).splitlines()
+        return super(Gist, self).run()
+
+
+class Github(Gist):
+    gist_type = 'github'
+
+
+def register():
+    directives.register_directive('gist', Gist)
+    directives.register_directive('github', Github)
diff --git a/pelican-plugins/github-wiki/ReadMe.md b/pelican-plugins/github-wiki/ReadMe.md
new file mode 100644
index 0000000..bdbee0f
--- /dev/null
+++ b/pelican-plugins/github-wiki/ReadMe.md
@@ -0,0 +1,43 @@
+# GitHub Wiki
+A plugin to convert a flat GitHub wiki into a structured 'read-only' wiki on your pelican site.
+
+## Usage
+
+The plugin looks for a GitHub style wiki (flat collection of md files) at `content\wiki`. You can clone a wiki with:
+
+    git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.wiki.git
+
+And you can also do clever things to set this up as a submodule of your main pelican site repo.
+
+The plugin needs a `wikiarticle.html` template in your theme templates folder. An example template file is provided. 
+
+The resulting wiki will be available at `output\wiki`. 
+
+## Structure
+
+By default the generated wiki will also be flat with no heirarchy to the pages. This plugin allows you to automatically generate a virtual file structure.
+
+In order to provide a structure to the wiki each page can be given the `Path:` metadata.
+
+    Path: foo/bar/baz
+
+This will allow a correctly set up template to generate breadcrumbs and a structured menu where this page will be under the `foo/bar/baz`. Note: The plugin does not actually make this folder structure in the output (this is to make is easier to associate the 
+generated pages with their original wiki pages). 
+
+If a page has the same name and location in the structure as a virtual folder (i.e For the path given above, a file called `bar.md` with the path `Path: foo`) then the breadcrumbs and menu can link to that page as though it were the index of that vritual folder.
+
+## Template
+
+The template is given the following variables.
+
+- `content`: The template has the usual `content` variable available for the converted html of the wiki page. 
+- `breadcrumbs`: A list of tuples describing a 'path' to the current wiki page. The first value is the name of a parent page (in order). The second value is either 'a' or 'p'. 'a' means that the parent page exists and can be linked to, 'p' means the parent page 
+doesn't 
+exist and is just there for descriptibe purposes.
+- `links`: A list of tuples describing a site map of the wiki. The first value is the name of the page, the second value is either 'indexdir' or 'noindexdir' if the page has or does not have subpages respectively, and the third value is the level of the page 
+within the wiki (how many parents it has).
+
+Also provided is a simple javascript file to make the structured menu in the example template openable/closable. 
+
+Though you cannot edit this 'wiki' directly from your site an example of how to emulate wiki editing behaviour is shown in the example template. You can link directly to the github edit page for the wiki page you're on allowing your Github contributers to very 
+easily edit pages. Combined with hooks to redeploy your wiki this can emulate a real wiki quite well.
diff --git a/pelican-plugins/github-wiki/__init__.py b/pelican-plugins/github-wiki/__init__.py
new file mode 100644
index 0000000..9a005dc
--- /dev/null
+++ b/pelican-plugins/github-wiki/__init__.py
@@ -0,0 +1 @@
+from .wiki import *
diff --git a/pelican-plugins/github-wiki/wiki.js b/pelican-plugins/github-wiki/wiki.js
new file mode 100644
index 0000000..74916ac
--- /dev/null
+++ b/pelican-plugins/github-wiki/wiki.js
@@ -0,0 +1,13 @@
+window.addEventListener("load", function() {
+  document.querySelector(".wiki-nav-button").addEventListener('click', function(event) {
+    document.querySelector(".wiki-links").classList.toggle('nodisplay');
+    event.target.text = event.target.text == "Expand Menu" ? "Collapse Menu" : "Expand Menu";
+  }, false);
+  var expanders = document.querySelectorAll(".wiki-dir-expander");
+  for (i = 0; i < expanders.length; ++i) {
+    expanders[i].addEventListener('click', function(event) {
+      event.target.parentElement.nextSibling.nextSibling.classList.toggle("nodisplay");
+      event.target.text = event.target.text == "+" ? "-" : "+";
+    }, false);
+  };
+}, false);
diff --git a/pelican-plugins/github-wiki/wiki.py b/pelican-plugins/github-wiki/wiki.py
new file mode 100644
index 0000000..a6c11c4
--- /dev/null
+++ b/pelican-plugins/github-wiki/wiki.py
@@ -0,0 +1,98 @@
+from pelican import signals, utils
+from collections import namedtuple, OrderedDict
+import os
+import re
+import logging
+
+def add_to_structure(structure, path_list):
+    folders = structure["folders"]
+    articles = structure["articles"]
+    subdir = path_list[0]
+    rest = path_list[1:]
+
+    if len(rest) > 1:
+        if subdir in folders:
+            folders[subdir] = add_to_structure(folders[subdir], rest)
+        else:
+            folders[subdir] = add_to_structure({"folders":{},"articles":[]}, rest)
+    else:
+       if subdir in folders:
+           folders[subdir]["articles"] += rest
+       else:
+           folders[subdir] = { "folders": {}, "articles": rest }
+
+    return { "folders": folders, "articles": articles }
+
+def parse_wiki_pages(generator):
+    settings = generator.settings
+    readers = generator.readers
+    contentpath = settings.get("PATH", "content")
+
+    root = os.path.realpath(
+        os.path.abspath(os.path.join(contentpath, "wiki", "")))
+
+    wikilist = []
+    structure = {"folders":{}, "articles":[]}
+    for (dirname, dirnames, filenames) in os.walk(root):
+        for filename in filenames:
+            if ".git" not in dirname and ".git" not in filename:
+                parsedfile = readers.read_file(dirname, filename)
+                metadata = parsedfile.metadata
+                try:
+                    path = metadata["path"]
+                    org = metadata["path"].split("/")
+                except KeyError:
+                    path = ""
+                    org = []
+                org.append(filename)
+                structure = add_to_structure(structure, org)
+                wikilist.append((path,filename,parsedfile))
+
+    structure = { "articles": structure["folders"]['']["articles"], "folders":structure["folders"] }
+
+    del(structure["folders"][""])
+    wikilist.sort()
+    generator.context['wikilist'] = wikilist
+    generator.context['wiki'] = structure
+
+
+def parse_dict(structure, level, nice_list):
+    folders = OrderedDict(sorted(structure["folders"].items(), key=lambda t: t[0]))
+    articles = sorted(structure["articles"])
+    for key in folders.keys():
+        if key + ".md" in articles:
+            nice_list.append((key, "indexdir", level))
+            articles.remove(key + ".md")
+        else:
+            nice_list.append((key, "noindexdir", level))
+        nice_list = parse_dict(folders[key], level + 1, nice_list)
+    for item in articles:
+        nice_list.append((item, "article", level))
+    return nice_list
+
+def generate_wiki_pages(generator, writer):
+    wiki_list = generator.context['wikilist']
+    structure = generator.context['wiki']
+    template = generator.get_template('wikiarticle')
+    nice_list = parse_dict(structure, 0, [])
+
+    for page in wiki_list:
+        filename = os.path.join('wiki', page[1].replace('.md', '.html'))
+        content = page[2].content
+        metadata = page[2].metadata
+        path = page[0]
+        breadcrumbs = []
+        for name in path.split('/'):
+            name_match = [item[1] for item in nice_list if item[0] == name]
+            if len(name_match) > 0 and name_match[0] == "indexdir":
+                breadcrumbs.append((name, "a"))
+            else:
+                breadcrumbs.append((name, "p"))
+        file = page[1]
+        writer.write_file(filename, template, generator.context,
+                          meta=metadata, content=content, file=file, path=path, links=nice_list, breadcrumbs=breadcrumbs)
+
+
+def register():
+    signals.article_generator_finalized.connect(parse_wiki_pages)
+    signals.article_writer_finalized.connect(generate_wiki_pages)
diff --git a/pelican-plugins/github-wiki/wikiarticle.html b/pelican-plugins/github-wiki/wikiarticle.html
new file mode 100644
index 0000000..46f3119
--- /dev/null
+++ b/pelican-plugins/github-wiki/wikiarticle.html
@@ -0,0 +1,66 @@
+{% extends "base.html" %}
+{% block title %}{{ meta.title }} - {{ SITENAME }}{% endblock %}
+
+{% block head %}<script src="{{ SITEURL }}/theme/js/wiki.js"></script>{% endblock %}
+
+{% block banner %}{{ meta.title }}{% endblock banner %}
+
+{% block content %}
+
+<div class="article-content">
+
+  <h1 class="article-title">{{ meta.title }}</h1>
+
+  <nav><a class="wiki-nav-button">Expand Menu</a> / <a class="wiki-crumbs" href="{{ SITEURL }}/wiki/Home.html">Home</a>
+  {% set total_path = SITEURL + "/wiki" %}
+  {% for page, type in breadcrumbs %}
+    {% set total_path = total_path + "/" + page %}
+    {% if type == "a" %}
+      / <a class="wiki-crumbs" href="{{ total_path }}">{{ page }}</a>
+    {% elif type == "p" %}
+      / <p class="wiki-crumbs">{{ page }}</p>
+    {% endif %}
+  {% endfor %}</nav>
+  <nav class="wiki-nav">
+    <ul class="wiki-links nodisplay">
+    {% set vars = {'level': 0} %}
+    {% for link in links %}
+      {% if link[0] != "_Footer.md" %}
+        {% set linklevel = link[2] %}
+        {% if linklevel > vars.level %}
+          {% if vars.update({'level':linklevel}) %} {% endif %}
+          <ul class="nodisplay">
+        {% elif linklevel < vars.level %}
+          {% for i in range(vars.level - linklevel) %}
+            </ul>
+          {% endfor %}
+          {% if vars.update({'level':linklevel}) %} {% endif %}
+        {% endif %}
+        {% if not loop.last %}
+          {% if links[loop.index][2] > vars.level %}
+            {% if link[1] == "indexdir" %}
+              <li class="wiki-link"><a href="{{ SITEURL }}/wiki/{{ link[0].replace('.md','.html') }}">{{ link[0].replace('.md','') }}</a> <a class="wiki-dir-expander">+</a></li>
+            {% else %}
+              <li class="wiki-link">{{ link[0].replace('.md','') }} <a class="wiki-dir-expander">+</a></li>
+            {% endif %}
+          {% else %}
+            <li class="wiki-link"><a href="{{ SITEURL }}/wiki/{{ link[0].replace('.md','.html') }}">{{ link[0].replace('.md','') }}</a></li>
+          {% endif %}
+        {% else %}
+          <li class="wiki-link"><a href="{{ SITEURL }}/wiki/{{ link[0].replace('.md','.html') }}">{{ link[0].replace('.md','') }}</a></li>
+        {% endif %}
+      {% endif %}
+    {% endfor %}
+    </ul>
+  </nav>
+
+  {{ content }}
+  
+  <p>
+    <a href="https://github.com/YOUR_USER/YOUR_REPO/wiki/{{ file.replace(".md","") }}/_edit">Edit page.</a><br>
+    <a href="https://github.com/YOUR_USER/YOUR_REPO/wiki/_new">Add new page.</a>
+  </p>
+  
+</div>
+
+{% endblock %}
diff --git a/pelican-plugins/github_activity/Readme.rst b/pelican-plugins/github_activity/Readme.rst
new file mode 100644
index 0000000..5e17eb0
--- /dev/null
+++ b/pelican-plugins/github_activity/Readme.rst
@@ -0,0 +1,35 @@
+GitHub activity
+---------------
+
+This plugin makes use of the `feedparser`_ library that you'll need to
+install.
+
+Set the ``GITHUB_ACTIVITY_FEED`` parameter to your GitHub activity feed.
+For example, to track Pelican project activity, the setting would be::
+
+     GITHUB_ACTIVITY_FEED = 'https://github.com/getpelican.atom'
+
+If you want to limit the amount of entries to a certain maximum set the
+``GITHUB_ACTIVITY_MAX_ENTRIES`` parameter.
+
+     GITHUB_ACTIVITY_MAX_ENTRIES = 10
+
+On the template side, you just have to iterate over the ``github_activity``
+variable, as in this example::
+
+     {% if GITHUB_ACTIVITY_FEED %}
+        <div class="social">
+                <h2>Github Activity</h2>
+                <ul>
+
+                {% for entry in github_activity %}
+                    <li><b>{{ entry[0] }}</b><br /> {{ entry[1] }}</li>
+                {% endfor %}
+                </ul>
+        </div><!-- /.github_activity -->
+     {% endif %}
+
+``github_activity`` is a list of lists. The first element is the title,
+and the second element is the raw HTML from GitHub.
+
+.. _feedparser: https://crate.io/packages/feedparser/
diff --git a/pelican-plugins/github_activity/__init__.py b/pelican-plugins/github_activity/__init__.py
new file mode 100644
index 0000000..19b6db8
--- /dev/null
+++ b/pelican-plugins/github_activity/__init__.py
@@ -0,0 +1 @@
+from .github_activity import *
diff --git a/pelican-plugins/github_activity/github_activity.py b/pelican-plugins/github_activity/github_activity.py
new file mode 100644
index 0000000..76e3405
--- /dev/null
+++ b/pelican-plugins/github_activity/github_activity.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+
+# NEEDS WORK
+"""
+Copyright (c) Marco Milanesi <kpanic@gnufunk.org>
+
+Github Activity
+---------------
+A plugin to list your Github Activity
+"""
+
+from __future__ import unicode_literals, print_function
+
+import logging
+logger = logging.getLogger(__name__)
+
+from pelican import signals
+
+
+class GitHubActivity():
+    """
+        A class created to fetch github activity with feedparser
+    """
+    def __init__(self, generator):
+        import feedparser
+        self.activities = feedparser.parse(
+            generator.settings['GITHUB_ACTIVITY_FEED'])
+        self.max_entries = generator.settings['GITHUB_ACTIVITY_MAX_ENTRIES'] 
+
+    def fetch(self):
+        """
+            returns a list of html snippets fetched from github actitivy feed
+        """
+
+        entries = []
+        for activity in self.activities['entries']:
+            entries.append(
+                    [element for element in [activity['title'],
+                        activity['content'][0]['value']]])
+
+        return entries[0:self.max_entries]
+
+
+def fetch_github_activity(gen, metadata):
+    """
+        registered handler for the github activity plugin
+        it puts in generator.context the html needed to be displayed on a
+        template
+    """
+
+    if 'GITHUB_ACTIVITY_FEED' in gen.settings.keys():
+        gen.context['github_activity'] = gen.plugin_instance.fetch()
+
+
+def feed_parser_initialization(generator):
+    """
+        Initialization of feed parser
+    """
+
+    generator.plugin_instance = GitHubActivity(generator)
+
+
+def register():
+    """
+        Plugin registration
+    """
+    try:
+        signals.article_generator_init.connect(feed_parser_initialization)
+        signals.article_generator_context.connect(fetch_github_activity)
+    except ImportError:
+        logger.warning('`github_activity` failed to load dependency `feedparser`.'
+                       '`github_activity` plugin not loaded.')
diff --git a/pelican-plugins/global_license/Readme.rst b/pelican-plugins/global_license/Readme.rst
new file mode 100644
index 0000000..0b314f0
--- /dev/null
+++ b/pelican-plugins/global_license/Readme.rst
@@ -0,0 +1,6 @@
+Global license
+--------------
+
+This plugin allows you to define a ``LICENSE`` setting and adds the contents of that
+license variable to the article's context, making that variable available to use
+from within your theme's templates.
diff --git a/pelican-plugins/global_license/__init__.py b/pelican-plugins/global_license/__init__.py
new file mode 100644
index 0000000..ffe2862
--- /dev/null
+++ b/pelican-plugins/global_license/__init__.py
@@ -0,0 +1 @@
+from .global_license import *
diff --git a/pelican-plugins/global_license/global_license.py b/pelican-plugins/global_license/global_license.py
new file mode 100644
index 0000000..fd37f5b
--- /dev/null
+++ b/pelican-plugins/global_license/global_license.py
@@ -0,0 +1,18 @@
+"""
+License plugin for Pelican
+==========================
+
+This plugin allows you to define a LICENSE setting and adds the contents of that
+license variable to the article's context, making that variable available to use
+from within your theme's templates.
+"""
+
+from pelican import signals
+
+def add_license(generator, metadata):
+    if 'license' not in metadata.keys()\
+        and 'LICENSE' in generator.settings.keys():
+            metadata['license'] = generator.settings['LICENSE']
+
+def register():
+    signals.article_generator_context.connect(add_license)
diff --git a/pelican-plugins/glossary/__init__.py b/pelican-plugins/glossary/__init__.py
new file mode 100644
index 0000000..44e4eaa
--- /dev/null
+++ b/pelican-plugins/glossary/__init__.py
@@ -0,0 +1 @@
+from .glossary import *
diff --git a/pelican-plugins/glossary/glossary.py b/pelican-plugins/glossary/glossary.py
new file mode 100644
index 0000000..867b448
--- /dev/null
+++ b/pelican-plugins/glossary/glossary.py
@@ -0,0 +1,70 @@
+"""
+Builds a glossary page containing definition lists found in articles
+and pages, and adds a `definitions` variable visible to all page templates.
+
+"""
+
+import bs4
+from pelican import signals
+
+
+class Definitions():
+    definitions = []
+    exclude = []
+
+
+def make_title(def_title):
+    return def_title.text
+
+
+def make_def(def_title):
+    return ''.join(str(t) for t in def_title.find_next('dd').contents)
+
+
+def make_anchor(def_title):
+    return def_title.text.lower().replace(' ', '-')
+
+
+def set_definitions(generator, metadata):
+    generator.context['definitions'] = Definitions.definitions
+
+
+def get_excludes(pelican):
+    Definitions.exclude = pelican.settings.get('GLOSSARY_EXCLUDE', [])
+
+
+def parse_content(content):
+    soup = bs4.BeautifulSoup(content._content, 'html.parser')
+
+    for def_list in soup.find_all('dl'):
+        defns = []
+        for def_title in def_list.find_all('dt'):
+            if def_title.text not in Definitions.exclude:
+                anchor_name = make_anchor(def_title)
+                anchor_tag = bs4.Tag(name="a", attrs={'name': anchor_name})
+                index = def_list.parent.index(def_list)-1
+                def_list.parent.insert(index, anchor_tag)
+
+                defns.append(
+                    {'title': make_title(def_title),
+                     'definition': make_def(def_title),
+                     'anchor': anchor_name,
+                     'source': content})
+
+        for defn in defns:
+            defn['see_also'] = [d for d in defns if d is not defn]
+
+        Definitions.definitions += defns
+
+    content._content = str(soup)
+
+
+def parse_articles(generator):
+    for article in generator.articles:
+        parse_content(article)
+
+
+def register():
+    signals.initialized.connect(get_excludes)
+    signals.article_generator_finalized.connect(parse_articles)
+    signals.page_generator_context.connect(set_definitions)
diff --git a/pelican-plugins/glossary/readme.md b/pelican-plugins/glossary/readme.md
new file mode 100644
index 0000000..8a098ef
--- /dev/null
+++ b/pelican-plugins/glossary/readme.md
@@ -0,0 +1,102 @@
+# Glossary
+
+Builds a glossary page containing definition lists found in articles.
+
+
+## Example
+
+If you have an article (Markdown or ReST) that generates the following:
+
+file `defns.html` titled "My definitions"
+```
+<dl>
+  <dt>My Term</dt>
+  <dd>This is definition for My Term.</dd>
+  <dt>Another Term</dt>
+  <dd>And another definition.</dd>
+</dl>
+```
+
+This plugin will do two things. First, it will add an anchor to the
+beginning of the <dl> tag, like so:
+
+file `defns.html` titled "My definitions"
+```
+<a name="another-term"></a>
+<a name="my-term"></a>
+<dl>
+  <dt>My Term</dt>
+  <dd>This is definition for My Term.</dd>
+  <dt>Another Term</dt>
+  <dd>And another definition.</dd>
+</dl>
+```
+
+Second, it will extract all such definitions and put them inside the
+`definitions` variable in the pelican context. It will be seen by all page
+templates.
+
+The `definitions` variable will have the following attributes:
++ `title`, the definition title, inside <dt> tags,
++ `definition`, the definition, inside <dd> tags,
++ `anchor`, the text inside the `name` attribute for the anchor link,
++ `source`, the article or page that contains this definition list,
++ `see_also`, containing a list of objects just like this one, made from
+  other definitions in the same list.
+
+For example, for the above html code, the `definitions` variable would look
+like the following:
+
+```
+definitions = [obj1, obj2]
+obj1.title = "My Term"
+obj1.definition = "This is definition for My Term."
+obj1.anchor = 'my-term'
+obj1.source = <Content object pointing to "My definitions" file>
+obj1.see_also = [obj2]
+
+obj2.title = "Another Term"
+obj2.definition = "And another definition."
+obj2.link = 'another-term'
+obj2.source = <Content object pointing to "My definitions" file>
+obj2.see_also = [obj1]
+```
+
+
+## Usage
+
+Next is an example usage of the `definitions` variable.
+
+glossary.html
+```
+{% for def in definitions | sort(attribute='title') %}
+<dl>
+  <a name="{{ def.anchor }}"></a>
+  <dt><h4>{{ def.title }}</h4></dt>
+  <dd>
+    <p>{{ def.definition }}</p>
+    <p><i>
+      <span>Defined in: <a href="{{ def.source.url }}#{{ def.anchor }}">{{ def.source.title }}</a>.</span>
+      {% if def.see_also %}
+      <span> See also: </span>
+      {% for also in def.see_also %}
+      <span><a href="{{ output_file }}#{{ also.anchor }}">{{ also.title }}</a>{% if not loop.last %}, {% else %}.{% endif %}</span>
+      {% endfor%}
+      {% endif %}
+    </i></p>
+  </dd>
+</dl>
+```
+
+This example generates new anchors in the glossary page, so that navigation
+through the `see also` links is done inside the same page, as well as link
+to the source page (with the correct anchor too).
+>>>>>>> Stashed changes
+
+## Notes
+
++ The `glossary` plugin supports the use of a `GLOSSARY_EXCLUDE` setting,
+  which can be set to an arbitrary list in your `pelicanconf.py`. By
+  default, it's equal to the empty list. `glossary` will add to
+  `definitions` all definitions **EXCEPT** those whose title is found
+  inside `GLOSSARY_EXCLUDE`.
diff --git a/pelican-plugins/goodreads_activity/Readme.md b/pelican-plugins/goodreads_activity/Readme.md
new file mode 100644
index 0000000..095518a
--- /dev/null
+++ b/pelican-plugins/goodreads_activity/Readme.md
@@ -0,0 +1,80 @@
+Goodreads Activity
+==================
+
+A Pelican plugin to lists books from your Goodreads shelves.
+
+Copyright (c) Talha Mansoor
+
+Author          | Talha Mansoor
+----------------|-----
+Author Email    | talha131@gmail.com 
+Author Homepage | http://onCrashReboot.com 
+Github Account  | https://github.com/talha131 
+
+### Credits
+
+This plugin is inspired by Marco Milanesi <kpanic@gnufunk.org> Github activity plugin.
+
+Requirements
+============
+
+`goodreads_activity` requires feedparser.
+
+```bash
+pip install feedparser
+```
+
+How to Use
+==========
+
+**Important** Unlike Marco's Github activity plugin, this plugin returns
+a dictionary composed of the books in your Goodreads shelf and their
+details.
+
+To enable it, set `GOODREADS_ACTIVITY_FEED` in your pelican config file. It should point to the activity feed of your bookshelf.
+
+To find your self's activity feed,
+
+1.  Open Goodreads homepage and login
+2.  Click on My Books in the top navigational bar
+3.  Select the bookshelf you are interested in from the left hand column
+4.  Look for RSS link in the footer. Copy it's link.
+
+Here is an example feed of currently-reading shelf,
+
+```python
+GOODREADS_ACTIVITY_FEED='http://www.goodreads.com/review/list_rss/8028663?key=b025l3000336epw1pix047e853agggannc9932ed&shelf=currently-reading'
+```
+
+You can access the `goodreads_activity` in your Jinja2 template. `goodreads_activity` is a dictionary. Its valid keys are
+
+1.  `shelf_title` it has the title of your shelf
+2.  `books` it is an array of book dictionary
+
+Valid keys for `book` dictionary are
+
+1.  `title`
+2.  `author`
+3.  `link` link to your book review
+4.  `l_cover` large cover
+5.  `m_cover` medium cover
+6.  `s_cover` small cover
+7.  `description`
+8.  `rating`
+9.  `review`
+10. `tags`
+
+Template Example
+================
+
+```python
+{% if GOODREADS_ACTIVITY_FEED %}
+    <h2>{{ goodreads_activity.shelf_title }}</h2>
+    {% for book in goodreads_activity.books %}
+        <img src="{{book.s_cover}}"/>
+        <header>{{book.title}}<small> by {{book.author}}</small></header>
+        <article>{{book.description|truncate(end='')}}
+        <a href={{book.link}} target="_blank">...more</a></article>
+    {% endfor %}
+{% endif %}
+```
diff --git a/pelican-plugins/goodreads_activity/__init__.py b/pelican-plugins/goodreads_activity/__init__.py
new file mode 100644
index 0000000..176113d
--- /dev/null
+++ b/pelican-plugins/goodreads_activity/__init__.py
@@ -0,0 +1 @@
+from .goodreads_activity import *
\ No newline at end of file
diff --git a/pelican-plugins/goodreads_activity/goodreads_activity.py b/pelican-plugins/goodreads_activity/goodreads_activity.py
new file mode 100644
index 0000000..d1fe81d
--- /dev/null
+++ b/pelican-plugins/goodreads_activity/goodreads_activity.py
@@ -0,0 +1,63 @@
+# -*- coding: utf-8 -*-
+"""
+Goodreads Activity
+==================
+
+A Pelican plugin to lists books from your Goodreads shelves.
+
+Copyright (c) Talha Mansoor
+"""
+
+from __future__ import unicode_literals
+
+import logging
+logger = logging.getLogger(__name__)
+
+from pelican import signals
+
+
+class GoodreadsActivity():
+    def __init__(self, generator):
+        import feedparser
+        self.activities = feedparser.parse(
+            generator.settings['GOODREADS_ACTIVITY_FEED'])
+
+    def fetch(self):
+        goodreads_activity = {
+            'shelf_title': self.activities.feed.title,
+            'books': []
+        }
+        for entry in self.activities['entries']:
+            book = {
+                'title': entry.title,
+                'author': entry.author_name,
+                'link': entry.link,
+                'l_cover': entry.book_large_image_url,
+                'm_cover': entry.book_medium_image_url,
+                's_cover': entry.book_small_image_url,
+                'description': entry.book_description,
+                'rating': entry.user_rating,
+                'review': entry.user_review,
+                'tags': entry.user_shelves
+            }
+            goodreads_activity['books'].append(book)
+
+        return goodreads_activity
+
+
+def fetch_goodreads_activity(gen, metadata):
+    if 'GOODREADS_ACTIVITY_FEED' in gen.settings:
+        gen.context['goodreads_activity'] = gen.goodreads.fetch()
+
+
+def initialize_feedparser(generator):
+    generator.goodreads = GoodreadsActivity(generator)
+
+
+def register():
+    try:
+        signals.article_generator_init.connect(initialize_feedparser)
+        signals.article_generator_context.connect(fetch_goodreads_activity)
+    except ImportError:
+        logger.warning('`goodreads_activity` failed to load dependency `feedparser`.'
+                       '`goodreads_activity` plugin not loaded.')
diff --git a/pelican-plugins/googleplus_comments/Readme.md b/pelican-plugins/googleplus_comments/Readme.md
new file mode 100644
index 0000000..f824553
--- /dev/null
+++ b/pelican-plugins/googleplus_comments/Readme.md
@@ -0,0 +1,20 @@
+GooglePlus Comments Plugin For Pelican
+==================================
+
+Adds GooglePlus comments to Pelican
+
+Add the plugin to `pelicanconf.py`:
+
+    PLUGIN_PATH = 'pelican-plugins'
+    PLUGINS = ["googleplus_comments"]
+
+Add a `<div>` for comments to the `article.html` of your template:
+
+    <div id="commentswrap">
+    <div id="comments"></div>
+    </div>
+    {{ article.metadata.googleplus_comments }}
+
+See it working, and ask for support:
+
+<http://zonca.github.io/2013/09/google-plus-comments-plugin-for-pelican.html>
diff --git a/pelican-plugins/googleplus_comments/__init__.py b/pelican-plugins/googleplus_comments/__init__.py
new file mode 100644
index 0000000..4cbb6d1
--- /dev/null
+++ b/pelican-plugins/googleplus_comments/__init__.py
@@ -0,0 +1 @@
+from .googleplus_comments import *
diff --git a/pelican-plugins/googleplus_comments/googleplus_comments.py b/pelican-plugins/googleplus_comments/googleplus_comments.py
new file mode 100644
index 0000000..60495da
--- /dev/null
+++ b/pelican-plugins/googleplus_comments/googleplus_comments.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+"""
+Google Comments Plugin For Pelican
+==================================
+
+Adds Google comments to Pelican
+"""
+
+from pelican import signals
+
+googleplus_comments_snippet = """
+    <script src="https://apis.google.com/js/plusone.js"></script>
+    <script>
+        $(document).ready(function () {
+            gapi.comments.render('comments', {
+                href: window.location,
+                width: '600',
+                first_party_property: 'BLOGGER',
+                view_type: 'FILTERED_POSTMOD'
+            });
+    });
+    </script>
+"""
+
+def add_googleplus_comments(generator, metadata):
+    metadata["googleplus_comments"] = googleplus_comments_snippet
+
+def register():
+    signals.article_generator_context.connect(add_googleplus_comments)
diff --git a/pelican-plugins/gravatar/Readme.rst b/pelican-plugins/gravatar/Readme.rst
new file mode 100644
index 0000000..16024a0
--- /dev/null
+++ b/pelican-plugins/gravatar/Readme.rst
@@ -0,0 +1,25 @@
+Gravatar
+--------
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/avatar>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
+
+This plugin assigns the ``author_gravatar`` variable to the Gravatar URL and
+makes the variable available within the article's context. You can add
+``AUTHOR_EMAIL`` to your settings file to define the default author's email
+address. Obviously, that email address must be associated with a Gravatar
+account.
+
+Alternatively, you can provide an email address from within article metadata.
+
+In reSTructuredText::
+
+    :email:  john.doe@example.com
+
+In Markdown::
+
+    Email:  john.doe@example.com
+
+If the email address is defined via at least one of the two methods above, the
+``author_gravatar`` variable is added to the article's context. For Markdown,
+it is critical that the 'E' in ``Email`` is capitalized.
+
diff --git a/pelican-plugins/gravatar/__init__.py b/pelican-plugins/gravatar/__init__.py
new file mode 100644
index 0000000..cc60487
--- /dev/null
+++ b/pelican-plugins/gravatar/__init__.py
@@ -0,0 +1 @@
+from .gravatar import *
diff --git a/pelican-plugins/gravatar/gravatar.py b/pelican-plugins/gravatar/gravatar.py
new file mode 100644
index 0000000..6e063f7
--- /dev/null
+++ b/pelican-plugins/gravatar/gravatar.py
@@ -0,0 +1,31 @@
+"""
+Gravatar plugin for Pelican
+===========================
+
+This plugin assigns the ``author_gravatar`` variable to the Gravatar URL and
+makes the variable available within the article's context.
+"""
+
+import hashlib
+import six
+
+from pelican import signals
+
+
+def add_gravatar(generator, metadata):
+
+    #first check email
+    if 'email' not in metadata.keys()\
+        and 'AUTHOR_EMAIL' in generator.settings.keys():
+            metadata['email'] = generator.settings['AUTHOR_EMAIL']
+
+    #then add gravatar url
+    if 'email' in metadata.keys():
+        email_bytes = six.b(metadata['email']).lower()
+        gravatar_url = "https://www.gravatar.com/avatar/" + \
+                        hashlib.md5(email_bytes).hexdigest()
+        metadata['author_gravatar'] = gravatar_url
+
+
+def register():
+    signals.article_generator_context.connect(add_gravatar)
diff --git a/pelican-plugins/gzip_cache/Readme.rst b/pelican-plugins/gzip_cache/Readme.rst
new file mode 100644
index 0000000..b275120
--- /dev/null
+++ b/pelican-plugins/gzip_cache/Readme.rst
@@ -0,0 +1,21 @@
+Gzip cache
+----------
+
+Certain web servers (e.g., Nginx) can use a static cache of gzip-compressed
+files to prevent the server from compressing files during an HTTP call. Since
+compression occurs at another time, these compressed files can be compressed
+at a higher compression level for increased optimization.
+
+The ``gzip_cache`` plugin compresses all common text type files into a ``.gz``
+file within the same directory as the original file.
+
+Settings
+--------
+
+* ``GZIP_CACHE_OVERWRITE``:
+  If True, the original files will be replaced by the gzip-compressed files. 
+  This is useful for static hosting services (e.g S3). Defaults to False.
+* ``GZIP_CACHE_EXCLUDE_TYPES``:
+  A tuple of file extensions to exclude in addition to the built-in ones.
+  Extensions must be specified with leading dot, e.g.
+  ``GZIP_CACHE_EXCLUDE_TYPES = ('.php', '.py', '.tmp')``
diff --git a/pelican-plugins/gzip_cache/__init__.py b/pelican-plugins/gzip_cache/__init__.py
new file mode 100644
index 0000000..fb76712
--- /dev/null
+++ b/pelican-plugins/gzip_cache/__init__.py
@@ -0,0 +1 @@
+from .gzip_cache import *
diff --git a/pelican-plugins/gzip_cache/gzip_cache.py b/pelican-plugins/gzip_cache/gzip_cache.py
new file mode 100644
index 0000000..2985d69
--- /dev/null
+++ b/pelican-plugins/gzip_cache/gzip_cache.py
@@ -0,0 +1,129 @@
+'''
+Copyright (c) 2012 Matt Layman
+
+Gzip cache
+----------
+
+A plugin to create .gz cache files for optimization.
+'''
+
+import logging
+import os
+import zlib
+
+from pelican import signals
+
+logger = logging.getLogger(__name__)
+
+# A list of file types to exclude from possible compression
+EXCLUDE_TYPES = (
+    # Compressed types
+    '.bz2',
+    '.gz',
+
+    # Audio types
+    '.aac',
+    '.flac',
+    '.mp3',
+    '.wma',
+
+    # Image types
+    '.gif',
+    '.jpg',
+    '.jpeg',
+    '.png',
+
+    # Video types
+    '.avi',
+    '.mov',
+    '.mp4',
+    '.webm',
+
+    # Internally-compressed fonts. gzip can often shave ~50 more bytes off,
+    # but it's not worth it.
+    '.woff',
+    '.woff2',
+)
+
+COMPRESSION_LEVEL = 9 # Best Compression
+
+""" According to zlib manual: 'Add 16 to
+windowBits to write a simple gzip header and trailer around the
+compressed data instead of a zlib wrapper. The gzip header will
+have no file name, no extra data, no comment, no modification
+time (set to zero), no header crc, and the operating system
+will be set to 255 (unknown)'
+"""
+WBITS = zlib.MAX_WBITS | 16
+
+
+def create_gzip_cache(pelican):
+    '''Create a gzip cache file for every file that a webserver would
+    reasonably want to cache (e.g., text type files).
+
+    :param pelican: The Pelican instance
+    '''
+    user_exclude_types = pelican.settings.get('GZIP_CACHE_EXCLUDE_TYPES', ())
+    overwrite = should_overwrite(pelican.settings)
+    for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']):
+        for name in filenames:
+            if should_compress(name, user_exclude_types):
+                filepath = os.path.join(dirpath, name)
+                create_gzip_file(filepath, overwrite)
+
+
+def should_compress(filename, user_exclude_types):
+    '''Check if the filename is a type of file that should be compressed.
+
+    :param filename: A file name to check against
+    :param user_exclude_types: User-supplied list of extensions to exclude
+    '''
+    if filename.endswith(EXCLUDE_TYPES):
+        return False
+    if filename.endswith(user_exclude_types):
+        return False
+
+    return True
+
+def should_overwrite(settings):
+    '''Check if the gzipped files should overwrite the originals.
+
+    :param settings: The pelican instance settings
+    '''
+    return settings.get('GZIP_CACHE_OVERWRITE', False)
+
+def create_gzip_file(filepath, overwrite):
+    '''Create a gzipped file in the same directory with a filepath.gz name.
+
+    :param filepath: A file to compress
+    :param overwrite: Whether the original file should be overwritten
+    '''
+    compressed_path = filepath + '.gz'
+
+    with open(filepath, 'rb') as uncompressed:
+        gzip_compress_obj = zlib.compressobj(COMPRESSION_LEVEL,
+                                                zlib.DEFLATED, WBITS)
+
+        uncompressed_data = uncompressed.read()
+        gzipped_data = gzip_compress_obj.compress(uncompressed_data)
+        gzipped_data += gzip_compress_obj.flush()
+
+        if len(gzipped_data) >= len(uncompressed_data):
+            logger.debug('No improvement: %s' % filepath)
+            return
+
+        with open(compressed_path, 'wb') as compressed:
+            logger.debug('Compressing: %s' % filepath)
+            try:
+                compressed.write(gzipped_data)
+            except Exception as ex:
+                logger.critical('Gzip compression failed: %s' % ex)
+
+        if overwrite:
+            logger.debug('Overwriting: %s with %s' % (filepath, compressed_path))
+            os.remove(filepath)
+            os.rename(compressed_path, filepath)
+
+def register():
+    signals.finalized.connect(create_gzip_cache)
+
diff --git a/pelican-plugins/gzip_cache/test_gzip_cache.py b/pelican-plugins/gzip_cache/test_gzip_cache.py
new file mode 100644
index 0000000..9c333ec
--- /dev/null
+++ b/pelican-plugins/gzip_cache/test_gzip_cache.py
@@ -0,0 +1,107 @@
+# -*- coding: utf-8 -*-
+'''Core plugins unit tests'''
+
+import os
+import tempfile
+import unittest
+import time
+
+from contextlib import contextmanager
+from tempfile import mkdtemp
+from shutil import rmtree
+from hashlib import md5
+
+import gzip_cache
+
+@contextmanager
+def temporary_folder():
+    """creates a temporary folder, return it and delete it afterwards.
+
+    This allows to do something like this in tests:
+
+        >>> with temporary_folder() as d:
+            # do whatever you want
+    """
+    tempdir = mkdtemp()
+    try:
+        yield tempdir
+    finally:
+        rmtree(tempdir)
+
+
+class TestGzipCache(unittest.TestCase):
+
+    def test_should_compress(self):
+        user_exclude_types = ()
+
+        # Some filetypes should compress and others shouldn't.
+        self.assertTrue(gzip_cache.should_compress('foo.html', user_exclude_types))
+        self.assertTrue(gzip_cache.should_compress('bar.css', user_exclude_types))
+        self.assertTrue(gzip_cache.should_compress('baz.js', user_exclude_types))
+        self.assertTrue(gzip_cache.should_compress('foo.txt', user_exclude_types))
+
+        self.assertFalse(gzip_cache.should_compress('foo.gz', user_exclude_types))
+        self.assertFalse(gzip_cache.should_compress('bar.png', user_exclude_types))
+        self.assertFalse(gzip_cache.should_compress('baz.mp3', user_exclude_types))
+        self.assertFalse(gzip_cache.should_compress('foo.mov', user_exclude_types))
+
+        user_exclude_types = ('.html', '.xyz')
+        self.assertFalse(gzip_cache.should_compress('foo.html', user_exclude_types))
+        self.assertFalse(gzip_cache.should_compress('bar.xyz', user_exclude_types))
+        self.assertFalse(gzip_cache.should_compress('foo.gz', user_exclude_types))
+        self.assertTrue(gzip_cache.should_compress('baz.js', user_exclude_types))
+
+    def test_should_overwrite(self):
+        # Default to false if GZIP_CACHE_OVERWRITE is not set
+        settings = { }
+        self.assertFalse(gzip_cache.should_overwrite(settings))
+        settings = { 'GZIP_CACHE_OVERWRITE': False }
+        self.assertFalse(gzip_cache.should_overwrite(settings))
+        settings = { 'GZIP_CACHE_OVERWRITE': True }
+        self.assertTrue(gzip_cache.should_overwrite(settings))
+
+    def test_creates_gzip_file(self):
+        # A file matching the input filename with a .gz extension is created.
+
+        # The plugin walks over the output content after the finalized signal
+        # so it is safe to assume that the file exists (otherwise walk would
+        # not report it). Therefore, create a dummy file to use.
+        with temporary_folder() as tempdir:
+            _, a_html_filename = tempfile.mkstemp(suffix='.html', dir=tempdir)
+            with open(a_html_filename, 'w') as f:
+                f.write('A' * 24)  # under this length, compressing is useless and create_gzip_file will not create any file
+            gzip_cache.create_gzip_file(a_html_filename, False)
+            self.assertTrue(os.path.exists(a_html_filename + '.gz'))
+
+    def test_creates_same_gzip_file(self):
+        # Should create the same gzip file from the same contents.
+
+        # gzip will create a slightly different file because it includes
+        # a timestamp in the compressed file by default. This can cause
+        # problems for some caching strategies.
+        with temporary_folder() as tempdir:
+            _, a_html_filename = tempfile.mkstemp(suffix='.html', dir=tempdir)
+            with open(a_html_filename, 'w') as f:
+                f.write('A' * 24)  # under this length, compressing is useless and create_gzip_file will not create any file
+            a_gz_filename = a_html_filename + '.gz'
+            gzip_cache.create_gzip_file(a_html_filename, False)
+            gzip_hash = get_md5(a_gz_filename)
+            time.sleep(1)
+            gzip_cache.create_gzip_file(a_html_filename, False)
+            self.assertEqual(gzip_hash, get_md5(a_gz_filename))
+
+    def test_overwrites_gzip_file(self):
+        # A file matching the input filename with a .gz extension is not created.
+
+        # The plugin walks over the output content after the finalized signal
+        # so it is safe to assume that the file exists (otherwise walk would
+        # not report it). Therefore, create a dummy file to use.
+        with temporary_folder() as tempdir:
+            _, a_html_filename = tempfile.mkstemp(suffix='.html', dir=tempdir)
+            gzip_cache.create_gzip_file(a_html_filename, True)
+            self.assertFalse(os.path.exists(a_html_filename + '.gz'))
+
+def get_md5(filepath):
+    with open(filepath, 'rb') as fh:
+        return md5(fh.read()).hexdigest()
+
diff --git a/pelican-plugins/headerid/README.rst b/pelican-plugins/headerid/README.rst
new file mode 100644
index 0000000..7bfa402
--- /dev/null
+++ b/pelican-plugins/headerid/README.rst
@@ -0,0 +1,16 @@
+Pelican ``headerid`` plugin
+===========================
+
+This plugin adds an anchor to each heading so you can deep-link to headers.
+It is intended for formats such as reStructuredText that do not natively
+generate these anchors.
+
+The ``HEADERID_LINK_CHAR`` config can be set to use a different char from ``*``
+for anchor text.
+
+For Markdown, this plugin is less relevant since the Python-Markdown library
+includes a Table of Contents extension that will generate link anchors.
+To enable the ``toc`` extension, add a line similar to the following example
+to your Pelican settings file::
+
+    MD_EXTENSIONS = ["codehilite(css_class=highlight)", "extra", "toc"]
diff --git a/pelican-plugins/headerid/__init__.py b/pelican-plugins/headerid/__init__.py
new file mode 100644
index 0000000..b88e8e2
--- /dev/null
+++ b/pelican-plugins/headerid/__init__.py
@@ -0,0 +1 @@
+from .headerid import *
diff --git a/pelican-plugins/headerid/headerid.py b/pelican-plugins/headerid/headerid.py
new file mode 100644
index 0000000..ee9d265
--- /dev/null
+++ b/pelican-plugins/headerid/headerid.py
@@ -0,0 +1,31 @@
+from pelican import readers
+from pelican.readers import PelicanHTMLTranslator
+from pelican import signals
+from docutils import nodes
+
+LINK_CHAR = '*'
+
+
+def init_headerid(sender):
+    global LINK_CHAR
+    char = sender.settings.get('HEADERID_LINK_CHAR')
+    if char:
+        LINK_CHAR = char
+
+def register():
+    signals.initialized.connect(init_headerid)
+
+
+    class HeaderIDPatchedPelicanHTMLTranslator(PelicanHTMLTranslator):
+        def depart_title(self, node):
+            close_tag = self.context[-1]
+            parent = node.parent
+            if isinstance(parent, nodes.section) and parent.hasattr('ids') and parent['ids']:
+                anchor_name = parent['ids'][0]
+                # add permalink anchor
+                if close_tag.startswith('</h'):
+                    self.body.append(
+                        '<a class="headerlink" href="#%s" title="Permalink to this headline">%s</a>' %
+                        (anchor_name, LINK_CHAR))
+            PelicanHTMLTranslator.depart_title(self, node)
+    readers.PelicanHTMLTranslator = HeaderIDPatchedPelicanHTMLTranslator
diff --git a/pelican-plugins/html_entity/README.rst b/pelican-plugins/html_entity/README.rst
new file mode 100644
index 0000000..c772707
--- /dev/null
+++ b/pelican-plugins/html_entity/README.rst
@@ -0,0 +1,30 @@
+HTML Entities for reStructuredText
+##################################
+
+This plugin allows you to enter HTML entities such as &copy;, &lt;, &#149; inline in a RST document, as opposed
+to the tedious method of creating substitution definitions.
+
+Roles
+=====
+
+Adds one inline role:
+
+::
+
+    :html_entity:
+
+Usage
+=====
+
+::
+
+    :html_entity:`copy` 2013 :html_entity:`lt` Pelican :html_entity:`gt` Industries :html_entity:`149` All Rights Reserved
+
+produces:
+
+|copy| 2013 |lt| Pelican |gt| Industries |bullet| All Rights Reserved
+
+.. |copy|   unicode:: U+000A9 .. COPYRIGHT SIGN
+.. |lt|     unicode:: U+003C  .. LESS THAN
+.. |gt|     unicode:: U+003E  .. GREATER THAN
+.. |bullet| unicode:: U+2022  .. BULLET
diff --git a/pelican-plugins/html_entity/__init__.py b/pelican-plugins/html_entity/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/html_entity/html_entity.py b/pelican-plugins/html_entity/html_entity.py
new file mode 100644
index 0000000..ffb70e7
--- /dev/null
+++ b/pelican-plugins/html_entity/html_entity.py
@@ -0,0 +1,46 @@
+"""
+HTML Entities for reStructured Text
+===================================
+
+Allows user to use HTML entities (&copy;, &#149;, etc.) in RST documents.
+
+Usage:
+:html_entity:`copy`
+:html_entity:`149`
+:html_entity:`#149`
+"""
+from __future__ import unicode_literals
+from docutils import nodes, utils
+from docutils.parsers.rst import roles
+from pelican.readers import PelicanHTMLTranslator
+import six
+
+
+class html_entity(nodes.Inline, nodes.Node):
+    # Subclassing Node directly since TextElement automatically appends the escaped element
+    def __init__(self, rawsource, text):
+        self.rawsource = rawsource
+        self.text = text
+        self.children = []
+        self.attributes = {}
+
+    def astext(self):
+        return self.text
+
+
+def entity_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
+    text = utils.unescape(text)
+    entity_code = text
+    try:
+        entity_code = "#{}".format(six.u(int(entity_code)))
+    except ValueError:
+        pass
+    entity_code = "&{};".format(entity_code)
+    return [html_entity(text, entity_code)], []
+
+
+def register():
+    roles.register_local_role('html_entity', entity_role)
+
+PelicanHTMLTranslator.visit_html_entity = lambda self, node: self.body.append(node.astext())
+PelicanHTMLTranslator.depart_html_entity = lambda self, node: None
diff --git a/pelican-plugins/html_rst_directive/Readme.rst b/pelican-plugins/html_rst_directive/Readme.rst
new file mode 100644
index 0000000..93a7a1d
--- /dev/null
+++ b/pelican-plugins/html_rst_directive/Readme.rst
@@ -0,0 +1,45 @@
+HTML tags for reStructuredText
+------------------------------
+
+This plugin allows you to use HTML tags from within reST documents. 
+
+
+Directives
+----------
+
+
+::
+
+    .. html::
+
+        (HTML code)
+
+
+Example
+-------
+
+A search engine::
+
+    .. html::
+
+       <form action="http://seeks.fr/search" method="GET">
+         <input type="text" value="Pelican v2" title="Search" maxlength="2048" name="q" autocomplete="on" />
+         <input type="hidden" name="lang" value="en" />
+         <input type="submit" value="Seeks !" id="search_button" />
+       </form>
+
+
+A contact form::
+
+    .. html::
+
+        <form method="GET" action="mailto:some email">
+          <p>
+            <input type="text" placeholder="Subject" name="subject">
+            <br />
+            <textarea name="body" placeholder="Message">
+            </textarea>
+            <br />
+            <input type="reset"><input type="submit">
+          </p>
+        </form>
diff --git a/pelican-plugins/html_rst_directive/__init__.py b/pelican-plugins/html_rst_directive/__init__.py
new file mode 100644
index 0000000..57ec228
--- /dev/null
+++ b/pelican-plugins/html_rst_directive/__init__.py
@@ -0,0 +1 @@
+from .html_rst_directive import *
diff --git a/pelican-plugins/html_rst_directive/html_rst_directive.py b/pelican-plugins/html_rst_directive/html_rst_directive.py
new file mode 100644
index 0000000..ed877da
--- /dev/null
+++ b/pelican-plugins/html_rst_directive/html_rst_directive.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+"""
+HTML tags for reStructuredText
+==============================
+
+This plugin allows you to use HTML tags from within reST documents. 
+
+"""
+
+from __future__ import unicode_literals
+from docutils import nodes
+from docutils.parsers.rst import directives, Directive
+
+
+class RawHtml(Directive):
+    required_arguments = 0
+    optional_arguments = 0
+    final_argument_whitespace = True
+    has_content = True
+
+    def run(self):
+        html = ' '.join(self.content)
+        node = nodes.raw('', html, format='html')
+        return [node]
+
+
+
+def register():
+    directives.register_directive('html', RawHtml)
+
diff --git a/pelican-plugins/i18n_subsites/README.rst b/pelican-plugins/i18n_subsites/README.rst
new file mode 100644
index 0000000..340109b
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/README.rst
@@ -0,0 +1,165 @@
+=======================
+ I18N Sub-sites Plugin
+=======================
+
+This plugin extends the translations functionality by creating
+internationalized sub-sites for the default site.
+
+This plugin is designed for Pelican 3.4 and later.
+
+What it does
+============
+
+1. When the content of the main site is being generated, the settings
+   are saved and the generation stops when content is ready to be
+   written. While reading source files and generating content objects,
+   the output queue is modified in certain ways:
+
+  - translations that will appear as native in a different (sub-)site
+    will be removed
+  - untranslated articles will be transformed to drafts if
+    ``I18N_UNTRANSLATED_ARTICLES`` is ``'hide'`` (default), removed if
+    ``'remove'`` or kept as they are if ``'keep'``.
+  - untranslated pages will be transformed into hidden pages if
+    ``I18N_UNTRANSLATED_PAGES`` is ``'hide'`` (default), removed if
+    ``'remove'`` or kept as they are if ``'keep'``.''
+  - additional content manipulation similar to articles and pages can
+    be specified for custom generators in the ``I18N_GENERATOR_INFO``
+    setting.
+
+2. For each language specified in the ``I18N_SUBSITES`` dictionary the
+   settings overrides are applied to the settings from the main site
+   and a new sub-site is generated in the same way as with the main
+   site until content is ready to be written.
+3. When all (sub-)sites are waiting for content writing, all removed
+   contents, translations and static files are interlinked across the
+   (sub-)sites.
+4. Finally, all the output is written.
+
+Setting it up
+=============
+
+For each extra used language code, a language-specific settings overrides
+dictionary must be given (but can be empty) in the ``I18N_SUBSITES`` dictionary
+
+.. code-block:: python
+
+    PLUGINS = ['i18n_subsites', ...]
+
+    # mapping: language_code -> settings_overrides_dict
+    I18N_SUBSITES = {
+        'cz': {
+	    'SITENAME': 'Hezkej blog',
+	    }
+	}
+
+You must also have the following in your pelican configuration
+
+.. code-block:: python
+    JINJA_ENVIRONMENT = {
+        'extensions': ['jinja2.ext.i18n'],
+    }
+
+
+
+Default and special overrides
+-----------------------------
+The settings overrides may contain arbitrary settings, however, there
+are some that are handled in a special way:
+
+``SITEURL``
+  Any overrides to this setting should ensure that there is some level
+  of hierarchy between all (sub-)sites, because Pelican makes all URLs
+  relative to ``SITEURL`` and the plugin can only cross-link between
+  the sites using this hierarchy. For instance, with the main site
+  ``http://example.com`` a sub-site ``http://example.com/de`` will
+  work, but ``http://de.example.com`` will not. If not overridden, the
+  language code (the language identifier used in the ``lang``
+  metadata) is appended to the main ``SITEURL`` for each sub-site.
+``OUTPUT_PATH``, ``CACHE_PATH``
+  If not overridden, the language code is appended as with ``SITEURL``.
+  Separate cache paths are required as parser results depend on the locale.
+``STATIC_PATHS``, ``THEME_STATIC_PATHS``
+  If not overridden, they are set to ``[]`` and all links to static
+  files are cross-linked to the main site.
+``THEME``, ``THEME_STATIC_DIR``
+  If overridden, the logic with ``THEME_STATIC_PATHS`` does not apply.
+``DEFAULT_LANG``
+  This should not be overridden as the plugin changes it to the
+  language code of each sub-site to change what is perceived as translations.
+
+Localizing templates
+--------------------
+
+Most importantly, this plugin can use localized templates for each
+sub-site. There are two approaches to having the templates localized:
+
+- You can set a different ``THEME`` override for each language in
+  ``I18N_SUBSITES``, e.g. by making a copy of a theme ``my_theme`` to
+  ``my_theme_lang`` and then editing the templates in the new
+  localized theme. This approach means you don't have to deal with
+  gettext ``*.po`` files, but it is harder to maintain over time.
+- You use only one theme and localize the templates using the
+  `jinja2.ext.i18n Jinja2 extension
+  <http://jinja.pocoo.org/docs/templates/#i18n>`_. For a kickstart
+  read this `guide <./localizing_using_jinja2.rst>`_.
+
+Additional context variables
+............................
+
+It may be convenient to add language buttons to your theme in addition
+to the translation links of articles and pages. These buttons could,
+for example, point to the ``SITEURL`` of each (sub-)site. For this
+reason the plugin adds these variables to the template context:
+
+``main_lang``
+  The language of the main site — the original ``DEFAULT_LANG``
+``main_siteurl``
+  The ``SITEURL`` of the main site — the original ``SITEURL``
+``lang_siteurls``
+  An ordered dictionary, mapping all used languages to their
+  ``SITEURL``. The ``main_lang`` is the first key with ``main_siteurl``
+  as the value. This dictionary is useful for implementing global
+  language buttons that show the language of the currently viewed
+  (sub-)site too.
+``extra_siteurls``
+  An ordered dictionary, subset of ``lang_siteurls``, the current
+  ``DEFAULT_LANG`` of the rendered (sub-)site is not included, so for
+  each (sub-)site ``set(extra_siteurls) == set(lang_siteurls) -
+  set([DEFAULT_LANG])``. This dictionary is useful for implementing
+  global language buttons that do not show the current language.
+``relpath_to_site``
+  A function that returns a relative path from the first (sub-)site to
+  the second (sub-)site where the (sub-)sites are identified by the
+  language codes given as two arguments.
+
+If you don't like the default ordering of the ordered dictionaries,
+use a Jinja2 filter to alter the ordering.
+
+All the siteurls above are always absolute even in the case of
+``RELATIVE_URLS == True`` (it would be to complicated to replicate the
+Pelican internals for local siteurls), so you may rather use something
+like ``{{ SITEURL }}/{{ relpath_to_site(DEFAULT_LANG, main_lang }}``
+to link to the main site.
+
+This short `howto <./implementing_language_buttons.rst>`_ shows two
+example implementations of language buttons.
+
+Usage notes
+===========
+- It is **mandatory** to specify ``lang`` metadata for each article
+  and page as ``DEFAULT_LANG`` is later changed for each sub-site, so
+  content without ``lang`` metadata would be rendered in every
+  (sub-)site.
+- As with the original translations functionality, ``slug`` metadata
+  is used to group translations. It is therefore often convenient to
+  compensate for this by overriding the content URL (which defaults to
+  slug) using the ``url`` and ``save_as`` metadata. You could also
+  give articles e.g. ``name`` metadata and use it in ``ARTICLE_URL =
+  '{name}.html'``.
+
+Development
+===========
+
+- A demo and a test site is in the ``gh-pages`` branch and can be seen
+  at http://smartass101.github.io/pelican-plugins/
diff --git a/pelican-plugins/i18n_subsites/__init__.py b/pelican-plugins/i18n_subsites/__init__.py
new file mode 100644
index 0000000..7dfbde0
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/__init__.py
@@ -0,0 +1 @@
+from .i18n_subsites import *
diff --git a/pelican-plugins/i18n_subsites/i18n_subsites.py b/pelican-plugins/i18n_subsites/i18n_subsites.py
new file mode 100644
index 0000000..dc27799
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/i18n_subsites.py
@@ -0,0 +1,462 @@
+"""i18n_subsites plugin creates i18n-ized subsites of the default site
+
+This plugin is designed for Pelican 3.4 and later
+"""
+
+
+import os
+import six
+import logging
+import posixpath
+
+from copy import copy
+from itertools import chain
+from operator import attrgetter
+try:
+    from collections.abc import OrderedDict
+except ImportError:
+    from collections import OrderedDict
+from contextlib import contextmanager
+from six.moves.urllib.parse import urlparse
+
+import gettext
+import locale
+
+from pelican import signals
+from pelican.generators import ArticlesGenerator, PagesGenerator
+from pelican.settings import configure_settings
+try:
+    from pelican.contents import Draft
+except ImportError:
+    from pelican.contents import Article as Draft
+
+
+# Global vars
+_MAIN_SETTINGS = None     # settings dict of the main Pelican instance
+_MAIN_LANG = None         # lang of the main Pelican instance
+_MAIN_SITEURL = None      # siteurl of the main Pelican instance
+_MAIN_STATIC_FILES = None # list of Static instances the main Pelican instance
+_SUBSITE_QUEUE = {}   # map: lang -> settings overrides
+_SITE_DB = OrderedDict()           # OrderedDict: lang -> siteurl
+_SITES_RELPATH_DB = {}       # map: (lang, base_lang) -> relpath
+# map: generator -> list of removed contents that need interlinking
+_GENERATOR_DB = {}
+_NATIVE_CONTENT_URL_DB = {} # map: source_path -> content in its native lang
+_LOGGER = logging.getLogger(__name__)
+
+
+@contextmanager
+def temporary_locale(temp_locale=None):
+    '''Enable code to run in a context with a temporary locale
+
+    Resets the locale back when exiting context.
+    Can set a temporary locale if provided
+    '''
+    orig_locale = locale.setlocale(locale.LC_ALL)
+    if temp_locale is not None:
+        locale.setlocale(locale.LC_ALL, temp_locale)
+    yield
+    locale.setlocale(locale.LC_ALL, orig_locale)
+
+
+def initialize_dbs(settings):
+    '''Initialize internal DBs using the Pelican settings dict
+
+    This clears the DBs for e.g. autoreload mode to work
+    '''
+    global _MAIN_SETTINGS, _MAIN_SITEURL, _MAIN_LANG, _SUBSITE_QUEUE
+    _MAIN_SETTINGS = settings
+    _MAIN_LANG = settings['DEFAULT_LANG']
+    _MAIN_SITEURL = settings['SITEURL']
+    _SUBSITE_QUEUE = settings.get('I18N_SUBSITES', {}).copy()
+    prepare_site_db_and_overrides()
+    # clear databases in case of autoreload mode
+    _SITES_RELPATH_DB.clear()
+    _NATIVE_CONTENT_URL_DB.clear()
+    _GENERATOR_DB.clear()
+
+
+def prepare_site_db_and_overrides():
+    '''Prepare overrides and create _SITE_DB
+
+    _SITE_DB.keys() need to be ready for filter_translations
+    '''
+    _SITE_DB.clear()
+    _SITE_DB[_MAIN_LANG] = _MAIN_SITEURL
+    # make sure it works for both root-relative and absolute
+    main_siteurl = '/' if _MAIN_SITEURL == '' else _MAIN_SITEURL
+    for lang, overrides in _SUBSITE_QUEUE.items():
+        if 'SITEURL' not in overrides:
+            overrides['SITEURL'] = posixpath.join(main_siteurl, lang)
+        _SITE_DB[lang] = overrides['SITEURL']
+        # default subsite hierarchy
+        if 'OUTPUT_PATH' not in overrides:
+            overrides['OUTPUT_PATH'] = os.path.join(
+                _MAIN_SETTINGS['OUTPUT_PATH'], lang)
+        if 'CACHE_PATH' not in overrides:
+            overrides['CACHE_PATH'] = os.path.join(
+                _MAIN_SETTINGS['CACHE_PATH'], lang)
+        if 'STATIC_PATHS' not in overrides:
+            overrides['STATIC_PATHS'] = []
+        if ('THEME' not in overrides and 'THEME_STATIC_DIR' not in overrides and
+                'THEME_STATIC_PATHS' not in overrides):
+            relpath = relpath_to_site(lang, _MAIN_LANG)
+            overrides['THEME_STATIC_DIR'] = posixpath.join(
+                relpath, _MAIN_SETTINGS['THEME_STATIC_DIR'])
+            overrides['THEME_STATIC_PATHS'] = []
+        # to change what is perceived as translations
+        overrides['DEFAULT_LANG'] = lang
+
+
+def subscribe_filter_to_signals(settings):
+    '''Subscribe content filter to requested signals'''
+    for sig in settings.get('I18N_FILTER_SIGNALS', []):
+        sig.connect(filter_contents_translations)
+
+
+def initialize_plugin(pelican_obj):
+    '''Initialize plugin variables and Pelican settings'''
+    if _MAIN_SETTINGS is None:
+        initialize_dbs(pelican_obj.settings)
+        subscribe_filter_to_signals(pelican_obj.settings)
+
+
+def get_site_path(url):
+    '''Get the path component of an url, excludes siteurl
+
+    also normalizes '' to '/' for relpath to work,
+    otherwise it could be interpreted as a relative filesystem path
+    '''
+    path = urlparse(url).path
+    if path == '':
+        path = '/'
+    return path
+
+
+def relpath_to_site(lang, target_lang):
+    '''Get relative path from siteurl of lang to siteurl of base_lang
+
+    the output is cached in _SITES_RELPATH_DB
+    '''
+    path = _SITES_RELPATH_DB.get((lang, target_lang), None)
+    if path is None:
+        siteurl = _SITE_DB.get(lang, _MAIN_SITEURL)
+        target_siteurl = _SITE_DB.get(target_lang, _MAIN_SITEURL)
+        path = posixpath.relpath(get_site_path(target_siteurl),
+                                 get_site_path(siteurl))
+        _SITES_RELPATH_DB[(lang, target_lang)] = path
+    return path
+
+
+def save_generator(generator):
+    '''Save the generator for later use
+
+    initialize the removed content list
+    '''
+    _GENERATOR_DB[generator] = []
+
+
+def article2draft(article):
+    '''Transform an Article to Draft'''
+    draft = Draft(article._content, article.metadata, article.settings,
+                  article.source_path, article._context)
+    draft.status = 'draft'
+    return draft
+
+
+def page2hidden_page(page):
+    '''Transform a Page to a hidden Page'''
+    page.status = 'hidden'
+    return page
+
+
+class GeneratorInspector(object):
+    '''Inspector of generator instances'''
+
+    generators_info = {
+        ArticlesGenerator: {
+            'translations_lists': ['translations', 'drafts_translations'],
+            'contents_lists': [('articles', 'drafts')],
+            'hiding_func': article2draft,
+            'policy': 'I18N_UNTRANSLATED_ARTICLES',
+        },
+        PagesGenerator: {
+            'translations_lists': ['translations', 'hidden_translations'],
+            'contents_lists': [('pages', 'hidden_pages')],
+            'hiding_func': page2hidden_page,
+            'policy': 'I18N_UNTRANSLATED_PAGES',
+        },
+    }
+
+    def __init__(self, generator):
+        '''Identify the best known class of the generator instance
+
+        The class '''
+        self.generator = generator
+        self.generators_info.update(generator.settings.get(
+            'I18N_GENERATORS_INFO', {}))
+        for cls in generator.__class__.__mro__:
+            if cls in self.generators_info:
+                self.info = self.generators_info[cls]
+                break
+        else:
+            self.info = {}
+
+    def translations_lists(self):
+        '''Iterator over lists of content translations'''
+        return (getattr(self.generator, name) for name in
+                self.info.get('translations_lists', []))
+
+    def contents_list_pairs(self):
+        '''Iterator over pairs of normal and hidden contents'''
+        return (tuple(getattr(self.generator, name) for name in names)
+                for names in self.info.get('contents_lists', []))
+
+    def hiding_function(self):
+        '''Function for transforming content to a hidden version'''
+        hiding_func = self.info.get('hiding_func', lambda x: x)
+        return hiding_func
+
+    def untranslated_policy(self, default):
+        '''Get the policy for untranslated content'''
+        return self.generator.settings.get(self.info.get('policy', None),
+                                           default)
+
+    def all_contents(self):
+        '''Iterator over all contents'''
+        translations_iterator = chain(*self.translations_lists())
+        return chain(translations_iterator,
+                     *(pair[i] for pair in self.contents_list_pairs()
+                       for i in (0, 1)))
+
+
+def filter_contents_translations(generator):
+    '''Filter the content and translations lists of a generator
+
+    Filters out
+        1) translations which will be generated in a different site
+        2) content that is not in the language of the currently
+        generated site but in that of a different site, content in a
+        language which has no site is generated always. The filtering
+        method bay be modified by the respective untranslated policy
+    '''
+    inspector = GeneratorInspector(generator)
+    current_lang = generator.settings['DEFAULT_LANG']
+    langs_with_sites = _SITE_DB.keys()
+    removed_contents = _GENERATOR_DB[generator]
+
+    for translations in inspector.translations_lists():
+        for translation in translations[:]:    # copy to be able to remove
+            if translation.lang in langs_with_sites:
+                translations.remove(translation)
+                removed_contents.append(translation)
+
+    hiding_func = inspector.hiding_function()
+    untrans_policy = inspector.untranslated_policy(default='hide')
+    for (contents, other_contents) in inspector.contents_list_pairs():
+        for content in other_contents: # save any hidden native content first
+            if content.lang == current_lang: # in native lang
+                # save the native URL attr formatted in the current locale
+                _NATIVE_CONTENT_URL_DB[content.source_path] = content.url
+        for content in contents[:]:        # copy for removing in loop
+            if content.lang == current_lang: # in native lang
+                # save the native URL attr formatted in the current locale
+                _NATIVE_CONTENT_URL_DB[content.source_path] = content.url
+            elif content.lang in langs_with_sites and untrans_policy != 'keep':
+                contents.remove(content)
+                if untrans_policy == 'hide':
+                    other_contents.append(hiding_func(content))
+                elif untrans_policy == 'remove':
+                    removed_contents.append(content)
+
+
+def install_templates_translations(generator):
+    '''Install gettext translations in the jinja2.Environment
+
+    Only if the 'jinja2.ext.i18n' jinja2 extension is enabled
+    the translations for the current DEFAULT_LANG are installed.
+    '''
+    if 'JINJA_ENVIRONMENT' in generator.settings: # pelican 3.7+
+        jinja_extensions = generator.settings['JINJA_ENVIRONMENT'].get(
+            'extensions', [])
+    else:
+        jinja_extensions = generator.settings['JINJA_EXTENSIONS']
+
+    if 'jinja2.ext.i18n' in jinja_extensions:
+        domain = generator.settings.get('I18N_GETTEXT_DOMAIN', 'messages')
+        localedir = generator.settings.get('I18N_GETTEXT_LOCALEDIR')
+        if localedir is None:
+            localedir = os.path.join(generator.theme, 'translations')
+        current_lang = generator.settings['DEFAULT_LANG']
+        if current_lang == generator.settings.get('I18N_TEMPLATES_LANG',
+                                                  _MAIN_LANG):
+            translations = gettext.NullTranslations()
+        else:
+            langs = [current_lang]
+            try:
+                translations = gettext.translation(domain, localedir, langs)
+            except (IOError, OSError):
+                _LOGGER.error((
+                    "Cannot find translations for language '{}' in '{}' with "
+                    "domain '{}'. Installing NullTranslations.").format(
+                        langs[0], localedir, domain))
+                translations = gettext.NullTranslations()
+        newstyle = generator.settings.get('I18N_GETTEXT_NEWSTYLE', True)
+        generator.env.install_gettext_translations(translations, newstyle)
+
+
+def add_variables_to_context(generator):
+    '''Adds useful iterable variables to template context'''
+    context = generator.context             # minimize attr lookup
+    context['relpath_to_site'] = relpath_to_site
+    context['main_siteurl'] = _MAIN_SITEURL
+    context['main_lang'] = _MAIN_LANG
+    context['lang_siteurls'] = _SITE_DB
+    current_lang = generator.settings['DEFAULT_LANG']
+    extra_siteurls = _SITE_DB.copy()
+    extra_siteurls.pop(current_lang)
+    context['extra_siteurls'] = extra_siteurls
+
+
+def interlink_translations(content):
+    '''Link content to translations in their main language
+
+    so the URL (including localized month names) of the different subsites
+    will be honored
+    '''
+    lang = content.lang
+    # sort translations by lang
+    content.translations.sort(key=attrgetter('lang'))
+    for translation in content.translations:
+        relpath = relpath_to_site(lang, translation.lang)
+        url = _NATIVE_CONTENT_URL_DB[translation.source_path]
+        translation.override_url = posixpath.join(relpath, url)
+
+
+def interlink_translated_content(generator):
+    '''Make translations link to the native locations
+
+    for generators that may contain translated content
+    '''
+    inspector = GeneratorInspector(generator)
+    for content in inspector.all_contents():
+        interlink_translations(content)
+
+
+def interlink_removed_content(generator):
+    '''For all contents removed from generation queue update interlinks
+
+    link to the native location
+    '''
+    current_lang = generator.settings['DEFAULT_LANG']
+    for content in _GENERATOR_DB[generator]:
+        url = _NATIVE_CONTENT_URL_DB[content.source_path]
+        relpath = relpath_to_site(current_lang, content.lang)
+        content.override_url = posixpath.join(relpath, url)
+
+
+def interlink_static_files(generator):
+    '''Add links to static files in the main site if necessary'''
+    if generator.settings['STATIC_PATHS'] != []:
+        return                               # customized STATIC_PATHS
+    try: # minimize attr lookup
+        static_content = generator.context['static_content']
+    except KeyError:
+        static_content = generator.context['filenames']
+    relpath = relpath_to_site(generator.settings['DEFAULT_LANG'], _MAIN_LANG)
+    for staticfile in _MAIN_STATIC_FILES:
+        if staticfile.get_relative_source_path() not in static_content:
+            staticfile = copy(staticfile) # prevent override in main site
+            staticfile.override_url = posixpath.join(relpath, staticfile.url)
+            try:
+                generator.add_source_path(staticfile, static=True)
+            except TypeError:
+                generator.add_source_path(staticfile)
+
+
+def save_main_static_files(static_generator):
+    '''Save the static files generated for the main site'''
+    global _MAIN_STATIC_FILES
+    # test just for current lang as settings change in autoreload mode
+    if static_generator.settings['DEFAULT_LANG'] == _MAIN_LANG:
+        _MAIN_STATIC_FILES = static_generator.staticfiles
+
+
+def update_generators():
+    '''Update the context of all generators
+
+    Ads useful variables and translations into the template context
+    and interlink translations
+    '''
+    for generator in _GENERATOR_DB.keys():
+        install_templates_translations(generator)
+        add_variables_to_context(generator)
+        interlink_static_files(generator)
+        interlink_removed_content(generator)
+        interlink_translated_content(generator)
+
+
+def get_pelican_cls(settings):
+    '''Get the Pelican class requested in settings'''
+    cls = settings['PELICAN_CLASS']
+    if isinstance(cls, six.string_types):
+        module, cls_name = cls.rsplit('.', 1)
+        module = __import__(module)
+        cls = getattr(module, cls_name)
+    return cls
+
+
+def create_next_subsite(pelican_obj):
+    '''Create the next subsite using the lang-specific config
+
+    If there are no more subsites in the generation queue, update all
+    the generators (interlink translations and removed content, add
+    variables and translations to template context). Otherwise get the
+    language and overrides for next the subsite in the queue and apply
+    overrides.  Then generate the subsite using a PELICAN_CLASS
+    instance and its run method. Finally, restore the previous locale.
+    '''
+    global _MAIN_SETTINGS
+    if len(_SUBSITE_QUEUE) == 0:
+        _LOGGER.debug(
+            'i18n: Updating cross-site links and context of all generators.')
+        update_generators()
+        _MAIN_SETTINGS = None             # to initialize next time
+    else:
+        with temporary_locale():
+            settings = _MAIN_SETTINGS.copy()
+            lang, overrides = _SUBSITE_QUEUE.popitem()
+            settings.update(overrides)
+            settings = configure_settings(settings)      # to set LOCALE, etc.
+            cls = get_pelican_cls(settings)
+
+            new_pelican_obj = cls(settings)
+            _LOGGER.debug(("Generating i18n subsite for language '{}' "
+                           "using class {}").format(lang, cls))
+            new_pelican_obj.run()
+
+
+# map: signal name -> function name
+_SIGNAL_HANDLERS_DB = {
+    'get_generators': initialize_plugin,
+    'article_generator_pretaxonomy': filter_contents_translations,
+    'page_generator_finalized': filter_contents_translations,
+    'get_writer': create_next_subsite,
+    'static_generator_finalized': save_main_static_files,
+    'generator_init': save_generator,
+}
+
+
+def register():
+    '''Register the plugin only if required signals are available'''
+    for sig_name in _SIGNAL_HANDLERS_DB.keys():
+        if not hasattr(signals, sig_name):
+            _LOGGER.error((
+                'The i18n_subsites plugin requires the {} '
+                'signal available for sure in Pelican 3.4.0 and later, '
+                'plugin will not be used.').format(sig_name))
+            return
+
+    for sig_name, handler in _SIGNAL_HANDLERS_DB.items():
+        sig = getattr(signals, sig_name)
+        sig.connect(handler)
diff --git a/pelican-plugins/i18n_subsites/implementing_language_buttons.rst b/pelican-plugins/i18n_subsites/implementing_language_buttons.rst
new file mode 100644
index 0000000..55b7bf3
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/implementing_language_buttons.rst
@@ -0,0 +1,128 @@
+-----------------------------
+Implementing language buttons
+-----------------------------
+
+Each article with translations has translations links, but that's the
+only way to switch between language subsites.
+
+For this reason it is convenient to add language buttons to the top
+menu bar to make it simple to switch between the language subsites on
+all pages.
+
+Example designs
+---------------
+
+Language buttons showing other available languages
+..................................................
+
+The ``extra_siteurls`` dictionary is a mapping of all other (not the
+``DEFAULT_LANG`` of the current (sub-)site) languages to the
+``SITEURL`` of the respective (sub-)sites
+
+.. code-block:: jinja
+
+   <!-- SNIP -->
+   <nav><ul>
+   {% if extra_siteurls %}
+   {% for lang, url in extra_siteurls.items() %}
+   <li><a href="{{ url }}/">{{ lang }}</a></li>
+   {% endfor %}
+   <!-- separator -->
+   <li style="background-color: white; padding: 5px;">&nbsp</li>
+   {% endif %}
+   {% for title, link in MENUITEMS %}
+   <!-- SNIP -->
+
+Notice the slash ``/`` after ``{{ url }}``, this makes sure it works
+with local development when ``SITEURL == ''``.
+
+Language buttons showing all available languages, current is active
+...................................................................
+
+The ``lang_subsites`` dictionary is a mapping of all languages to the
+``SITEURL`` of the respective (sub-)sites. This template sets the
+language of the current (sub-)site as active.
+
+.. code-block:: jinja
+
+   <!-- SNIP -->
+   <nav><ul>
+   {% if lang_siteurls %}
+   {% for lang, url in lang_siteurls.items() %}
+   <li{% if lang == DEFAULT_LANG %} class="active"{% endif %}><a href="{{ url }}/">{{ lang }}</a></li>
+   {% endfor %}
+   <!-- separator -->
+   <li style="background-color: white; padding: 5px;">&nbsp</li>
+   {% endif %}
+   {% for title, link in MENUITEMS %}
+   <!-- SNIP -->
+
+
+Tips and tricks
+---------------
+
+Showing more than language codes
+................................
+
+If you want the language buttons to show e.g. the names of the
+languages or flags [#flags]_, not just the language codes, you can use
+a jinja filter to translate the language codes
+
+
+.. code-block:: python
+
+   languages_lookup = {
+		'en': 'English',
+		'cz': 'Čeština',
+		}
+
+   def lookup_lang_name(lang_code):
+       return languages_lookup[lang_code]
+
+   JINJA_FILTERS = {
+		...
+		'lookup_lang_name': lookup_lang_name,
+		}
+
+And then the link content becomes
+
+.. code-block:: jinja
+
+   <!-- SNIP -->
+   {% for lang, siteurl in lang_siteurls.items() %}
+   <li{% if lang == DEFAULT_LANG %} class="active"{% endif %}><a href="{{ siteurl }}/">{{ lang | lookup_lang_name }}</a></li>
+   {% endfor %}
+   <!-- SNIP -->
+
+
+Changing the order of language buttons
+......................................
+
+Because ``lang_siteurls`` and ``extra_siteurls`` are instances of
+``OrderedDict`` with ``main_lang`` being always the first key, you can
+change the order through a jinja filter.
+
+.. code-block:: python
+
+   def my_ordered_items(ordered_dict):
+       items = list(ordered_dict.items())
+       # swap first and last using tuple unpacking
+       items[0], items[-1] = items[-1], items[0]
+       return items
+
+   JINJA_FILTERS = {
+		...
+		'my_ordered_items': my_ordered_items,
+		}
+
+And then the ``for`` loop line in the template becomes
+
+.. code-block:: jinja
+
+   <!-- SNIP -->
+   {% for lang, siteurl in lang_siteurls | my_ordered_items %}
+   <!-- SNIP -->
+
+
+.. [#flags] Although it may look nice, `w3 discourages it
+            <http://www.w3.org/TR/i18n-html-tech-lang/#ri20040808.173208643>`_.
diff --git a/pelican-plugins/i18n_subsites/localizing_using_jinja2.rst b/pelican-plugins/i18n_subsites/localizing_using_jinja2.rst
new file mode 100644
index 0000000..a28bedd
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/localizing_using_jinja2.rst
@@ -0,0 +1,202 @@
+-----------------------------
+Localizing themes with Jinja2
+-----------------------------
+
+1. Localize templates
+---------------------
+
+To enable the |ext| extension in your templates, you must add it to
+``JINJA_ENVIRONMENT`` in your Pelican configuration
+
+.. code-block:: python
+
+  JINJA_ENVIRONMENT = {
+    'extensions': ['jinja2.ext.i18n', ...]
+  }
+
+Then follow the `Jinja2 templating documentation for the I18N plugin
+<http://jinja.pocoo.org/docs/templates/#i18n>`_ to make your templates
+localizable. This usually means surrounding strings with the ``{%
+trans %}`` directive or using ``gettext()`` in expressions
+
+.. code-block:: jinja
+
+    {% trans %}translatable content{% endtrans %}
+    {{ gettext('a translatable string') }}
+
+For pluralization support, etc. consult the documentation.
+
+To enable `newstyle gettext calls
+<http://jinja.pocoo.org/docs/extensions/#newstyle-gettext>`_ the
+``I18N_GETTEXT_NEWSTYLE`` config variable must be set to ``True``
+(default).
+
+.. |ext| replace:: ``jinja2.ext.i18n``
+
+2. Specify translations location
+--------------------------------
+
+The |ext| extension uses the `Python gettext library
+<http://docs.python.org/library/gettext.html>`_ for translating
+strings.
+
+In your Pelican config you can give the path in which to look for
+translations in the ``I18N_GETTEXT_LOCALEDIR`` variable. If not given,
+it is assumed to be the ``translations`` subfolder in the top folder
+of the theme specified by ``THEME``.
+
+The domain of the translations (the name of each translation file is
+``domain.mo``) is controlled by the ``I18N_GETTEXT_DOMAIN`` config
+variable (defaults to ``messages``).
+
+Example
+.......
+
+With the following in your Pelican settings file
+
+.. code-block:: python
+
+  I18N_GETTEXT_LOCALEDIR = 'some/path/'
+  I18N_GETTEXT_DOMAIN = 'my_domain'
+
+the translation for language 'cz' will be expected to be in
+``some/path/cz/LC_MESSAGES/my_domain.mo``
+
+
+3. Extract translatable strings and translate them
+--------------------------------------------------
+
+There are many ways to extract translatable strings and create
+``gettext`` compatible translations. You can create the ``*.po`` and
+``*.mo`` message catalog files yourself, or you can use some helper
+tool as described in `the Python gettext library tutorial
+<http://docs.python.org/library/gettext.html#internationalizing-your-programs-and-modules>`_.
+
+You of course don't need to provide a translation for the language in
+which the templates are written which is assumed to be the original
+``DEFAULT_LANG``. This can be overridden in the
+``I18N_TEMPLATES_LANG`` variable.
+
+Recommended tool: babel
+.......................
+
+`Babel <http://babel.pocoo.org/>`_ makes it easy to extract
+translatable strings from the localized Jinja2 templates and assists
+with creating translations as documented in this `Jinja2-Babel
+tutorial
+<http://pythonhosted.org/Flask-Babel/#translating-applications>`_
+[#flask]_ on which the following is based.
+
+1. Add babel mapping
+~~~~~~~~~~~~~~~~~~~~
+
+Let's assume that you are localizing a theme in ``themes/my_theme/``
+and that you use the default settings, i.e. the default domain
+``messages`` and will put the translations in the ``translations``
+subdirectory of the theme directory as
+``themes/my_theme/translations/``.
+
+It is up to you where to store babel mappings and translation files
+templates (``*.pot``), but a convenient place is to put them in
+``themes/my_theme/`` and work in that directory. From now on let's
+assume that it will be our current working directory (CWD).
+
+To tell babel to extract translatable strings from the templates
+create a mapping file ``babel.cfg`` with the following line
+
+.. code-block:: cfg
+
+    [jinja2: templates/**.html]
+
+
+2. Extract translatable strings from templates
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Run the following command to create a ``messages.pot`` message catalog
+template file from extracted translatable strings
+
+.. code-block:: bash
+
+    pybabel extract --mapping babel.cfg --output messages.pot ./
+
+
+3. Initialize message catalogs
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you want to translate the template to language ``lang``, run the
+following command to create a message catalog
+``translations/lang/LC_MESSAGES/messages.po`` using the template
+``messages.pot``
+
+.. code-block:: bash
+
+    pybabel init --input-file messages.pot --output-dir translations/ --locale lang --domain messages
+
+babel expects ``lang`` to be a valid locale identifier, so if e.g. you
+are translating for language ``cz`` but the corresponding locale is
+``cs``, you have to use the locale identifier. Nevertheless, the
+gettext infrastructure should later correctly find the locale for a
+given language.
+
+4. Fill the message catalogs
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The message catalog files format is quite intuitive, it is fully
+documented in the `GNU gettext manual
+<http://www.gnu.org/software/gettext/manual/gettext.html#PO-Files>`_. Essentially,
+you fill in the ``msgstr`` strings
+
+
+.. code-block:: po
+
+    msgid "just a simple string"
+    msgstr "jenom jednoduchý řetězec"
+
+    msgid ""
+    "some multiline string"
+    "looks like this"
+    msgstr ""
+    "nějaký více řádkový řetězec"
+    "vypadá takto"
+
+You might also want to remove ``#,fuzzy`` flags once the translation
+is complete and reviewed to show that it can be compiled.
+
+5. Compile the message catalogs
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The message catalogs must be compiled into binary format using this
+command
+
+.. code-block:: bash
+
+    pybabel compile --directory translations/ --domain messages
+
+This command might complain about "fuzzy" translations, which means
+you should review the translations and once done, remove the fuzzy
+flag line.
+
+(6.) Update the catalogs when templates change
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you add any translatable patterns into your templates, you have to
+update your message catalogs too.  First you extract a new message
+catalog template as described in the 2. step. Then you run the
+following command [#pybabel_error]_
+
+.. code-block:: bash
+
+   pybabel update --input-file messages.pot --output-dir translations/ --domain messages
+
+This will merge the new patterns with the old ones. Once you review
+and fill them, you have to recompile them as described in the 5. step.
+
+.. [#flask] Although the tutorial is focused on Flask-based web
+            applications, the linked translation tutorial is not
+            Flask-specific.
+.. [#pybabel_error] If you get an error ``TypeError: must be str, not
+                    bytes`` with Python 3.3, it is likely you are
+                    suffering from this `bug
+                    <https://github.com/mitsuhiko/flask-babel/issues/43>`_.
+                    Until the fix is released, you can use babel with
+                    Python 2.7.
diff --git a/pelican-plugins/i18n_subsites/test_data/__init__.py b/pelican-plugins/i18n_subsites/test_data/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/i18n_subsites/test_data/content/images/img.png b/pelican-plugins/i18n_subsites/test_data/content/images/img.png
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-cz.rst b/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-cz.rst
new file mode 100644
index 0000000..c282faa
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-cz.rst
@@ -0,0 +1,7 @@
+404 stránka
+===========
+:slug: 404
+:lang: cz
+:status: hidden
+
+Jednoduchá 404 stránka.
diff --git a/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-de.rst b/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-de.rst
new file mode 100644
index 0000000..d8410a1
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-de.rst
@@ -0,0 +1,7 @@
+Eine 404 Seite
+==============
+:slug: 404
+:lang: de
+:status: hidden
+
+Eine einfache 404 Seite.
diff --git a/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-en.rst b/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-en.rst
new file mode 100644
index 0000000..74a97d7
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/content/pages/hidden-page-en.rst
@@ -0,0 +1,7 @@
+A 404 page
+==========
+:slug: 404
+:lang: en
+:status: hidden
+
+A simple 404 page.
diff --git a/pelican-plugins/i18n_subsites/test_data/content/pages/untranslated-page.rst b/pelican-plugins/i18n_subsites/test_data/content/pages/untranslated-page.rst
new file mode 100644
index 0000000..ae4c2b8
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/content/pages/untranslated-page.rst
@@ -0,0 +1,5 @@
+Untranslated page
+=================
+:lang: en
+
+This page has no translation.
diff --git a/pelican-plugins/i18n_subsites/test_data/content/translated_article-cz.rst b/pelican-plugins/i18n_subsites/test_data/content/translated_article-cz.rst
new file mode 100644
index 0000000..555a69d
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/content/translated_article-cz.rst
@@ -0,0 +1,8 @@
+Přeložený článek
+================
+:slug: translated-article
+:lang: cz
+:date: 2014-09-15
+
+Jednoduchý článek s překlady.
+Zde je odkaz na `nějaký obrázek <{filename}/images/img.png>`_.
diff --git a/pelican-plugins/i18n_subsites/test_data/content/translated_article-de.rst b/pelican-plugins/i18n_subsites/test_data/content/translated_article-de.rst
new file mode 100644
index 0000000..01bf565
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/content/translated_article-de.rst
@@ -0,0 +1,8 @@
+Ein übersetzter Artikel
+=======================
+:slug: translated-article
+:lang: de
+:date: 2014-09-14
+
+Ein einfacher Artikel mit einer Ãœbersetzung.
+Hier ist ein Link zur `einigem Bild <{filename}/images/img.png>`_.
diff --git a/pelican-plugins/i18n_subsites/test_data/content/translated_article-en.rst b/pelican-plugins/i18n_subsites/test_data/content/translated_article-en.rst
new file mode 100644
index 0000000..d7f5dad
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/content/translated_article-en.rst
@@ -0,0 +1,8 @@
+A translated article
+====================
+:slug: translated-article
+:lang: en
+:date: 2014-09-13
+
+A simple article with a translation.
+Here is a link to `some image <{filename}/images/img.png>`_.
diff --git a/pelican-plugins/i18n_subsites/test_data/content/untranslated_article-en.rst b/pelican-plugins/i18n_subsites/test_data/content/untranslated_article-en.rst
new file mode 100644
index 0000000..867ae5d
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/content/untranslated_article-en.rst
@@ -0,0 +1,9 @@
+An untranslated article
+=======================
+:date: 2014-07-14
+:lang: en
+
+An article without a translation.
+Here is a link to an `untranslated page`_
+
+.. _`untranslated page`: {filename}/pages/untranslated-page.rst
diff --git a/pelican-plugins/i18n_subsites/test_data/localized_theme/babel.cfg b/pelican-plugins/i18n_subsites/test_data/localized_theme/babel.cfg
new file mode 100644
index 0000000..4406732
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/localized_theme/babel.cfg
@@ -0,0 +1,2 @@
+[jinja2: templates/**.html]
+
diff --git a/pelican-plugins/i18n_subsites/test_data/localized_theme/messages.pot b/pelican-plugins/i18n_subsites/test_data/localized_theme/messages.pot
new file mode 100644
index 0000000..578917f
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/localized_theme/messages.pot
@@ -0,0 +1,23 @@
+# Translations template for PROJECT.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-07-13 12:25+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+
+#: templates/base.html:3
+msgid "Welcome to our"
+msgstr ""
+
diff --git a/pelican-plugins/i18n_subsites/test_data/localized_theme/static/style.css b/pelican-plugins/i18n_subsites/test_data/localized_theme/static/style.css
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/i18n_subsites/test_data/localized_theme/templates/base.html b/pelican-plugins/i18n_subsites/test_data/localized_theme/templates/base.html
new file mode 100644
index 0000000..a24eb1d
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/localized_theme/templates/base.html
@@ -0,0 +1,7 @@
+{% extends "!simple/base.html" %}
+
+{% block title %}{% trans %}Welcome to our{% endtrans %} {{ SITENAME }}{% endblock %}
+{% block head %}
+{{ super() }}
+<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/style.css" />
+{% endblock %}
diff --git a/pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.mo b/pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000000000000000000000000000000000000..239010221fe789ec007296b700578fd5114ab279
GIT binary patch
literal 486
zcmZvYO-{ow5QPI`l?4lyh{do2flCtpD$^iJo1&tGR%w8>+YZ6t*p=-dV8Jao6?fn)
zxO4$XjP%KGq$khJ`&?Uj_gpPIHXOV2=2x|xUUkHdw<XU@-MjAiaN4^?F;NwQRiJ9^
z4Yhi}i6#9hxj}8Xk`#vd;4<kHaFgVt{@}{bai+8-nJM{{oY$oxg`$vT?S6XJ?soHJ
zH1daof^;-8>wX|zW|2Y^ga;%zCgDDW5seOaf+z@_k>vQq=ac^T9W8t*GnN#ZNh6q5
znnLe7P2sAYCD8ga`qWREENfOGDUekZrU<PxJrlg4bb0CzMXi}2J*6u{LC(Hg6Gtbo
zknxs;%^1RMKkH}7PYPip@H<Lclx~lgnLEhhv)!8s#^ni2?wK}d<J#Vl=8tc_?;UEA
y$cdVASyE_@x%DqlqIRLU_+BWSvoQ(?8~eU@%Y}GURfQ5p9O1RrP)mavwf6<Wv5AEM

literal 0
HcmV?d00001

diff --git a/pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.po b/pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..2eb4efb
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/localized_theme/translations/de/LC_MESSAGES/messages.po
@@ -0,0 +1,23 @@
+# German translations for PROJECT.
+# Copyright (C) 2014 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2014-07-13 12:25+0200\n"
+"PO-Revision-Date: 2014-07-13 12:26+0200\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: de <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+
+#: templates/base.html:3
+msgid "Welcome to our"
+msgstr "Willkommen Sie zur unserer"
+
diff --git a/pelican-plugins/i18n_subsites/test_data/pelicanconf.py b/pelican-plugins/i18n_subsites/test_data/pelicanconf.py
new file mode 100644
index 0000000..55018f2
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_data/pelicanconf.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*- #
+from __future__ import unicode_literals
+
+AUTHOR = 'The Tester'
+SITENAME = 'Testing site'
+SITEURL = 'http://example.com/test'
+
+# to make the test suite portable
+TIMEZONE = 'UTC'
+
+DEFAULT_LANG = 'en'
+LOCALE = 'en_US.UTF-8'
+
+# Generate only one feed
+FEED_ALL_ATOM = 'feeds_all.atom.xml'
+CATEGORY_FEED_ATOM = None
+TRANSLATION_FEED_ATOM = None
+AUTHOR_FEED_ATOM = None
+AUTHOR_FEED_RSS = None
+
+# Disable unnecessary pages
+CATEGORY_SAVE_AS = ''
+TAG_SAVE_AS = ''
+AUTHOR_SAVE_AS = ''
+ARCHIVES_SAVE_AS = ''
+AUTHORS_SAVE_AS = ''
+CATEGORIES_SAVE_AS = ''
+TAGS_SAVE_AS = ''
+
+PLUGIN_PATHS = ['../../']
+PLUGINS = ['i18n_subsites']
+
+THEME = 'localized_theme'
+JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
+
+from blinker import signal
+tmpsig = signal('tmpsig')
+I18N_FILTER_SIGNALS = [tmpsig]
+
+I18N_SUBSITES = {
+    'de': {
+        'SITENAME': 'Testseite',
+        'AUTHOR': 'Der Tester',
+        'LOCALE': 'de_DE.UTF-8',
+        },
+    'cz': {
+        'SITENAME': 'Testovací stránka',
+        'AUTHOR': 'Test Testovič',
+        'I18N_UNTRANSLATED_PAGES': 'remove',
+        'I18N_UNTRANSLATED_ARTICLES': 'keep',
+        },
+    }
diff --git a/pelican-plugins/i18n_subsites/test_i18n_subsites.py b/pelican-plugins/i18n_subsites/test_i18n_subsites.py
new file mode 100644
index 0000000..83d0cb9
--- /dev/null
+++ b/pelican-plugins/i18n_subsites/test_i18n_subsites.py
@@ -0,0 +1,139 @@
+'''Unit tests for the i18n_subsites plugin'''
+
+import os
+import locale
+import unittest
+import subprocess
+from tempfile import mkdtemp
+from shutil import rmtree
+
+from . import i18n_subsites as i18ns
+from pelican import Pelican
+from pelican.tests.support import get_settings
+from pelican.settings import read_settings
+
+
+class TestTemporaryLocale(unittest.TestCase):
+    '''Test the temporary locale context manager'''
+
+    def test_locale_restored(self):
+        '''Test that the locale is restored after exiting context'''
+        orig_locale = locale.setlocale(locale.LC_ALL)
+        with i18ns.temporary_locale():
+            locale.setlocale(locale.LC_ALL, 'C')
+            self.assertEqual(locale.setlocale(locale.LC_ALL), 'C')
+        self.assertEqual(locale.setlocale(locale.LC_ALL), orig_locale)
+
+    def test_temp_locale_set(self):
+        '''Test that the temporary locale is set'''
+        with i18ns.temporary_locale('C'):
+            self.assertEqual(locale.setlocale(locale.LC_ALL), 'C')
+
+
+class TestSettingsManipulation(unittest.TestCase):
+    '''Test operations on settings dict'''
+
+    def setUp(self):
+        '''Prepare default settings'''
+        self.settings = get_settings()
+
+    def test_get_pelican_cls_class(self):
+        '''Test that we get class given as an object'''
+        self.settings['PELICAN_CLASS'] = object
+        cls = i18ns.get_pelican_cls(self.settings)
+        self.assertIs(cls, object)
+        
+    def test_get_pelican_cls_str(self):
+        '''Test that we get correct class given by string'''
+        cls = i18ns.get_pelican_cls(self.settings)
+        self.assertIs(cls, Pelican)
+        
+
+class TestSitesRelpath(unittest.TestCase):
+    '''Test relative path between sites generation'''
+
+    def setUp(self):
+        '''Generate some sample siteurls'''
+        self.siteurl = 'http://example.com'
+        i18ns._SITE_DB['en'] = self.siteurl
+        i18ns._SITE_DB['de'] = self.siteurl + '/de'
+
+    def tearDown(self):
+        '''Remove sites from db'''
+        i18ns._SITE_DB.clear()
+
+    def test_get_site_path(self):
+        '''Test getting the path within a site'''
+        self.assertEqual(i18ns.get_site_path(self.siteurl), '/')
+        self.assertEqual(i18ns.get_site_path(self.siteurl + '/de'), '/de')
+
+    def test_relpath_to_site(self):
+        '''Test getting relative paths between sites'''
+        self.assertEqual(i18ns.relpath_to_site('en', 'de'), 'de')
+        self.assertEqual(i18ns.relpath_to_site('de', 'en'), '..')
+
+        
+class TestRegistration(unittest.TestCase):
+    '''Test plugin registration'''
+
+    def test_return_on_missing_signal(self):
+        '''Test return on missing required signal'''
+        i18ns._SIGNAL_HANDLERS_DB['tmp_sig'] = None
+        i18ns.register()
+        self.assertNotIn(id(i18ns.save_generator),
+                         i18ns.signals.generator_init.receivers)
+
+    def test_registration(self):
+        '''Test registration of all signal handlers'''
+        i18ns.register()
+        for sig_name, handler in i18ns._SIGNAL_HANDLERS_DB.items():
+            sig = getattr(i18ns.signals, sig_name)
+            self.assertIn(id(handler), sig.receivers)
+            # clean up
+            sig.disconnect(handler)
+        
+
+class TestFullRun(unittest.TestCase):
+    '''Test running Pelican with the Plugin'''
+
+    def setUp(self):
+        '''Create temporary output and cache folders'''
+        self.temp_path = mkdtemp(prefix='pelicantests.')
+        self.temp_cache = mkdtemp(prefix='pelican_cache.')
+
+    def tearDown(self):
+        '''Remove output and cache folders'''
+        rmtree(self.temp_path)
+        rmtree(self.temp_cache)
+
+    def test_sites_generation(self):
+        '''Test generation of sites with the plugin
+
+        Compare with recorded output via ``git diff``.
+        To generate output for comparison run the command
+        ``pelican -o test_data/output -s test_data/pelicanconf.py \
+        test_data/content``
+        Remember to remove the output/ folder before that.
+        '''
+        base_path = os.path.dirname(os.path.abspath(__file__))
+        base_path = os.path.join(base_path, 'test_data')
+        content_path = os.path.join(base_path, 'content')
+        output_path = os.path.join(base_path, 'output')
+        settings_path = os.path.join(base_path, 'pelicanconf.py')
+        settings = read_settings(path=settings_path, override={
+            'PATH': content_path,
+            'OUTPUT_PATH': self.temp_path,
+            'CACHE_PATH': self.temp_cache,
+            'PLUGINS': [i18ns],
+            }
+        )
+        pelican = Pelican(settings)
+        pelican.run()
+
+        # compare output
+        out, err = subprocess.Popen(
+            ['git', 'diff', '--no-ext-diff', '--exit-code', '-w', output_path,
+             self.temp_path], env={'PAGER': ''},
+            stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
+        self.assertFalse(out, 'non-empty `diff` stdout:\n{}'.format(out))
+        self.assertFalse(err, 'non-empty `diff` stderr:\n{}'.format(err))
diff --git a/pelican-plugins/ical/Readme.rst b/pelican-plugins/ical/Readme.rst
new file mode 100644
index 0000000..e8897d1
--- /dev/null
+++ b/pelican-plugins/ical/Readme.rst
@@ -0,0 +1,39 @@
+ical
+----
+
+This plugin looks for and parses an ``.ics`` file if it is defined in a given
+page's ``calendar`` metadata. One calendar can be defined per page.
+
+Dependencies
+------------
+
+This plugin depends on the ``icalendar`` package, which can be installed via
+pip::
+
+	pip install icalendar
+
+Usage
+-----
+
+For a reST-formatted page, include the following line in the metadata::
+
+    :calendar: /path/to/your/ics/file
+
+For Markdown, include the following line in the page metadata::
+
+    Calendar: /path/to/your/ics/file
+
+Following is some example code that can be added to your theme's ``page.html``
+template in order to display the calendar::
+
+    {% if page.calendar %}
+    <dl>
+        {% for vevent in events[page.slug] %}
+            <dt>{{ vevent.summary }}</dt>
+            <dd>{{ vevent.description|replace('\n\n', '<br>') }}</dd>
+            <dd>{{ vevent.dtstart }}</dd>
+            <dd>{{ vevent.dtend }}</dd>
+            <dd class="footer"><a href="{{ vevent.url }}">See more</a></dd>
+        {% endfor %}
+    </dl>
+    {% endif %}
diff --git a/pelican-plugins/ical/__init__.py b/pelican-plugins/ical/__init__.py
new file mode 100644
index 0000000..8a1352a
--- /dev/null
+++ b/pelican-plugins/ical/__init__.py
@@ -0,0 +1 @@
+from .ical import *
diff --git a/pelican-plugins/ical/ical.py b/pelican-plugins/ical/ical.py
new file mode 100644
index 0000000..b6034a9
--- /dev/null
+++ b/pelican-plugins/ical/ical.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+"""
+ical plugin for Pelican
+=======================
+
+This plugin looks for and parses an .ics file if it is defined in a given
+page's :calendar: metadata. One calendar can be defined per page.
+
+"""
+
+from icalendar import Calendar, Event
+from pelican import signals , utils
+import pytz
+import datetime
+import os.path
+
+def init_cal(generator):
+    # initialisation of the calendar dictionary
+    # you can add one calendar per page
+    calDict = {}
+    generator.context['events'] = calDict
+
+def add_ical(generator, metadata):
+    # check if a calendar is here
+    if 'calendar' in metadata.keys():
+        summ = []
+        path = metadata['calendar']
+        if not os.path.isabs(path):
+            path = os.path.abspath(metadata['calendar'])
+        cal = Calendar.from_ical(open(path,'rb').read())
+        for element in cal.walk():
+            eventdict = {}
+            if element.name == "VEVENT":
+                if element.get('summary') != None:
+                    eventdict['summary'] = element.get('summary')
+                if element.get('description') != None:
+                    eventdict['description'] = element.get('description')
+                if element.get('url') != None:
+                    eventdict['url'] = element.get('url')
+                if element.get('dtstart') != None:
+                    eventdict['dtstart'] = element.get('dtstart').dt
+                if element.get('dtend') != None:
+                    eventdict['dtend'] = element.get('dtend').dt
+                summ.append(eventdict)
+        # the id of the calendar is the slugified name of the page
+        calId = utils.slugify(metadata['title'])
+        generator.context['events'][calId] = summ
+
+
+def register():
+    signals.page_generator_init.connect(init_cal)
+    signals.page_generator_context.connect(add_ical)
diff --git a/pelican-plugins/ical/requirements.txt b/pelican-plugins/ical/requirements.txt
new file mode 100755
index 0000000..44466d5
--- /dev/null
+++ b/pelican-plugins/ical/requirements.txt
@@ -0,0 +1 @@
+icalendar
\ No newline at end of file
diff --git a/pelican-plugins/interlinks/__init__.py b/pelican-plugins/interlinks/__init__.py
new file mode 100644
index 0000000..397894e
--- /dev/null
+++ b/pelican-plugins/interlinks/__init__.py
@@ -0,0 +1 @@
+from .interlinks import *
diff --git a/pelican-plugins/interlinks/interlinks.py b/pelican-plugins/interlinks/interlinks.py
new file mode 100644
index 0000000..82d7f0a
--- /dev/null
+++ b/pelican-plugins/interlinks/interlinks.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+"""
+Interlinks
+=========================
+This plugin allows you to include "interwiki" or shortcuts links into the blog,
+as keyword>rest_of_url
+"""
+import re
+
+from pelican import signals
+
+from bs4 import BeautifulSoup
+from bs4 import SoupStrainer
+
+interlinks = {}
+
+
+def getSettings(generator):
+
+    global interlinks
+
+    interlinks = {'this': generator.settings['SITEURL']+"/"}
+    if 'INTERLINKS' in generator.settings:
+        for key, value in generator.settings['INTERLINKS'].items():
+            interlinks[key] = value
+
+
+def parse_links(instance):
+
+    if instance._content is not None:
+        content = instance._content
+
+        if '<a' in content:
+            text = BeautifulSoup(
+                content, "html.parser", parse_only=SoupStrainer("a"))
+            for link in text.find_all("a", href=re.compile("(.+?)>")):
+                old_tag = link.decode()
+                url = link.get('href')
+                m = re.search(r"(.+?)>", url).groups()
+                name = m[0]
+                if name in interlinks:
+                    hi = url.replace(name + ">", interlinks[name])
+                    link['href'] = hi
+
+                content = content.replace(old_tag, link.decode())
+
+        if '<img' in content:
+            text = BeautifulSoup(
+                content, "html.parser", parse_only=SoupStrainer("img"))
+            for img in text.find_all('img', src=re.compile("(.+?)>")):
+                old_tag = img.decode()
+                url = img.get('src')
+                m = re.search(r"(.+?)>", url).groups()
+                name = m[0]
+                if name in interlinks:
+                    hi = url.replace(name+">", interlinks[name])
+                    img['src'] = hi
+
+                # generated output has no trailing slash; match for replacement
+                repaired_old_tag = old_tag.replace("/>", ">")
+
+                content = content.replace(
+                    repaired_old_tag,
+                    img.decode()
+                )
+
+
+        instance._content = content
+
+
+def register():
+    signals.generator_init.connect(getSettings)
+    signals.content_object_init.connect(parse_links)
diff --git a/pelican-plugins/interlinks/readme.md b/pelican-plugins/interlinks/readme.md
new file mode 100644
index 0000000..1ee2d2e
--- /dev/null
+++ b/pelican-plugins/interlinks/readme.md
@@ -0,0 +1,50 @@
+Interlinks
+==========
+
+This plugin lets you add frequently-used URLs to your markup using short keywords.
+Short URL format is `keyword>rest-of-url` where `keyword` is defined in your Pelican
+settings file. This is subsequently replaced with the actual URL in the generated
+HTML output.
+
+
+Requirements
+------------
+
+This plugin requires BeautifulSoup:
+
+	pip install beautifulsoup4
+
+Installation
+------------
+
+Put the plugin into your plugins folder, then add Interlinks in your settings file:
+
+	PLUGINS = ["interlinks"]
+
+Usage
+-----
+
+Interlinks are specified in your settings file. Here is an example:
+
+	INTERLINKS = {
+	    'wikipedia_en': 'http://en.wikipedia.org/wiki/',
+	    'wikipedia_es': 'http://es.wikipedia.org/wiki/',
+	    'ddg': 'https://duckduckgo.com/?q='
+	}
+
+There's also a default key, `this`, that is mapped to the `SITEURL` variable.
+
+Then, in your content, you just create a normal link but add the `keyword>` syntax as the URL scheme, followed by the rest of the URL.
+
+Example (Markdown syntax)
+-------------------------
+
+	[Normal boring link](http://www.example.com). But this is a [cool link](this>) that links to this site.
+
+	Search in [Wikipedia](wikipedia_en>python), ([here](wikipedia_es>python) in Spanish). You can also [search](ddg>python) it.
+
+All the above will be rendered as:
+
+	<p><a href="http://www.example.com">Normal boring link</a>. But this is a <a href="http://[yoursite]/index.html">cool link</a> that links to this site.</p>
+
+	<p>Search in <a href="http://en.wikipedia.org/wiki/python">Wikipedia</a>, (<a href="http://es.wikipedia.org/wiki/python">here</a> in Spanish). You can also <a href="https://duckduckgo.com/?q=python">search</a> it.</p>
diff --git a/pelican-plugins/interlinks/test_data/testme.md b/pelican-plugins/interlinks/test_data/testme.md
new file mode 100644
index 0000000..332deb6
--- /dev/null
+++ b/pelican-plugins/interlinks/test_data/testme.md
@@ -0,0 +1,9 @@
+Title: Testing
+Date: 3000-07-09
+Slug: plugin-test
+
+Testeando un poco la cosa
+
+[Normal boring link](http://www.example.com). But this is a [cool link](this>) that links to this site.
+
+Search in [Wikipedia](wikipedia_en>python), ([here](wikipedia_es>python) in spanish). Also can [search](ddg>python) it.
diff --git a/pelican-plugins/jinja2content/README.md b/pelican-plugins/jinja2content/README.md
new file mode 100644
index 0000000..aa49f71
--- /dev/null
+++ b/pelican-plugins/jinja2content/README.md
@@ -0,0 +1,116 @@
+# Jinja2 Content
+
+**NOTE: [This plugin has been moved to its own repository](https://github.com/pelican-plugins/jinja2content). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.**
+
+This plugin allows the use of Jinja2 directives inside your pelican articles and pages.
+
+In this approach, your content is *first* rendered by the Jinja template engine. The result
+is then passed to the normal pelican reader as usual. There are two consequences for usage.
+First, this means the Pelican context and jinja variables [usually
+visible](http://docs.getpelican.com/en/stable/themes.html#templates-and-variables) to your
+article or page template are _not_ available at rendering time. Second, it means that if any
+of your input content could be parsed as Jinja directives, they will be rendered as such.
+This is unlikely to happen accidentally, but it's good to be aware of.
+
+All input that needs Pelican variables such as `article`, `category`, etc., should be put
+inside your *theme's* templating.  As such, the main use of this plugin is to automatically
+generate parts of your articles or pages.
+
+Markdown, reStructured Text, and HTML input are all supported. Note that by enabling this
+plugin, all input files of these file types will be preprocessed with the Jinja renderer.
+It is not currently supported to selectively enable or disable `jinja2content` for only some of
+these input sources.
+
+
+## Example
+
+One usage is to embed repetitive HTML in Markdown articles. Since Markdown doesn't allow
+customization of layout, if anything more sophisticated than just displaying an image is
+necessary, one is forced to embed HTML in Markdown articles (i.e. hardcode `<div>` tags and
+then select them from the theme's CSS).  However, with `jinja2content`, one can do the
+following.
+
+File `my-cool-article.md`
+```
+# My cool title
+
+My cool content.
+
+{% from 'img_desc.html' import img_desc %}
+{{ img_desc("/images/my-cool-image.png",
+    "This is a cool tooltip",
+    "This is a very cool image.") }}
+```
+
+Where file `img_desc.html` contains:
+```
+{% macro img_desc(src, title='', desc='') -%}
+<div class="img-desc">
+  <p><img src="{{ src }}" title="{{ title }}"></p>
+  {% if desc %}
+  <p><em>{{ desc }}</em></p>
+  {% endif %}
+</div>
+{%- endmacro %}
+```
+
+The result will be:
+```
+# My cool title
+
+My cool content.
+
+<div class="img-desc">
+  <p><img src="/images/my-cool-image.png" title="This is a cool tooltip"></p>
+  <p><em>This is a very cool image.</em></p>
+</div>
+```
+
+After this, the Markdown will be rendered into HTML and only then the
+theme's templates will be applied.
+
+In this way, Markdown articles have more control over the content that is
+passed to the theme's `article.html` template, without the need to pollute
+the Markdown with HTML.  Another added benefit is that now `img_desc` is
+reusable across articles.
+
+Note that templates rendered with `jinja2content` can contain Markdown as
+well as HTML, since they are added before the Markdown content is converted
+to html.
+
+
+## Usage
+
+Enable the `jinja2content` plugin in your project in [the usual
+manner](http://docs.getpelican.com/en/stable/plugins.html#how-to-use-plugins).
+
+```
+PLUGINS = [
+    # ...
+    "jinja2content",
+]
+```
+
+
+## Configuration
+
+This plugin accepts the setting `JINJA2CONTENT_TEMPLATES` which should be set to a list of
+paths relative to `PATH` (the main content directory, usually `"content"`).  `jinja2content`
+will look for templates inside these directories, in order.  If they are not found in any,
+the theme's templates folder is used.
+
+
+## Extension
+
+This plugin is structured such that it should be quite easy to extend readers for other file
+types to also render Jinja template logic. It should be sufficient to create a new reader
+class that inherents from the `JinjaContentMixin` and then your desired reader class. See
+class definitions in the source for examples.
+
+
+## Acknowledgements
+
+- Created by @Leonardo.
+- Updated to support rst and HTML input by @micahjsmith.
+- Replaces [pelican-jinj2content](https://github.com/joachimneu/pelican-jinja2content/tree/f73ef9b1ef1ee1f56c80757b4190b53f8cd607d1),
+which had become unmaintained.
diff --git a/pelican-plugins/jinja2content/__init__.py b/pelican-plugins/jinja2content/__init__.py
new file mode 100644
index 0000000..de025c4
--- /dev/null
+++ b/pelican-plugins/jinja2content/__init__.py
@@ -0,0 +1 @@
+from .jinja2content import *
diff --git a/pelican-plugins/jinja2content/jinja2content.py b/pelican-plugins/jinja2content/jinja2content.py
new file mode 100644
index 0000000..802b49f
--- /dev/null
+++ b/pelican-plugins/jinja2content/jinja2content.py
@@ -0,0 +1,69 @@
+"""
+jinja2content.py
+----------------
+
+Pelican plugin that processes Markdown files as jinja templates.
+
+"""
+
+from jinja2 import Environment, FileSystemLoader, ChoiceLoader
+import os
+from pelican import signals
+from pelican.readers import MarkdownReader, HTMLReader, RstReader
+from pelican.utils import pelican_open
+from tempfile import NamedTemporaryFile
+
+class JinjaContentMixin:
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+
+        # will look first in 'JINJA2CONTENT_TEMPLATES', by default the
+        # content root path, then in the theme's templates
+        local_dirs = self.settings.get('JINJA2CONTENT_TEMPLATES', ['.'])
+        local_dirs = [os.path.join(self.settings['PATH'], folder)
+                      for folder in local_dirs]
+        theme_dir = os.path.join(self.settings['THEME'], 'templates')
+
+        loaders = [FileSystemLoader(_dir) for _dir
+                   in local_dirs + [theme_dir]]
+        if 'JINJA_ENVIRONMENT' in self.settings: # pelican 3.7
+            jinja_environment = self.settings['JINJA_ENVIRONMENT']
+        else:
+            jinja_environment = {
+                'trim_blocks': True,
+                'lstrip_blocks': True,
+                'extensions': self.settings['JINJA_EXTENSIONS']
+            }
+        self.env = Environment(
+            loader=ChoiceLoader(loaders),
+            **jinja_environment)
+
+
+    def read(self, source_path):
+        with pelican_open(source_path) as text:
+            text = self.env.from_string(text).render()
+
+        with NamedTemporaryFile(delete=False) as f:
+            f.write(text.encode())
+            f.close()
+            content, metadata = super().read(f.name)
+            os.unlink(f.name)
+            return content, metadata
+
+
+class JinjaMarkdownReader(JinjaContentMixin, MarkdownReader):
+    pass
+
+class JinjaRstReader(JinjaContentMixin, RstReader):
+    pass
+
+class JinjaHTMLReader(JinjaContentMixin, HTMLReader):
+    pass
+
+def add_reader(readers):
+    for Reader in [JinjaMarkdownReader, JinjaRstReader, JinjaHTMLReader]:
+        for ext in Reader.file_extensions:
+            readers.reader_classes[ext] = Reader
+
+def register():
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/jpeg_reader/.gitignore b/pelican-plugins/jpeg_reader/.gitignore
new file mode 100644
index 0000000..16d3c4d
--- /dev/null
+++ b/pelican-plugins/jpeg_reader/.gitignore
@@ -0,0 +1 @@
+.cache
diff --git a/pelican-plugins/jpeg_reader/README.md b/pelican-plugins/jpeg_reader/README.md
new file mode 100644
index 0000000..419f300
--- /dev/null
+++ b/pelican-plugins/jpeg_reader/README.md
@@ -0,0 +1,45 @@
+### Pelican JPEG Reader.
+
+Original author: [Mitchell Currie](https://github.com/mitchins)
+
+##### Requirements:
+
+* Python3
+* Pelican
+* Pillow library (PIL for python3)
+* Exiv2 binary accessible by $PATH
+
+To avoid undesired creation of content, the specific extension must be `jpeg_article`, i.e. "myPhoto.jpeg_article", it's a regular JPEG image, but this avoids your other JPEG images getting picked up. It can work for pages or blogs, and determines based on whether it's `content/blog` or `content/pages` (or whatever you use for content).
+
+#### Most relevant EXIF/IPTC flags from Exiv2 that are used
+
+|  Page/Article Field | Exiv2 Key  |  Description |
+|---|---|---|
+| title  | `Exif.Image.ImageDescription`  |  Defaults to 'Untitled' |
+| author  | `Exif.Image.Artist`  |  Default to Unknown. Currently Scalar |
+| date  |  `Exif.Photo.DateTimeOriginal` |  Undefined behaviour if not present as required |
+|  slug |  `Iptc.Application2.Headline` |  Defaults to title's value |
+|  body |  `Exif.Photo.UserComment` |  This goes under image in page/article, blank default |
+|  summary |  `Iptc.Application2.Caption` |  Used for article index, defaults to first 140 characters of the body |
+|  category |  `Iptc.Application2.SuppCategory` |  Specifies the category of page/article if `USE_FOLDER_AS_CATEGORY` not set  |
+|  template |  `Iptc.Application2.ObjectName` |  If specified will set the template metadata property to tell pelican where to look  |
+|  tags |  `Iptc.Application2.Keywords` |  For each entry found with this key, a tag is created with the value of the entry |
+|  `metadata['exiv2']` | ***Everything***|  All exiv2 fields from the image are shoved into the metadata dictionary of the item, under `exiv2` key for template usage |
+
+
+
+#### Pelican Settings Added or Honoured:
+
+|  Key in pelicanconf.py |  Description |
+|---|---|
+| `PATH`  |  **Content Path** |
+| `OUTPUT_PATH` |  **Output Path** |
+| `USE_FOLDER_AS_CATEGORY` | **Category from folder name** If enabled, takes the category from the name of the folder the file is in. Otherwise the category will attempt to be read from `Iptc.Application2.SuppCategory` |
+|  `SITEURL` | **Site Url** The optional absolute Url for the site, defaults to '' usually. |
+|  `PAGE_URL` | **Page Url** The format string to specify where page html files are saved to |
+|  `PAGE_SAVE_AS` | **Page Save Path** The format string to specify where page html files are physically written to disk |
+|  `ARTICLE_URL` | ** Article Url** The format string to specify where page html files are saved to |
+|  `ARTICLE_SAVE_AS` | **Article Save Path** The format string to specify where page html files are physically written to disk |
+
+
+
diff --git a/pelican-plugins/jpeg_reader/__init__.py b/pelican-plugins/jpeg_reader/__init__.py
new file mode 100644
index 0000000..51704cf
--- /dev/null
+++ b/pelican-plugins/jpeg_reader/__init__.py
@@ -0,0 +1 @@
+from .jpeg_reader import *
diff --git a/pelican-plugins/jpeg_reader/constants.py b/pelican-plugins/jpeg_reader/constants.py
new file mode 100644
index 0000000..03866fa
--- /dev/null
+++ b/pelican-plugins/jpeg_reader/constants.py
@@ -0,0 +1,42 @@
+from enum import Enum
+
+
+class Exiv(Enum):
+    DESCRIPTION = 'Exif.Image.ImageDescription'
+    ARTIST = 'Exif.Image.Artist'
+    DATETIME = 'Exif.Photo.DateTimeOriginal'
+    HEADLINE = 'Iptc.Application2.Headline'
+    COMMENT = 'Exif.Photo.UserComment'
+    CAPTION = 'Iptc.Application2.Caption'
+    KEYWORDS = 'Iptc.Application2.Keywords'
+    CATEGORY = 'Iptc.Application2.SuppCategory'
+    OBJECT_NAME = 'Iptc.Application2.ObjectName'
+
+
+class PelicanConfig(Enum):
+    PATH = 'PATH'
+    OUTPUT_PATH = 'OUTPUT_PATH'
+    USE_FOLDER_AS_CATEGORY = 'USE_FOLDER_AS_CATEGORY'
+    SITE_URL = 'SITEURL'
+    PAGE_URL = 'PAGE_URL'
+    PAGE_SAVE_AS = 'PAGE_SAVE_AS'
+    ARTICLE_URL = 'ARTICLE_URL'
+    ARTICLE_SAVE_AS = 'ARTICLE_SAVE_AS'
+
+
+class PelicanMetadata(Enum):
+    TITLE = 'title'
+    AUTHORS = 'authors'
+    DATE = 'date'
+    SLUG = 'slug'
+    TAGS = 'tags'
+    CATEGORY = 'category'
+    SUMMARY = 'summary'
+    FEATURED_IMAGE = 'featured_image'  # Acts as a thumbnail
+    TEMPLATE = 'template'
+    CUSTOM_ALL = 'exiv2'  # Not officially part of metadata, but we add it ourselves
+
+
+class PelicanClass(Enum):
+    BLOG = 'blog'
+    PAGES = 'pages'
diff --git a/pelican-plugins/jpeg_reader/exiv2_parser.py b/pelican-plugins/jpeg_reader/exiv2_parser.py
new file mode 100644
index 0000000..0bf77bf
--- /dev/null
+++ b/pelican-plugins/jpeg_reader/exiv2_parser.py
@@ -0,0 +1,61 @@
+import re
+import subprocess
+from typing import List, Tuple
+
+from . import util
+
+
+class Keyword:
+    def __init__(self, *, keyword:str, kind: str, count: int):
+        self.keyword = keyword
+        self.kind = kind
+        self.count = count
+
+
+class Exiv2Parser:
+    @classmethod
+    def get_exiv2_version(cls) -> Tuple[str, str]:
+        commands = ['exiv2', '--version']
+        process = subprocess.Popen(commands, stdout=subprocess.PIPE)
+        output = util.to_str(process.communicate()[0])
+        match = re.search(r'exiv2 ([\d.]+) (\w+)', output)
+        if match is not None:
+            return match.groups()
+        return None
+
+    @classmethod
+    def get_values(cls, file_path: str) -> dict:
+        keywords = cls.__get_keys(file_path)
+        result = dict()
+        for key in keywords:
+            commands = ['exiv2', '-K', key.keyword, '-P', 't', 'print', file_path]
+            process = subprocess.Popen(commands, stdout=subprocess.PIPE)
+            output = util.to_str(process.communicate()[0]).rstrip('\n')
+            # Check if the key is a list or scalar
+            if key.count > 1:
+                result[key.keyword] = output.split('\n')  # Assume the output is like keywords, one per line
+            else:
+                result[key.keyword] = output  # Assume the whole input is the value
+        return result
+
+    @classmethod
+    def __get_keys(cls, file_path: str) -> List[Keyword]:
+        found_keywords = dict()
+        commands = ['exiv2', '-P', 'ky', 'print', file_path]
+        process = subprocess.Popen(commands, stdout=subprocess.PIPE)
+        output = util.to_str(process.communicate()[0])
+        for match in re.finditer(r'([\w.]+)\W+(\w+)\W*\n?', output):
+            code, kind = match.groups()
+            keyword = found_keywords.get(code, Keyword(keyword=code, kind=kind, count=0))
+            keyword.count += 1
+            found_keywords[code] = keyword
+
+        return list(found_keywords.values())
+
+if __name__ == '__main__':
+    #data = Exiv2Parser.get_values('content/blog/terms2.jpeg')
+    #print(data)
+    version_info = Exiv2Parser.get_exiv2_version()
+    print(version_info)
+
+
diff --git a/pelican-plugins/jpeg_reader/jpeg_reader.py b/pelican-plugins/jpeg_reader/jpeg_reader.py
new file mode 100644
index 0000000..fd16a3e
--- /dev/null
+++ b/pelican-plugins/jpeg_reader/jpeg_reader.py
@@ -0,0 +1,128 @@
+"""
+This plugin uses the metadata from JPEG images (EXIF and IPTC) to construct a meaningful page or gallery.
+Possible uses are gallery pages or a blog article that's mainly about an image.
+With this tool, it's posible to just dump an image without any extra data/linkage to create coherent output.
+The note here is that the extension is `jpeg_article` so it doesn't pick up {attach} or other static resources.
+"""
+
+import logging
+from datetime import datetime
+from os import makedirs, sep
+from os.path import join, dirname, isdir, splitext
+from typing import Tuple
+
+from PIL import Image
+from pelican import signals
+from pelican.readers import BaseReader
+from pelican.urlwrappers import URLWrapper, Category, Author, Tag
+
+from .constants import Exiv, PelicanConfig, PelicanMetadata, PelicanClass
+from .exiv2_parser import Exiv2Parser
+
+
+class JpegReader(BaseReader):
+    logger = logging.getLogger('JpegReader')
+    enabled = True
+    file_extensions = ('jpeg_article')
+    thumb_size = 250, 250
+
+    def __init__(self, settings):
+        super(JpegReader, self).__init__(settings)
+
+    def read(self, source_path):
+        try:
+            if Exiv2Parser.get_exiv2_version() is not None:
+                content, metadata = self.parse_jpeg(source_path=source_path)
+
+        except ValueError:      # if file can't be parsed, ignore it
+            pass
+        else:
+            return content, metadata
+
+    def parse_jpeg(self, *, source_path: str) -> Tuple[str, dict]:
+        JpegReader.logger.info(source_path)
+
+        img = Image.open(source_path)
+
+        image_data = Exiv2Parser.get_values(source_path)
+
+        title = image_data.get(Exiv.DESCRIPTION.value, 'Untitled')
+        author = image_data.get(Exiv.ARTIST.value, 'Unknown')
+        date_string = image_data.get(Exiv.DATETIME.value, '')
+
+        date = datetime.strptime(date_string, "%Y:%m:%d %H:%M:%S")
+        slug = URLWrapper(image_data.get(Exiv.HEADLINE.value, title), self.settings).slug
+        description_long = image_data.get(Exiv.COMMENT.value, '')
+        summary = image_data.get(Exiv.CAPTION.value, description_long[:140])
+
+        tags = [Tag(tag, self.settings) for tag in image_data.get(Exiv.KEYWORDS.value, list())]
+
+        content_root = self.settings[PelicanConfig.PATH.value]
+        path_output = self.settings[PelicanConfig.OUTPUT_PATH.value]
+        relative_source = dirname(source_path[len(content_root):]).lstrip(sep)
+        if self.settings[PelicanConfig.USE_FOLDER_AS_CATEGORY.value]:
+            category = relative_source.split(sep)[-1]
+        else:
+            category = image_data.get(Exiv.CATEGORY.value, None)
+
+        type_of_content = relative_source.split(sep)[0]  # either 'blog' or 'pages' as far as I know.
+        url_site = self.settings[PelicanConfig.SITE_URL.value]
+
+        if type_of_content.lower() == PelicanClass.PAGES.value:
+            url_document = self.settings[PelicanConfig.PAGE_URL.value]
+            document_save_as = self.settings[PelicanConfig.PAGE_SAVE_AS.value]
+        else:  # Assume PelicanClass.BLOG
+            url_document = self.settings[PelicanConfig.ARTICLE_URL.value]
+            document_save_as = self.settings[PelicanConfig.ARTICLE_SAVE_AS.value]
+
+        page_url_complete = join(url_site, url_document)
+
+        author_wrapper = Author(author, self.settings)
+
+        # Move image in place:
+        metadata = {PelicanMetadata.TITLE.value: title, PelicanMetadata.AUTHORS.value: [author_wrapper],
+                    PelicanMetadata.DATE.value: date, PelicanMetadata.SLUG.value: slug,
+                    PelicanMetadata.TAGS.value: tags,
+                    PelicanMetadata.CUSTOM_ALL.value: image_data}
+        if category is not None:
+            metadata[PelicanMetadata.CATEGORY.value] = Category(category, self.settings)
+
+        thumb_name = '{0}_thumb.jpg'.format(slug)
+        original_name = '{0}.jpg'.format(slug)
+
+        path_output_html = join(path_output, document_save_as).format(**metadata)
+        path_output_dir = dirname(path_output_html)
+        path_output_original = join(path_output_dir, original_name)
+        path_output_thumb = join(path_output_dir, thumb_name)
+
+        # Here we generate the summary info incase this is used for articles we get nice thumbnails and summary
+        metadata[PelicanMetadata.SUMMARY.value] = summary
+        metadata[PelicanMetadata.FEATURED_IMAGE.value] = join(url_site, path_output_thumb[len(path_output):])
+        if Exiv.OBJECT_NAME.value in image_data:
+            metadata[PelicanMetadata.TEMPLATE.value] = image_data[Exiv.OBJECT_NAME.value]
+
+        # Write the size/HTML out before we reduce the image to a thumb
+        content = "<img src='{src}' alt='{alt}' style='width: {width}px; height: auto; max-width: 100%;'></img><p>{body}</p>" \
+            .format(src=original_name, alt=title, width=img.width, height=img.height, body=description_long)
+
+        # Ensure the directory levels exist
+        if not isdir(path_output_dir):
+            makedirs(path_output_dir)
+        img.save(path_output_original)
+        img.thumbnail(self.thumb_size)
+        img.save(path_output_thumb)
+
+        # Debug info if we need it
+        JpegReader.logger.debug(content)
+        JpegReader.logger.debug(str(metadata))
+        JpegReader.logger.debug(path_output_html)
+
+        return content, metadata
+
+
+def add_reader(readers):
+    readers.reader_classes['jpeg_article'] = JpegReader
+
+
+def register():
+    signals.readers_init.connect(add_reader)
\ No newline at end of file
diff --git a/pelican-plugins/jpeg_reader/test_exiv2_parser.py b/pelican-plugins/jpeg_reader/test_exiv2_parser.py
new file mode 100644
index 0000000..4f14c07
--- /dev/null
+++ b/pelican-plugins/jpeg_reader/test_exiv2_parser.py
@@ -0,0 +1,36 @@
+from unittest.mock import patch
+import subprocess
+
+from .exiv2_parser import Exiv2Parser
+
+
+class MockPopen(object):
+    """Mock Popen method"""
+    def __init__(self, cmd, *, stdout):
+        pass
+
+    def communicate(self):
+        """Mock communicate method of Popen"""
+        return b'bash: command not found: exiv2', b''
+
+
+class MockPopenSuccess(MockPopen):
+    def __init__(self, cmd, *, stdout):
+        MockPopen.__init__(self, cmd, stdout=stdout)
+
+    def communicate(self):
+        """Mock communicate method of Popen"""
+        return b'exiv2 0.26 001a00 (64 bit build)', b''
+
+
+@patch('subprocess.Popen', MockPopen)
+def test_get_version_fail():
+    version_info = Exiv2Parser.get_exiv2_version()
+    assert version_info is None
+
+
+@patch('subprocess.Popen', MockPopenSuccess)
+def test_get_version_success():
+    version, commit = Exiv2Parser.get_exiv2_version()
+    assert version == '0.26'
+    assert commit == '001a00'
diff --git a/pelican-plugins/jpeg_reader/util.py b/pelican-plugins/jpeg_reader/util.py
new file mode 100644
index 0000000..c4906bb
--- /dev/null
+++ b/pelican-plugins/jpeg_reader/util.py
@@ -0,0 +1,14 @@
+def to_str(bytes_or_str):
+    if isinstance(bytes_or_str, bytes):
+        value = bytes_or_str.decode('utf-8')
+    else:
+        value = bytes_or_str
+    return value  # Instance of Str
+
+
+def to_bytes(bytes_or_str):
+    if isinstance(bytes_or_str, str):
+        value = bytes_or_str.encode('utf-8')
+    else:
+        value = bytes_or_str
+    return value  # Instance of Bytes
diff --git a/pelican-plugins/latex b/pelican-plugins/latex
new file mode 120000
index 0000000..4a2d98c
--- /dev/null
+++ b/pelican-plugins/latex
@@ -0,0 +1 @@
+render_math/
\ No newline at end of file
diff --git a/pelican-plugins/libravatar/.gitignore b/pelican-plugins/libravatar/.gitignore
new file mode 100644
index 0000000..a74b07a
--- /dev/null
+++ b/pelican-plugins/libravatar/.gitignore
@@ -0,0 +1 @@
+/*.pyc
diff --git a/pelican-plugins/libravatar/Readme.md b/pelican-plugins/libravatar/Readme.md
new file mode 100644
index 0000000..d1f5bb9
--- /dev/null
+++ b/pelican-plugins/libravatar/Readme.md
@@ -0,0 +1,77 @@
+# Libravatar plugin for Pelican
+
+**NOTE:** [This plugin has been moved to its own repository](https://github.com/pelican-plugins/avatar). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.
+
+## Description
+
+This plugin allows the inclusion of [Libravatar](http://www.libravatar.org)
+user profile pictures, according to the email address of the article's
+author.
+
+## Usage
+
+### Specifying the author's email address
+
+The default email address is taken from the `LIBRAVATAR_AUTHOR_EMAIL`
+variable in the Pelican configuration file.  This default value can be
+overridden in a per-article basis, according to the email address found in
+the article's metadata.
+
+In ReSTructuredText:
+
+```rst
+:email: bart.simpson@example.com
+```
+
+In Markdown:
+
+```markdown
+Email: bart.simpson@example.com
+```
+
+If the avatar for the specified email address is not found at Libravatar,
+it is searched at [Gravatar](http://www.gravatar.com).  If it is not found
+there neither, a default picture is shown.  The default for the "missing
+picture" can be defined in the configuration variable `LIBRAVATAR_MISSING`.
+
+### Adjusting the template
+
+This plugin assigns the `author_libravatar` variable to the Libravatar URL
+and makes the variable available within the article's context.  For
+instance, you can add the following to a template file (for example, to the
+`article_infos.html` template file of the notmyidea theme), just before the
+infomation about the author:
+
+```html
+{% if article.author_libravatar %}
+<div align="center">
+        <img src="{{ article.author_libravatar }}">
+</div>
+{% endif %}
+```
+
+## Settings
+
+The following variables can be set in the Pelican configuration file:
+
+- `LIBRAVATAR_AUTHOR_EMAIL`: site-wide default for the author's email address.
+
+- `LIBRAVATAR_MISSING`: The default for the missing picture.  This can be
+either a url (e.g. `'http://example.com/nobody.png'`) or the name of a
+library of logos (e.g. `'wavatar'`; for the full set of alternativas, see
+the [Libravatar API](https://wiki.libravatar.org/api/)).
+
+- `LIBRAVATAR_SIZE`: The size, in pixels, of the profile picture (it is
+always square, so the height is equal to the width).  If not specified, the
+default size (80×80) is returned by Libravatar.
+
+## Credits
+
+Inspiration for this plugin came from the
+[gravatar plugin](https://github.com/getpelican/pelican-plugins/tree/master/gravatar).
+
+## Author
+
+Copyright (C) 2015  Rafael Laboissiere (<rafael@laboissiere.net>)
+
+Released under the GNU Affero Public License, version 3 or later.  No warranties.
diff --git a/pelican-plugins/libravatar/__init__.py b/pelican-plugins/libravatar/__init__.py
new file mode 100644
index 0000000..b73035a
--- /dev/null
+++ b/pelican-plugins/libravatar/__init__.py
@@ -0,0 +1 @@
+from . libravatar import *
diff --git a/pelican-plugins/libravatar/libravatar.py b/pelican-plugins/libravatar/libravatar.py
new file mode 100644
index 0000000..ed783a4
--- /dev/null
+++ b/pelican-plugins/libravatar/libravatar.py
@@ -0,0 +1,67 @@
+"""Libravatar plugin for Pelican"""
+
+## Copyright (C) 2015  Rafael Laboissiere <rafael@laboissiere.net>
+##
+## This program is free software: you can redistribute it and/or modify it
+## under the terms of the GNU General Affero Public License as published by
+## the Free Software Foundation, either version 3 of the License, or (at
+## your option) any later version.
+##
+## This program is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## Affero General Public License for more details.
+##
+## You should have received a copy of the GNU Affero General Public License
+## along with this program.  If not, see http://www.gnu.org/licenses/.
+
+
+import hashlib
+from pelican import signals
+
+
+def initialize (pelicanobj):
+    """Initialize the Libravatar plugin"""
+    pelicanobj.settings.setdefault ('LIBRAVATAR_MISSING', None)
+    pelicanobj.settings.setdefault ('LIBRAVATAR_SIZE', None)
+
+
+def add_libravatar (generator, metadata):
+    """Article generator connector for the Libravatar plugin"""
+    missing = generator.settings.get ('LIBRAVATAR_MISSING')
+    size = generator.settings.get ('LIBRAVATAR_SIZE')
+
+    ## Check the presence of the Email header
+    if 'email' not in metadata.keys ():
+        try:
+            metadata ['email'] = generator.settings.get ('AUTHOR_EMAIL')
+        except:
+            pass
+
+    ## Add the Libravatar URL
+    if metadata ['email']:
+
+        ## Compose URL using the MD5 hash
+        ## (the ascii encoding is necessary for Python3)
+        email = metadata ['email'].lower ().encode ('ascii')
+        md5 = hashlib.md5 (email).hexdigest ()
+        url = 'http://cdn.libravatar.org/avatar/' + md5
+
+        ## Add eventual "missing picture" option
+        if missing or size:
+            url = url + '?'
+            if missing:
+                url = url + 'd=' + missing
+                if size:
+                    url = url + '&'
+            if size:
+                url = url + 's=' + str (size)
+
+        ## Add URL to the article's metadata
+        metadata ['author_libravatar'] = url
+
+
+def register ():
+    """Register the Libravatar plugin with Pelican"""
+    signals.initialized.connect (initialize)
+    signals.article_generator_context.connect (add_libravatar)
diff --git a/pelican-plugins/libravatar/test_data/theme/templates/article.html b/pelican-plugins/libravatar/test_data/theme/templates/article.html
new file mode 100644
index 0000000..ea6cfbc
--- /dev/null
+++ b/pelican-plugins/libravatar/test_data/theme/templates/article.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+{% block content %}
+<section id="content" class="body">
+    <footer class="post-info">
+    {% if article.author_libravatar %}
+        <div align="center">
+            <img src="{{ article.author_libravatar }}">
+        </div>
+    {% endif %}
+    </footer>
+</section>
+{% endblock %}
diff --git a/pelican-plugins/libravatar/test_libravatar.py b/pelican-plugins/libravatar/test_libravatar.py
new file mode 100644
index 0000000..639b460
--- /dev/null
+++ b/pelican-plugins/libravatar/test_libravatar.py
@@ -0,0 +1,97 @@
+"""Unit testing suite for the Libravatar Plugin"""
+from __future__ import print_function
+
+## Copyright (C) 2015  Rafael Laboissiere <rafael@laboissiere.net>
+##
+## This program is free software: you can redistribute it and/or modify it
+## under the terms of the GNU General Affero Public License as published by
+## the Free Software Foundation, either version 3 of the License, or (at
+## your option) any later version.
+##
+## This program is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## Affero General Public License for more details.
+##
+## You should have received a copy of the GNU Affero General Public License
+## along with this program.  If not, see http://www.gnu.org/licenses/.
+
+import os
+import re
+import unittest
+import hashlib
+from tempfile import mkdtemp
+from shutil import rmtree
+
+from . import libravatar
+from pelican import Pelican
+from pelican.settings import read_settings
+
+
+AUTHOR_EMAIL = 'bart.simpson@example.com'
+MD5_HASH = hashlib.md5 (AUTHOR_EMAIL.encode()).hexdigest ()
+LIBRAVATAR_BASE_URL = 'http://cdn.libravatar.org/avatar/'
+
+
+class TestLibravatarURL (unittest.TestCase):
+    """Class for testing the URL output of the Libravatar plugin"""
+
+    def setUp (self, override = None):
+        self.output_path = mkdtemp (prefix = 'pelicantests.')
+        self.content_path = mkdtemp (prefix = 'pelicantests.')
+        theme_path = os.path.join (os.path.dirname (os.path.abspath (__file__)),
+                                   'test_data', 'theme')
+        settings = {
+            'PATH': self.content_path,
+            'THEME': theme_path,
+            'OUTPUT_PATH': self.output_path,
+            'PLUGINS': [libravatar],
+            'CACHE_CONTENT': False
+        }
+        if override:
+            settings.update (override)
+
+        with open (os.path.join (self.content_path, 'test.md'), 'w') as test_md_file:
+            test_md_file.write ('Title: Test\nDate: 2019-09-05\nEmail: ' + AUTHOR_EMAIL + '\n\n')
+
+        self.settings = read_settings (override = settings)
+        pelican = Pelican (settings = self.settings)
+        pelican.run ()
+
+    def tearDown (self):
+        rmtree (self.output_path)
+        rmtree (self.content_path)
+
+    def test_url (self, options = ''):
+        with open (os.path.join (self.output_path, 'test.html'), 'r') as test_html_file:
+            found = False
+            for line in test_html_file.readlines ():
+                if re.search (LIBRAVATAR_BASE_URL + MD5_HASH + options, line):
+                    found = True
+                    break
+            assert found
+
+class TestLibravatarMissing (TestLibravatarURL):
+    """Class for testing the Libravatar "missing picture" option"""
+
+    def setUp (self, override = None):
+        self.library = 'wavatar'
+        TestLibravatarURL.setUp (self,
+                                  override = {'LIBRAVATAR_MISSING':
+                                              self.library})
+
+    def test_url (self):
+        TestLibravatarURL.test_url (self, r'\?d=' + self.library)
+
+
+class TestLibravatarSize (TestLibravatarURL):
+    """Class for testing the Libravatar size option"""
+
+    def setUp (self, override = None):
+        self.size = 100
+        TestLibravatarURL.setUp (self,
+                                  override = {'LIBRAVATAR_SIZE': self.size})
+
+    def test_url (self):
+        TestLibravatarURL.test_url (self, r'\?s=' + str (self.size))
+
diff --git a/pelican-plugins/linker/Readme.md b/pelican-plugins/linker/Readme.md
new file mode 100644
index 0000000..7529245
--- /dev/null
+++ b/pelican-plugins/linker/Readme.md
@@ -0,0 +1,75 @@
+# Linker
+
+This plugin allows to define custom linker commands in analogy to the builtin
+`{attach}`, `{author}`, `{category}`, `{filename}`, `{index}`, `{static}` and
+`{tag}` syntax.
+
+## Provided commands (each of which in its own submodule)
+
+### `{mailto}`
+
+**Purpose:** Helps to create `mailto:` links with javascript (JS) on top of a
+non-JS fallback.
+
+* **How the HTML code is replaced step by step**
+
+  * Your code in a content file (page or article):
+
+    ```
+    `Send me a mail <{mailtor}webmaster>`_
+    ```
+
+  * Pelican generated output:
+
+    ```
+    <a href="{mailto}webmaster">Send me a mail</a>
+    ```
+
+  * Plugin replacement (after computing `'jroznfgre' = rot_13('webmaster')`):
+
+    ```
+    <a href="/mailto/jroznfgre/">Send me a mail</a>
+    ```
+
+  * Result of a JS-powered transform (which you must add):
+
+    ```
+    <a href="mailto:webmaster@example.com">Send me a mail</a>
+    ```
+
+  * As a fallback for users without JS, the static page
+  `mailto/jroznfgre/index.html` is generated using the template
+  `mailto_fallback`.
+
+* **Usage instruction**
+
+  * Activate nested `{mailto}` plugin using
+
+    ``
+    PLUGINS = ['linker.mailto']
+    ``
+
+  * Provide the `mailto_fallback` template (accessing `mailto` which is injected
+  into the template)
+
+  * Add JS to the theme to improve the user experience as sketched above
+
+    ```
+    <script>
+        var pattern = new RegExp("mailto\/([a-z_\.\-]+)\/")
+        var a = document.querySelectorAll('a[href^="/mailto/"]');
+        for (var i = 0, len = a.length; i < len; i++) {
+            var match = pattern.exec(a[i])
+            if (match.length == 2) {
+                a[i].setAttribute('href', 'mailto:'+match[1].replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);})+'@example.com')
+            }
+        }
+    </script>
+    ```
+
+## Other included submodules
+
+### `content_objects`
+
+This plugin collects all `pelican.contents.Content` instances in a `set` which
+can be accessed using `context['content_objects']`.
diff --git a/pelican-plugins/linker/__init__.py b/pelican-plugins/linker/__init__.py
new file mode 100644
index 0000000..68cc268
--- /dev/null
+++ b/pelican-plugins/linker/__init__.py
@@ -0,0 +1 @@
+from .linker import *
diff --git a/pelican-plugins/linker/content_objects.py b/pelican-plugins/linker/content_objects.py
new file mode 100644
index 0000000..d6e9e9f
--- /dev/null
+++ b/pelican-plugins/linker/content_objects.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+from pelican import signals
+
+def initialize_content_object_set(app):
+    app.settings['content_objects'] = set()
+
+def collect_content_objects(co):
+    context = co._context['content_objects'].add(co)
+
+def register():
+    signals.initialized.connect(initialize_content_object_set)
+    signals.content_object_init.connect(collect_content_objects)
diff --git a/pelican-plugins/linker/linker.py b/pelican-plugins/linker/linker.py
new file mode 100644
index 0000000..18a350f
--- /dev/null
+++ b/pelican-plugins/linker/linker.py
@@ -0,0 +1,136 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+
+import logging
+import re
+
+from six.moves.urllib.parse import urlparse, urlunparse
+
+from pelican import signals, contents
+
+from linker import content_objects
+
+logger = logging.getLogger("linker")
+
+class Link(object):
+    """Represents an HTML link including a linker command.
+
+    Typically, the Link is constructed from an SRE_Match after applying the
+    provided Link.regex pattern to the HTML content of a content object.
+
+    """
+    # regex based on the one used in contents.py from pelican version 3.6.3
+    regex = re.compile(
+        r""" # EXAMPLE: <a rel="nofollow" href="{mailto}webmaster"
+
+        (?P<markup><\s*[^\>]*   # <a rel="nofollow" href=   --> markup
+            (?:href|src|poster|data|cite|formaction|action)\s*=)
+
+        (?P<quote>["\'])        # "                         --> quote
+        \{(?P<cmd>.*?)\}        # {mailto}                  --> cmd
+        (?P<url>.*?)            # webmaster                 --> __url (see path)
+        \2                      # "                         <-- quote
+
+        """, re.X)
+
+    def __init__(self, context, content_object, match):
+        """Construct a Link from an SRE_Match.
+
+        :param context: The shared context between generators.
+        :param content_object: The associated pelican.contents.Content.
+        :param match: An SRE_Match obtained by applying the regex to my content.
+
+        """
+        self.context = context
+        self.content_object = content_object
+
+        self.markup = match.group('markup')
+        self.quote = match.group('quote')
+        self.cmd = match.group('cmd')
+        self.__url = urlparse(match.group('url'))
+        self.path = self.__url.path
+
+    def href(self): # rebuild matched URL using (possibly updated) self.path
+        return urlunparse( self.__url._replace(path=self.path) )
+
+    def html_code(self): # rebuild matched pattern from (possibly updated) self
+        return ''.join((self.markup, self.quote, self.href(), self.quote))
+
+
+class LinkerBase(object):
+    """Base class for performing the linker command magic.
+
+    In order to provide the linker command 'foo' as in '<a href="{foo}contact',
+    a responsible Linker class (e.g., FooLinker) should derive from LinkerBase
+    and set FooLinker.commands to ['foo']. The linker command is processed when
+    the overridden Linker.link(Link) is called.
+
+    """
+    commands = [] # link commands handled by the Linker. EXAMPLE: ['mailto']
+    builtins = ['attach', 'author', 'category', 'filename', 'index', 'static', 'tag']
+
+
+    def __init__(self, settings):
+        self.settings = settings
+
+    def link(self, link):
+        raise NotImplementedError
+
+
+class Linkers(object):
+    """Interface for all Linkers.
+
+    This class contains a mapping of {cmd1: linker1, cmd2: linker2} to apply any
+    registered linker command by passing the Link to the responsible Linker.
+
+    (Idea based on pelican.readers.Readers, but with less customization options.)
+
+    """
+    def __init__(self, settings):
+        self.settings = settings
+        self.linkers = {}
+
+        for linker_class in [LinkerBase] + LinkerBase.__subclasses__():
+            for cmd in linker_class.commands:
+                self.register_linker(cmd, linker_class)
+
+    def register_linker(self, cmd, linker_class):
+        if cmd in self.linkers: # check for existing registration of that cmd
+            current_linker_class = self.linkers[cmd].__class__
+            logger.warning(
+                "%s is stealing the linker command %s from %s.",
+                linker_class.__name__, cmd, current_linker_class.__name__
+            )
+        self.linkers[cmd] = linker_class(self.settings)
+
+    def handle_links_in_content_object(self, context, content_object):
+        # replace Link matches (with side effects on content and content_object)
+        def replace_link_match(match):
+            link = Link(context, content_object, match)
+
+            if link.cmd in LinkerBase.builtins:
+                return match.group(0)  # builtin commands not handled here
+            elif link.cmd in self.linkers:
+                self.linkers[link.cmd].link(link) # let Linker process the Link
+            else:
+                logger.warning("Ignoring unknown linker command %s", link.cmd)
+
+            return link.html_code() # return HTML to replace the matched link
+
+        content_object._content = Link.regex.sub( # match, process and replace
+            replace_link_match, content_object._content)
+
+
+def feed_context_to_linkers(generators):
+    settings = generators[0].settings
+    linkers = Linkers(settings)
+
+    context = generators[0].context
+    for co in context['content_objects']: # provided by plugin 'content_objects'
+        if isinstance(co, contents.Static): continue
+        if not co._content: continue
+        linkers.handle_links_in_content_object(context, co)
+
+def register():
+    content_objects.register()
+    signals.all_generators_finalized.connect(feed_context_to_linkers)
diff --git a/pelican-plugins/linker/mailto.py b/pelican-plugins/linker/mailto.py
new file mode 100644
index 0000000..581e57c
--- /dev/null
+++ b/pelican-plugins/linker/mailto.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+
+import codecs
+
+from pelican import signals
+from pelican.generators import Generator
+
+from linker import linker
+
+def encode_mailto_link(mailto):
+    return 'mailto/' + codecs.encode(mailto, 'rot_13') + '/'
+
+class MailtoLinker(linker.LinkerBase):
+    commands = ['mailto']
+
+    def link(self, link):
+        mailto = link.path
+
+        link.path = '/' + encode_mailto_link(mailto) # a.href for JS parsing
+        link.context['mailtos'].add(mailto) # remember mail address for fallback
+
+
+class MailtoFallbackGenerator(Generator):
+    def generate_context(self):
+        self.context['mailtos'] = set() # populated on {mailto} link processing
+
+    def generate_output(self, writer):
+        for mailto in self.context['mailtos']:
+            save_as = encode_mailto_link(mailto) + 'index.html'
+
+            writer.write_file(save_as, self.get_template('mailto_fallback'),
+                              self.context, mailto=mailto)
+
+
+def return_mailto_fallback_generator(generators):
+    return MailtoFallbackGenerator
+
+def register():
+    linker.register()
+    signals.get_generators.connect(return_mailto_fallback_generator)
diff --git a/pelican-plugins/liquid_tags/.gitignore b/pelican-plugins/liquid_tags/.gitignore
new file mode 100644
index 0000000..08d9ce7
--- /dev/null
+++ b/pelican-plugins/liquid_tags/.gitignore
@@ -0,0 +1,4 @@
+.tox
+test_data/cache/
+test_data/output/theme/
+_nb_header.html
diff --git a/pelican-plugins/liquid_tags/Readme.md b/pelican-plugins/liquid_tags/Readme.md
new file mode 100644
index 0000000..247c714
--- /dev/null
+++ b/pelican-plugins/liquid_tags/Readme.md
@@ -0,0 +1,284 @@
+# Liquid-style Tags
+
+**NOTE:** [This plugin has been moved to its own repository](https://github.com/pelican-plugins/liquid-tags). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.
+
+ -------------------------------------------------------------------------------
+
+*Author: Jake Vanderplas <jakevdp@cs.washington.edu>*
+
+This plugin allows liquid-style tags to be inserted into Markdown within
+Pelican documents via tags bounded by `{% ... %}`, a convention also used
+to extend Markdown in other publishing platforms such as Octopress.
+
+This set of extensions does not actually interface with liquid, but allows
+users to define their own liquid-style tags which will be inserted into
+the Markdown preprocessor stream. There are several built-in tags, which
+can be added as follows.
+
+First, in your pelicanconf.py file, add the plugins you want to use:
+
+    PLUGIN_PATH = '/path/to/pelican-plugins'
+    PLUGINS = ['liquid_tags.img', 'liquid_tags.video',
+               'liquid_tags.youtube', 'liquid_tags.vimeo',
+               'liquid_tags.include_code', 'liquid_tags.notebook']
+
+Following below is more information about these and other tags.
+
+## Image Tag
+To insert a sized and labeled image in your document, enable the
+`liquid_tags.img` plugin and use the following:
+
+    {% img [class name(s)] path/to/image [width [height]] [title text | "title text" ["alt text"]] %}
+
+### Base64 Image (inline image) tag
+
+`b64img` is based on the`img` tag, but instead of inserting a link to the image it encodes it as base64 text and inserts it into a`<img src=` attribute.
+
+To use it:
+
+1. Enable `liquid_tags.b64img`
+1. Insert a tag as follows: `{% b64img [class name(s)] path/to/image [width [height]] [title text | "title text" ["alt text"]] %}`
+
+Images are encoded at generation time, so you can use any local path (just be sure that the image will remain in the same location for subsequent site generations).
+
+## Instagram Tag
+To insert a sized and labeled Instagram image in your document by its shortcode (such as `pFI0CAIZna`), enable the `liquid_tags.gram` plugin and use the following:
+
+    {% gram shortcode [size] [width] [class name(s)] [title text | "title text" ["alt text"]] %}
+
+You can specify a size with `t`, `m`, or `l`.
+
+## Flickr Tag
+To insert a Flickr image to a post, follow these steps:
+
+1. Enable `liquid_tags.flickr`
+2. [Get an API key from Flickr](https://www.flickr.com/services/apps/create/apply)
+3. Add FLICKR_API_KEY to your settings file
+4. Add this to your source document:
+
+    {% flickr image_id [small|medium|large] ["alt text"|'alt text'] %}
+
+## Giphy Tag
+To insert a GIF from Giphy in your document by its ID (such as `aMSJFS6oFX0fC`), enable the `liquid_tags.giphy` plugin and use the following:
+
+    {% giphy gif_id ["alt text"|'alt text'] %}
+
+**Important:** You must [request a production API key](https://api.giphy.com/submit) from Giphy.
+If you just want to try it out, you can use the public beta key contained within the [GiphyAPI](https://github.com/giphy/GiphyAPI) README file.
+
+## Soundcloud Tag
+To insert a Soundcloud widget in your content, follow these steps:
+
+1. Enable `liquid_tags.soundcloud`
+2. Add this to your source document:
+
+    {% soundcloud track_url %}
+
+## YouTube Tag
+To insert a YouTube video into your content, enable the
+`liquid_tags.youtube` plugin and add the following to your source document:
+
+    {% youtube youtube_id [width] [height] %}
+
+The width and height are in pixels and are optional. If they
+are not specified, then the dimensions will be 640 (wide) by 390 (tall).
+
+If you experience issues with code generation (e.g., missing closing tags),
+add `SUMMARY_MAX_LENGTH = None` to your settings file.
+
+### Embedding just thumbnail
+
+If you do not want to add over megabyte of JS code to page you can embed linked
+thumbnail instead. To use that feature set `YOUTUBE_THUMB_ONLY` variable in your
+settings file. `YOUTUBE_THUMB_SIZE` variable controls dimensions of thumbnail
+with 4 sizes available:
+
+name  | xres | yres
+------|------|-----
+maxres| 1280 | 720
+sd    |  640 | 480
+hq    |  480 | 360
+mq    |  320 | 180
+
+Embedded thumbnails have CSS class 'youtube_video' which can be used to add
+'play' button above.
+
+## Vimeo Tag
+To insert a Vimeo video into your content, enable the `liquid_tags.vimeo`
+plugin and add the following to your source document:
+
+    {% vimeo vimeo_id [width] [height] %}
+
+The width and height are in pixels and are optional. If they
+are not specified, then the dimensions will be 640 (wide) by 390 (tall).
+
+If you experience issues with code generation (e.g., missing closing tags),
+add `SUMMARY_MAX_LENGTH = None` to your settings file.
+
+## Speakerdeck Tag
+
+To insert a Speakerdeck viewer into your content, follow these steps:
+
+1. Enable the `liquid_tags.soundcloud` plugin
+2. Add the following to your source document:
+
+  ```html
+  {% speakerdeck speakerdeck_id [ratio] %}
+  ```
+
+### Note
+
+- The ratio is a decimal number and is optional.
+- Ratio accept decimal number and digit after decimal is optional.
+- If ratio is not specified, then it will be `1.33333333333333` (4/3).
+- An example value for the ration can be `1.77777777777777` (16/9).
+
+## Video Tag
+To insert HTML5-friendly video into your content, enable the `liquid_tags.video`
+plugin and add the following to your source document:
+
+    {% video /url/to/video.mp4 [width] [height] [/path/to/poster.png] %}
+
+The width and height are in pixels and are optional. If they are not specified,
+then the native video size will be used. The poster image is a preview image
+that is shown prior to initiating video playback.
+To link to a video file, make sure it is in a static directory, transmitted
+to your server, and available at the specified URL.
+
+## Audio Tag
+To insert HTML5 audio into a post, enable the `liquid_tags.audio` plugin
+and add the following to your source document:
+
+    {% audio url/to/audio [url/to/audio] [url/to/audio] %}
+
+This tag supports up to three audio URL arguments so you can add different
+audio file versions, as different browsers support different file formats.
+
+To link to a audio file, make sure it is in a static directory, transmitted
+to your server, and available at the specified URL.
+
+## Include Code
+To include code from a file in your document with a link to the original
+file, enable the `liquid_tags.include_code` plugin, and add the following to
+your source document:
+
+    {% include_code /path/to/code.py [lang:python] [lines:X-Y] [:hidefilename:] [title] %}
+
+All arguments are optional but must be specified in the order shown above.
+
+    {% include_code /path/to/code.py lines:1-10 Test Example %}
+
+This example will show the first ten lines of the file.
+
+To hide filename, use `:hidefilename:`. If using `:hidefilename:`, a title must
+be provided.
+
+You can hide download link with `:hidelink:`. 
+
+If you would like to hide all three, i.e. title, filename and download link, use `:hideall:`.
+
+Following examples hides the filename.
+
+    {% include_code /path/to/code.py lines:1-10 :hidefilename: Test Example %}
+
+The script must be in the `code` subdirectory of your content folder;
+the default location can be changed by specifying the directory in your
+settings file thusly:
+
+    CODE_DIR = 'code'
+
+Additionally, in order for the resulting hyperlink to work, this directory must
+be listed in the STATIC_PATHS setting. For example:
+
+    STATIC_PATHS = ['images', 'code']
+
+## IPython notebooks
+
+To insert an [IPython][] notebook into your post, enable the
+``liquid_tags.notebook`` plugin and add the following to your source document:
+
+    {% notebook filename.ipynb %}
+
+The file should be specified relative to the `notebooks` subdirectory of the
+content directory. Optionally, this subdirectory can be specified in your
+settings file:
+
+    NOTEBOOK_DIR = 'notebooks'
+
+Because the conversion and rendering of notebooks is rather involved, there
+are a few extra steps required for this plugin. First, you must install IPython:
+
+      pip install ipython==2.4.1
+
+After running Pelican on content containing an IPython notebook tag, a file
+called `_nb_header.html` will be generated in the main directory. The content
+of this file should be included in the header of your theme. An easy way to
+accomplish this is to add the following to your theme’s header template…
+
+      {% if EXTRA_HEADER %}
+      {{ EXTRA_HEADER }}
+      {% endif %}
+
+… and in your settings file, include the line:
+
+      from io import open
+      EXTRA_HEADER = open('_nb_header.html', encoding='utf-8').read()
+
+This will insert the proper CSS formatting into your generated document.
+
+### Optional Arguments for Notebook Tags
+
+The notebook tag also has two optional arguments: `cells` and `language`.
+
+- You can specify a slice of cells to include:
+
+  `{% notebook filename.ipynb cells[2:8] %}`
+
+- You can also specify the name of the language that Pygments should use for
+  highlighting code cells. For a list of the language short names that Pygments
+  can highlight, refer to the [Pygments lexer list](http://www.pygments.org/docs/lexers/).
+
+  `{% notebook filename.ipynb language[julia] %}`
+
+  This may be helpful for those using [IJulia](https://github.com/JuliaLang/IJulia.jl)
+  or notebooks in other languages, especially as the IPython project [broadens its
+  scope](https://github.com/ipython/ipython/wiki/Roadmap:-IPython) to [support
+  other languages](http://jupyter.org/). The default language for highlighting
+  is `ipython`.
+
+- These options can be used separately, together, or not at all. However,
+  if both tags are used then `cells` must come before `language`:
+
+  `{% notebook filename.ipynb cells[2:8] language[julia] %}`
+
+### Collapsible Code in IPython Notebooks
+
+The IPython plugin also enables collapsible code input boxes. For this to work
+you must first copy the file `pelicanhtml_3.tpl` (for IPython 3.x) or
+`pelicanhtml_2.tpl` (for IPython 2.x) to the top level of your content
+directory. Notebook input cells containing the comment line `#
+<!-- collapse=True -->` will be collapsed when the HTML page is
+loaded and can be expanded by tapping on them. Cells containing the
+comment line `# <!-- collapse=False -->` will be expanded on load but
+can be collapsed by tapping on their header. Cells without collapsed
+comments are rendered as standard code input cells.
+
+## Configuration settings in custom tags
+
+Tags do not have access to the full Pelicans settings, and instead arrange for 
+the variables to be passed to the tag.  For tag authors who plan to add their 
+tag as in-tree tags, they can just add the variables they need to an array in 
+`mdx_liquid_tags.py`, but out-of-tree tags can specify which variables they 
+need by including a tuple of (variable, default value, helptext) in the 
+user's `pelicanconf.py` settings:
+
+    LIQUID_CONFIGS = (('PATH', '.', "The default path"), ('SITENAME', 'Default Sitename', 'The name of the site'))
+
+## Testing
+
+To test the plugin in multiple environments we use [tox](http://tox.readthedocs.org/en/latest/). To run the entire test suite:
+
+    cd path/to/liquid_tags
+    tox
+
+[IPython]: http://ipython.org/
diff --git a/pelican-plugins/liquid_tags/__init__.py b/pelican-plugins/liquid_tags/__init__.py
new file mode 100644
index 0000000..eabcd63
--- /dev/null
+++ b/pelican-plugins/liquid_tags/__init__.py
@@ -0,0 +1 @@
+from .liquid_tags import *
diff --git a/pelican-plugins/liquid_tags/audio.py b/pelican-plugins/liquid_tags/audio.py
new file mode 100644
index 0000000..a500ce6
--- /dev/null
+++ b/pelican-plugins/liquid_tags/audio.py
@@ -0,0 +1,75 @@
+"""
+Audio Tag
+---------
+This implements a Liquid-style audio tag for Pelican,
+based on the pelican video plugin [1]_
+
+Syntax
+------
+{% audio url/to/audio [url/to/audio] [/url/to/audio] %}
+
+Example
+-------
+{% audio http://example.tld/foo.mp3 http://example.tld/foo.ogg %}
+
+Output
+------
+<audio controls><source src="http://example.tld/foo.mp3" type="audio/mpeg"><source src="http://example.tld/foo.ogg" type="audio/ogg">Your browser does not support the audio element.</audio>
+
+[1] https://github.com/getpelican/pelican-plugins/blob/master/liquid_tags/video.py
+"""
+import os
+import re
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = "{% audio url/to/audio [url/to/audio] [/url/to/audio] %}"
+AUDIO = re.compile(r'(/\S+|https?:\S+)(?:\s+(/\S+|https?:\S+))?(?:\s+(/\S+|https?:\S+))?')
+
+AUDIO_TYPEDICT = {'.mp3': 'audio/mpeg',
+                  '.ogg': 'audio/ogg',
+                  '.oga': 'audio/ogg',
+                  '.opus': 'audio/ogg',
+                  '.wav': 'audio/wav',
+                  '.mp4': 'audio/mp4'}
+
+
+def create_html(markup):
+    match = AUDIO.search(markup)
+    if match:
+        groups = match.groups()
+        audio_files = [g for g in groups if g]
+
+    if any(audio_files):
+        audio_out = '<audio controls>'
+
+        for audio_file in audio_files:
+
+            base, ext = os.path.splitext(audio_file)
+
+            if ext not in AUDIO_TYPEDICT:
+                raise ValueError("Unrecognized audio extension: "
+                                 "{0}".format(ext))
+
+            # add audio source
+            audio_out += '<source src="{}" type="{}">'.format(
+                audio_file, AUDIO_TYPEDICT[ext])
+
+        # close audio tag
+        audio_out += 'Your browser does not support the audio element.'
+        audio_out += '</audio>'
+
+    else:
+        raise ValueError("Error processing input, "
+                         "expected syntax: {0}".format(SYNTAX))
+
+    return audio_out
+
+
+@LiquidTags.register('audio')
+def audio(preprocessor, tag, markup):
+    return create_html(markup)
+
+
+# ---------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/b64img.py b/pelican-plugins/liquid_tags/b64img.py
new file mode 100644
index 0000000..8c70bc9
--- /dev/null
+++ b/pelican-plugins/liquid_tags/b64img.py
@@ -0,0 +1,91 @@
+"""
+Image Tag
+---------
+This implements a Liquid-style image tag for Pelican,
+based on the liquid img tag which is based on the octopress image tag [1]_
+
+Syntax
+------
+{% b64img [class name(s)] [http[s]:/]/path/to/image [width [height]] [title text | "title text" ["alt text"]] %}
+
+Examples
+--------
+{% b64img /images/ninja.png Ninja Attack! %}
+{% b64img left half http://site.com/images/ninja.png Ninja Attack! %}
+{% b64img left half http://site.com/images/ninja.png 150 150 "Ninja Attack!" "Ninja in attack posture" %}
+
+Output
+------
+<img src="data:;base64,....">
+<img class="left half" src="data:;base64,..." title="Ninja Attack!" alt="Ninja Attack!">
+<img class="left half" src="data:;base64,..." width="150" height="150" title="Ninja Attack!" alt="Ninja in attack posture">
+
+[1] https://github.com/imathis/octopress/blob/master/plugins/image_tag.rb
+"""
+import re
+import base64
+try:
+    import urllib.request as urllib2
+except ImportError:
+    import urllib2
+from .mdx_liquid_tags import LiquidTags
+import six
+
+SYNTAX = '{% b64img [class name(s)] [http[s]:/]/path/to/image [width [height]] [title text | "title text" ["alt text"]] %}'
+
+# Regular expression to match the entire syntax
+ReImg = re.compile("""(?P<class>\S.*\s+)?(?P<src>(?:https?:\/\/|\/|\S+\/)\S+)(?:\s+(?P<width>\d+))?(?:\s+(?P<height>\d+))?(?P<title>\s+.+)?""")
+
+# Regular expression to split the title and alt text
+ReTitleAlt = re.compile("""(?:"|')(?P<title>[^"']+)?(?:"|')\s+(?:"|')(?P<alt>[^"']+)?(?:"|')""")
+
+
+def _get_file(src):
+    """ Return content from local or remote file. """
+    try:
+        if '://' in src or src[0:2] == '//':  # Most likely this is remote file
+            response = urllib2.urlopen(src)
+            return response.read()
+        else:
+            with open(src, 'rb') as fh:
+                return fh.read()
+    except Exception as e:
+        raise RuntimeError('Error generating base64image: {}'.format(e))
+
+
+def base64image(src):
+    """ Generate base64 encoded image from srouce file. """
+    return base64.b64encode(_get_file(src))
+
+
+@LiquidTags.register('b64img')
+def b64img(preprocessor, tag, markup):
+    attrs = None
+
+    # Parse the markup string
+    match = ReImg.search(markup)
+    if match:
+        attrs = dict([(key, val.strip())
+                      for (key, val) in six.iteritems(match.groupdict()) if val])
+    else:
+        raise ValueError('Error processing input. '
+                         'Expected syntax: {0}'.format(SYNTAX))
+
+    # Check if alt text is present -- if so, split it from title
+    if 'title' in attrs:
+        match = ReTitleAlt.search(attrs['title'])
+        if match:
+            attrs.update(match.groupdict())
+        if not attrs.get('alt'):
+            attrs['alt'] = attrs['title']
+
+    attrs['src'] = 'data:;base64,{}'.format(base64image(attrs['src']))
+
+    # Return the formatted text
+    return "<img {0}>".format(' '.join('{0}="{1}"'.format(key, val)
+                                       for (key, val) in six.iteritems(attrs)))
+
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from .liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/content/test_data/main.c b/pelican-plugins/liquid_tags/content/test_data/main.c
new file mode 100644
index 0000000..cbc04c3
--- /dev/null
+++ b/pelican-plugins/liquid_tags/content/test_data/main.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main(int argc, char** argv){
+    printf("Hello world!");
+
+    return 0;
+}
diff --git a/pelican-plugins/liquid_tags/content/test_data/main_cz.c b/pelican-plugins/liquid_tags/content/test_data/main_cz.c
new file mode 100644
index 0000000..ee912b4
--- /dev/null
+++ b/pelican-plugins/liquid_tags/content/test_data/main_cz.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main(int argc, char** argv){
+    printf("Dobrý");
+
+    return 0;
+}
diff --git a/pelican-plugins/liquid_tags/diag.py b/pelican-plugins/liquid_tags/diag.py
new file mode 100644
index 0000000..e10bfd5
--- /dev/null
+++ b/pelican-plugins/liquid_tags/diag.py
@@ -0,0 +1,177 @@
+"""
+Blockdiag Tag
+---------
+This tag implements a liquid style tag for blockdiag [1].  You can use different
+diagram types like blockdiag, seqdiag, packetdiag etc. [1]
+
+
+[1] http://blockdiag.com/en/blockdiag/
+
+Syntax
+------
+{% blockdiag {
+        <diagramm type> {
+            <CODE>
+        }
+    }
+%}
+
+Examples
+--------
+{% blockdiag {
+        blockdiag {
+          A -> B -> C;
+          B -> D;
+        }
+    }
+%}
+
+
+{% blockdiag {
+        actdiag {
+          A -> B -> C -> D -> E;
+
+          lane {
+            A; C; E;
+          }
+          lane {
+            B; D;
+          }
+        }
+    }
+%}
+
+
+{% blockdiag {
+        packetdiag {
+           0-7: Source Port
+           8-15: Destination Port
+           16-31: Sequence Number
+           32-47: Acknowledgment Number
+        }
+    }
+%}
+
+...
+
+
+Output
+------
+<span class="blockdiag" style="align: center;"><img src="data:image/png;base64,_BASE64_IMAGE DATA_/></span>
+
+"""
+
+import io
+import os
+import sys
+
+import base64
+import re
+from .mdx_liquid_tags import LiquidTags
+
+
+SYNTAX = '{% blockdiag [diagram type] [code] %}'
+DOT_BLOCK_RE = re.compile(r'^\s*(?P<diagram>\w+).*$', re.MULTILINE | re.DOTALL)
+
+_draw_mode = 'PNG'
+_publish_mode = 'PNG'
+
+
+def get_diag(code, command):
+    """ Generate diagramm and return data """
+    import tempfile
+    import shutil
+    code = code + u'\n'
+
+    try:
+        tmpdir = tempfile.mkdtemp()
+        fd, diag_name = tempfile.mkstemp(dir=tmpdir)
+
+        f = os.fdopen(fd, "w")
+        f.write(code.encode('utf-8'))
+        f.close()
+
+        format = _draw_mode.lower()
+        draw_name = diag_name + '.' + format
+
+        saved_argv = sys.argv
+        argv = [diag_name, '-T', format, '-o', draw_name]
+
+        if _draw_mode == 'SVG':
+            argv += ['--ignore-pil']
+
+        # Run command
+        command.main(argv)
+
+        # Read image data from file
+        file_name = diag_name + '.' + _publish_mode.lower()
+
+        with io.open(file_name, 'rb') as f:
+            data = f.read()
+            f.close()
+
+    finally:
+        for file in os.listdir(tmpdir):
+            os.unlink(tmpdir + "/" + file)
+
+        # os.rmdir will fail -> use shutil
+        shutil.rmtree(tmpdir)
+
+    return data
+
+
+def diag(code, command):
+    if command == "blockdiag":                      # blockdiag
+        import blockdiag.command
+        return get_diag(code, blockdiag.command)
+
+    elif command == "diagram":                      # diagram
+        import blockdiag.command
+        return get_diag(code, blockdiag.command)
+
+    elif command == "seqdiag":                      # seqdiag
+        import seqdiag.command
+        return get_diag(code, seqdiag.command)
+
+    elif command == "actdiag":                      # actdiag
+        import actdiag.command
+        return get_diag(code, actdiag.command)
+
+    elif command == "nwdiag":                       # nwdiag
+        import nwdiag.command
+        return get_diag(code, nwdiag.command)
+
+    elif command == "packetdiag":                   # packetdiag
+        import packetdiag.command
+        return get_diag(code, packetdiag.command)
+
+    elif command == "rackdiag":                     # racketdiag
+        import rackdiag.command
+        return get_diag(code, rackdiag.command)
+
+    else:                                           # not found
+        print("No such command %s" % command)
+        return None
+
+
+@LiquidTags.register("blockdiag")
+def blockdiag_parser(preprocessor, tag, markup):
+    """ Blockdiag parser """
+    m = DOT_BLOCK_RE.search(markup)
+    if m:
+        # Get diagram type and code
+        diagram = m.group('diagram').strip()
+        code = markup
+
+        # Run command
+        output = diag(code, diagram)
+
+        if output:
+            # Return Base64 encoded image
+            return '<span class="blockdiag" style="align: center;"><img src="data:image/png;base64,%s"></span>' % base64.b64encode(output)
+    else:
+        raise ValueError('Error processing input. '
+                         'Expected syntax: {0}'.format(SYNTAX))
+
+# This import allows image tag to be a Pelican plugin
+from .liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/flickr.py b/pelican-plugins/liquid_tags/flickr.py
new file mode 100644
index 0000000..9e74db6
--- /dev/null
+++ b/pelican-plugins/liquid_tags/flickr.py
@@ -0,0 +1,116 @@
+"""
+Flickr Tag
+----------
+This implements a Liquid-style flickr tag for Pelican.
+
+IMPORTANT: You have to create a API key to access the flickr api.
+You can do this `here <https://www.flickr.com/services/apps/create/apply>`_.
+Add the created key to your config under FLICKR_API_KEY.
+
+Syntax
+------
+{% flickr image_id [small|medium|large] ["alt text"|'alt text'] %}
+
+Example
+--------
+{% flickr 18841055371 large "Fichte"}
+
+Output
+------
+<a href="https://www.flickr.com/photos/marvinxsteadfast/18841055371/"><img src="https://farm6.staticflickr.com/5552/18841055371_17ac287217_b.jpg" alt="Fichte"></a>
+"""
+import json
+import re
+try:
+    from urllib.request import urlopen
+    from urllib.parse import urlencode
+except ImportError:
+    from urllib import urlopen, urlencode
+from .mdx_liquid_tags import LiquidTags
+
+
+SYNTAX = '''{% flickr image_id [small|medium|large] ["alt text"|'alt text'] %}'''
+PARSE_SYNTAX = re.compile((r'''(?P<photo_id>\S+)'''
+                           r'''(?:\s+(?P<size>large|medium|small))?'''
+                           r'''(?:\s+(['"]{0,1})(?P<alt>.+)(\3))?'''))
+
+
+def get_info(photo_id, api_key):
+    ''' Get photo informations from flickr api. '''
+    query = urlencode({
+        'method': 'flickr.photos.getInfo',
+        'api_key': api_key,
+        'photo_id': photo_id,
+        'format': 'json',
+        'nojsoncallback': '1'
+    })
+
+    r = urlopen('https://api.flickr.com/services/rest/?' + query)
+    info = json.loads(r.read().decode('utf-8'))
+
+    if info['stat'] == 'fail':
+        raise ValueError(info['message'])
+
+    return info
+
+
+def source_url(farm, server, id, secret, size):
+    ''' Url for direct jpg use. '''
+    if size == 'small':
+        img_size = 'n'
+    elif size == 'medium':
+        img_size = 'c'
+    elif size == 'large':
+        img_size = 'b'
+
+    return 'https://farm{}.staticflickr.com/{}/{}_{}_{}.jpg'.format(
+        farm, server, id, secret, img_size)
+
+
+def generate_html(attrs, api_key):
+    ''' Returns html code. '''
+    # getting flickr api data
+    flickr_data = get_info(attrs['photo_id'], api_key)
+
+    # if size is not defined it will use large as image size
+    if 'size' not in attrs.keys():
+        attrs['size'] = 'large'
+
+    # if no alt is defined it will use the flickr image title
+    if 'alt' not in attrs.keys():
+        attrs['alt'] = flickr_data['photo']['title']['_content']
+
+    # return final html code
+    return '<a href="{}"><img src="{}" alt="{}"></a>'.format(
+        flickr_data['photo']['urls']['url'][0]['_content'],
+        source_url(flickr_data['photo']['farm'],
+                   flickr_data['photo']['server'],
+                   attrs['photo_id'],
+                   flickr_data['photo']['secret'],
+                   attrs['size']),
+        attrs['alt'])
+
+
+@LiquidTags.register('flickr')
+def flickr(preprocessor, tag, markup):
+    # getting flickr api key out of config
+    api_key = preprocessor.configs.getConfig('FLICKR_API_KEY')
+
+    # parse markup and extract data
+    attrs = None
+
+    match = PARSE_SYNTAX.search(markup)
+    if match:
+        attrs = dict(
+            [(key, value.strip())
+             for (key, value) in match.groupdict().items() if value])
+    else:
+        raise ValueError('Error processing input. '
+                         'Expected syntax: {}'.format(SYNTAX))
+
+    return generate_html(attrs, api_key)
+
+
+# ---------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/generic.py b/pelican-plugins/liquid_tags/generic.py
new file mode 100644
index 0000000..e52cd42
--- /dev/null
+++ b/pelican-plugins/liquid_tags/generic.py
@@ -0,0 +1,36 @@
+"""
+Generic Tag
+-----------
+This implements a tag that that is mostly useful for testing.
+
+This tag does not implement anything useful, but is a place that can be
+used for testing liquid_tags infrastructure, in situations that need
+a full lifecycle test.
+
+The first use case is a test of a tag that will pull out data from
+the configuration file and make it available during the test.
+
+A tag of
+{% generic config <config file variable> %>
+will be replaced with the value of that config file in html
+
+Not all config file variables are exposed - the set
+of variables are from the LIQUID_CONFIGS setting, which is a list of 
+variables to pass to the liquid tags.
+"""
+from .mdx_liquid_tags import LiquidTags
+
+@LiquidTags.register('generic')
+def generic(preprocessor, tag, markup):
+    (cmd, args) = markup.split(' ', 1)
+    if cmd.lower() == 'config':
+        config_param = args.split()[0].upper()
+        config_val = preprocessor.configs.getConfig(config_param)	
+        return(config_val)
+    else:
+        return 'generic: %s ' % markup
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register
+
diff --git a/pelican-plugins/liquid_tags/giphy.py b/pelican-plugins/liquid_tags/giphy.py
new file mode 100644
index 0000000..9decff3
--- /dev/null
+++ b/pelican-plugins/liquid_tags/giphy.py
@@ -0,0 +1,89 @@
+"""
+Giphy Tag
+---------
+
+This implements a Liquid-style Giphy tag for Pelican.
+
+IMPORTANT: You have to request a production API key from giphy `here <https://api.giphy.com/submit>`.
+For the first runs you could also use the public beta key you can get `here <https://github.com/giphy/GiphyAPI>`.
+
+Syntax
+------
+{% giphy gif_id ["alt text"|'alt text'] %}
+
+Example
+-------
+{% giphy aMSJFS6oFX0fC 'ive had some free time' %}
+
+Output
+------
+<a href="http://giphy.com/gifs/veronica-mars-aMSJFS6oFX0fC"><img src="http://media4.giphy.com/media/aMSJFS6oFX0fC/giphy.gif" alt="ive had some free time"></a>
+"""
+import json
+import re
+try:
+    from urllib.request import urlopen
+except ImportError:
+    from urllib import urlopen
+from .mdx_liquid_tags import LiquidTags
+
+
+SYNTAX = '''{% giphy gif_id ["alt text"|'alt text'] %}'''
+GIPHY = re.compile(r'''(?P<gif_id>[\S+]+)(?:\s+(['"]{0,1})(?P<alt>.+)(\\2))?''')
+
+
+def get_gif(api_key, gif_id):
+    '''Returns dict with gif informations from the API.'''
+    url = 'http://api.giphy.com/v1/gifs/{}?api_key={}'.format(gif_id, api_key)
+    r = urlopen(url)
+
+    return json.loads(r.read().decode('utf-8'))
+
+
+def create_html(api_key, attrs):
+    '''Returns complete html tag string.'''
+    gif = get_gif(api_key, attrs['gif_id'])
+
+    if 'alt' not in attrs.keys():
+        attrs['alt'] = 'source: {}'.format(gif['data']['source'])
+
+    html_out = '<a href="{}">'.format(gif['data']['url'])
+    html_out += '<img src="{}" alt="{}">'.format(
+        gif['data']['images']['original']['url'],
+        attrs['alt'])
+    html_out += '</a>'
+
+    return html_out
+
+
+def main(api_key, markup):
+    '''Doing the regex parsing and running the create_html function.'''
+    match = GIPHY.search(markup)
+
+    attrs = None
+
+    if match:
+        attrs = dict(
+            [(key, value.strip())
+             for (key, value) in match.groupdict().items() if value])
+
+    else:
+        raise ValueError('Error processing input. '
+                         'Expected syntax: {}'.format(SYNTAX))
+
+    return create_html(api_key, attrs)
+
+
+@LiquidTags.register('giphy')
+def giphy(preprocessor, tag, markup):
+    api_key = preprocessor.configs.getConfig('GIPHY_API_KEY')
+
+    if api_key is None:
+        raise ValueError('Please set GIPHY_API_KEY.')
+
+    return main(api_key, markup)
+
+
+# ---------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/gram.py b/pelican-plugins/liquid_tags/gram.py
new file mode 100644
index 0000000..8fe18dd
--- /dev/null
+++ b/pelican-plugins/liquid_tags/gram.py
@@ -0,0 +1,103 @@
+"""
+Instagram Image Tag
+-------------------
+
+By `Tom Spalding <https://github.com/digitalvapor>`_
+
+You can see a working example at `antivapor.net/instagram-tag.html <http://antivapor.net/instagram-tag.html>`_.
+
+Based on `Liquid Image Tag <https://github.com/getpelican/pelican-plugins/blob/master/liquid_tags/img.py>`_ by `Jake Vanderplas <https://github.com/jakevdp>`_.
+
+Optional Todo:
+* Query JSON to automatically include descriptions.
+  http://api.instagram.com/oembed?url=http://instagr.am/p/olw8jXiz1_/
+  and option to add wrapping anchor link to original http://instagram.com/p/olw8jXiz1_
+* Default to size m
+  http://instagr.am/p/olw8jXiz1_/media/?size=t
+  http://instagr.am/p/olw8jXiz1_/media
+* Provide examples using with [Better Figures and Images](https://github.com/getpelican/pelican-plugins/tree/master/better_figures_and_images).
+
+Syntax
+------
+
+    {% gram shortcode [size] [width] [class name(s)] [title text | "title text" ["alt text"]] %}
+
+where size is t, m, or l, and it defaults to m. see http://instagram.com/developer/embedding.
+
+Examples
+--------
+
+    {% gram pFG7naIZkr t %}
+    {% gram pFJE11IZnx %}
+    {% gram pFI0CAIZna l 400 figure 'pretty turkey tail fungus' %}
+    {% gram rOru21oZpe l 450 test_class instagram 'warehouse window title' 'alt text' %}
+
+Output
+------
+
+    <img src="http://photos-c.ak.instagram.com/hphotos-ak-xaf1/t51.2885-15/917172_604907902963826_254280879_n.jpg" width="450" title="warehouse window title" alt="alt text" class="test_class instagram">
+"""
+import re
+try:
+    from urllib.request import urlopen
+except ImportError:
+    from urllib import urlopen
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = '{% gram shortcode [size] [width] [class name(s)] [title text | "title text" ["alt text"]] %}'
+
+# Regular expression for full syntax
+# ReGram = re.compile("""(?P<shortcode>\S+)(?:\s+(?P<size>[tml]?))?(?:\s+(?P<width>\d*))?(?:\s+(?P<class>\S*))?(?P<title>\s+.+)?""")
+ReGram = re.compile("""(?P<shortcode>\S+)(?:\s+(?P<size>[tml]?))?(?:\s+(?P<width>\d*))?(?:\s+(?P<class>[^']*))?(?P<title>.+)?""")
+
+# Regular expression to split the title and alt text
+ReTitleAlt = re.compile("""(?:"|')(?P<title>[^"']+)?(?:"|')\s+(?:"|')(?P<alt>[^"']+)?(?:"|')""")
+
+@LiquidTags.register('gram')
+def gram(preprocessor, tag, markup):
+
+    attrs = None
+
+    # Parse the markup string
+    match = ReGram.search(markup)
+    if match:
+        attrs = dict([(key, val.strip())
+                      for (key, val) in match.groupdict().items() if val])
+    else:
+        raise ValueError('Error processing input. '
+                         'Expected syntax: {0}'.format(SYNTAX))
+
+    # Construct URI
+    #print(attrs)
+    shortcode = attrs['shortcode']
+    url = 'http://instagr.am/p/'+shortcode+'/media/'
+    del attrs['shortcode']
+
+    if 'size' in attrs:
+        size = '?size={0}'.format(attrs['size'])
+        url = url+size
+        del attrs['size']
+
+    r = urlopen(url)
+
+    if(r.getcode()==404):
+        raise ValueError('%s isnt a photo.'%shortcode)
+
+    gram_url = r.geturl()
+
+    # Check if alt text is present -- if so, split it from title
+    if 'title' in attrs:
+        match = ReTitleAlt.search(attrs['title'])
+        if match:
+            attrs.update(match.groupdict())
+        if not attrs.get('alt'):
+            attrs['alt'] = attrs['title']
+
+    #print('updated dict: '+repr(attrs))
+
+    # Return the formatted text
+    return '<img src="{0}"{1}>'.format(gram_url,' '.join(' {0}="{1}"'.format(key,val) for (key,val) in attrs.items()))
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/graphviz.py b/pelican-plugins/liquid_tags/graphviz.py
new file mode 100644
index 0000000..ba7764b
--- /dev/null
+++ b/pelican-plugins/liquid_tags/graphviz.py
@@ -0,0 +1,128 @@
+"""
+GraphViz Tag
+---------
+This implements a Liquid-style graphviz tag for Pelican. You can use different
+Graphviz programs like dot, neato, twopi etc. [1]
+
+
+[1] http://www.graphviz.org/
+
+Syntax
+------
+{% graphviz
+    <program> {
+        <DOT code>
+    }
+%}
+
+Examples
+--------
+{% graphviz
+    dot {
+        digraph graphname {
+            a -> b -> c;
+            b -> d;
+        }
+    }
+%}
+
+
+{% graphviz
+    twopi {
+        <code goes here>
+    }
+%}
+
+
+{% graphviz
+    neato {
+        <code goes here>
+    }
+%}
+
+...
+
+
+Output
+------
+<span class="graphviz" style="text-align: center;"><img src="data:image/png;base64,_BASE64_IMAGE DATA_/></span>
+
+"""
+
+import base64
+import re
+from errno import EINVAL, EPIPE
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = '{% dot graphviz [program] [dot code] %}'
+DOT_BLOCK_RE = re.compile(r'^\s*(?P<program>\w+)\s*\{\s*(?P<code>.*\})\s*\}$', re.MULTILINE | re.DOTALL)
+
+
+def run_graphviz(program, code, options=[], format='png'):
+    """ Runs graphviz programs and returns image data
+
+        Copied from https://github.com/tkf/ipython-hierarchymagic/blob/master/hierarchymagic.py
+    """
+    import os
+    from subprocess import Popen, PIPE
+
+    dot_args = [program] + options + ['-T', format]
+
+    if os.name == 'nt':
+        # Avoid opening shell window.
+        # * https://github.com/tkf/ipython-hierarchymagic/issues/1
+        # * http://stackoverflow.com/a/2935727/727827
+        p = Popen(dot_args, stdout=PIPE, stdin=PIPE, stderr=PIPE, creationflags=0x08000000)
+    else:
+        p = Popen(dot_args, stdout=PIPE, stdin=PIPE, stderr=PIPE)
+        wentwrong = False
+
+    try:
+        # Graphviz may close standard input when an error occurs,
+        # resulting in a broken pipe on communicate()
+        stdout, stderr = p.communicate(code.encode('utf-8'))
+    except (OSError, IOError) as err:
+        if err.errno != EPIPE:
+            raise
+        wentwrong = True
+    except IOError as err:
+        if err.errno != EINVAL:
+            raise
+        wentwrong = True
+
+    if wentwrong:
+    # in this case, read the standard output and standard error streams
+    # directly, to get the error message(s)
+        stdout, stderr = p.stdout.read(), p.stderr.read()
+        p.wait()
+
+    if p.returncode != 0:
+        raise RuntimeError('dot exited with error:\n[stderr]\n{0}'.format(stderr.decode('utf-8')))
+
+    return stdout
+
+
+@LiquidTags.register('graphviz')
+def graphviz_parser(preprocessor, tag, markup):
+    """ Simple Graphviz parser """
+
+    # Parse the markup string
+    m = DOT_BLOCK_RE.search(markup)
+    if m:
+        # Get program and DOT code
+        code = m.group('code')
+        program = m.group('program').strip()
+
+        # Run specified program with our markup
+        output = run_graphviz(program, code)
+
+        # Return Base64 encoded image
+        return '<span class="graphviz" style="text-align: center;"><img src="data:image/png;base64,%s"></span>' % base64.b64encode(output).decode('utf-8')
+    else:
+        raise ValueError('Error processing input. '
+                         'Expected syntax: {0}'.format(SYNTAX))
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from .liquid_tags import register
+
diff --git a/pelican-plugins/liquid_tags/img.py b/pelican-plugins/liquid_tags/img.py
new file mode 100644
index 0000000..22d83e4
--- /dev/null
+++ b/pelican-plugins/liquid_tags/img.py
@@ -0,0 +1,66 @@
+"""
+Image Tag
+---------
+This implements a Liquid-style image tag for Pelican,
+based on the octopress image tag [1]_
+
+Syntax
+------
+{% img [class name(s)] [http[s]:/]/path/to/image [width [height]] [title text | "title text" ["alt text"]] %}
+
+Examples
+--------
+{% img /images/ninja.png Ninja Attack! %}
+{% img left half http://site.com/images/ninja.png Ninja Attack! %}
+{% img left half http://site.com/images/ninja.png 150 150 "Ninja Attack!" "Ninja in attack posture" %}
+
+Output
+------
+<img src="/images/ninja.png">
+<img class="left half" src="http://site.com/images/ninja.png" title="Ninja Attack!" alt="Ninja Attack!">
+<img class="left half" src="http://site.com/images/ninja.png" width="150" height="150" title="Ninja Attack!" alt="Ninja in attack posture">
+
+[1] https://github.com/imathis/octopress/blob/master/plugins/image_tag.rb
+"""
+import re
+from .mdx_liquid_tags import LiquidTags
+import six
+
+SYNTAX = '{% img [class name(s)] [http[s]:/]/path/to/image [width [height]] [title text | "title text" ["alt text"]] %}'
+
+# Regular expression to match the entire syntax
+ReImg = re.compile("""(?P<class>\S.*\s+)?(?P<src>(?:https?:\/\/|\/|\S+\/)\S+)(?:\s+(?P<width>\d+))?(?:\s+(?P<height>\d+))?(?P<title>\s+.+)?""")
+
+# Regular expression to split the title and alt text
+ReTitleAlt = re.compile("""(?:"|')(?P<title>[^"']+)?(?:"|')\s+(?:"|')(?P<alt>[^"']+)?(?:"|')""")
+
+
+@LiquidTags.register('img')
+def img(preprocessor, tag, markup):
+    attrs = None
+
+    # Parse the markup string
+    match = ReImg.search(markup)
+    if match:
+        attrs = dict([(key, val.strip())
+                      for (key, val) in six.iteritems(match.groupdict()) if val])
+    else:
+        raise ValueError('Error processing input. '
+                         'Expected syntax: {0}'.format(SYNTAX))
+
+    # Check if alt text is present -- if so, split it from title
+    if 'title' in attrs:
+        match = ReTitleAlt.search(attrs['title'])
+        if match:
+            attrs.update(match.groupdict())
+        if not attrs.get('alt'):
+            attrs['alt'] = attrs['title']
+
+    # Return the formatted text
+    return "<img {0}>".format(' '.join('{0}="{1}"'.format(key, val)
+                                       for (key, val) in six.iteritems(attrs)))
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from .liquid_tags import register
+
diff --git a/pelican-plugins/liquid_tags/include_code.py b/pelican-plugins/liquid_tags/include_code.py
new file mode 100644
index 0000000..185a62e
--- /dev/null
+++ b/pelican-plugins/liquid_tags/include_code.py
@@ -0,0 +1,166 @@
+"""
+Include Code Tag
+----------------
+This implements a Liquid-style video tag for Pelican,
+based on the octopress video tag [1]_
+
+Syntax
+------
+{% include_code path/to/code [lang:python] [Title text] [codec:utf8] %}
+
+The "path to code" is specified relative to the ``code`` subdirectory of
+the content directory  Optionally, this subdirectory can be specified in the
+config file:
+
+    CODE_DIR = 'code'
+
+If your input file is not ASCII/UTF-8 encoded, you need to specify the
+appropriate input codec by using the ``codec`` option.
+Example ``codec:iso-8859-1``
+Using this option does not affect the output encoding.
+
+For a list of valid codec identifiers, see
+https://docs.python.org/2/library/codecs.html#standard-encodings
+
+Example
+-------
+{% include_code myscript.py %}
+
+This will import myscript.py from content/code/myscript.py
+and output the contents in a syntax highlighted code block inside a figure,
+with a figcaption listing the file name and download link.
+
+The file link will be valid only if the 'code' directory is listed
+in the STATIC_PATHS setting, e.g.:
+
+    STATIC_PATHS = ['images', 'code']
+
+[1] https://github.com/imathis/octopress/blob/master/plugins/include_code.rb
+"""
+import re
+import os
+import sys
+from .mdx_liquid_tags import LiquidTags
+
+
+SYNTAX = "{% include_code /path/to/code.py [lang:python] [lines:X-Y] "\
+         "[:hidefilename:] [:hidelink:] [:hideall:] [title] %}"
+FORMAT = re.compile(r"""
+^(?:\s+)?                          # Allow whitespace at beginning
+(?P<src>\S+)                       # Find the path
+(?:\s+)?                           # Whitespace
+(?:(?:lang:)(?P<lang>\S+))?        # Optional language
+(?:\s+)?                           # Whitespace
+(?:(?:lines:)(?P<lines>\d+-\d+))?  # Optional lines
+(?:\s+)?                           # Whitespace
+(?P<hidefilename>:hidefilename:)?  # Hidefilename flag
+(?:\s+)?                           # Whitespace
+(?P<hidelink>:hidelink:)?          # Hide download link
+(?:\s+)?                           # Whitespace
+(?P<hideall>:hideall:)?            # Hide title and download link
+(?:\s+)?                           # Whitespace
+(?:(?:codec:)(?P<codec>\S+))?      # Optional language
+(?:\s+)?                           # Whitespace
+(?P<title>.+)?$                    # Optional title
+""", re.VERBOSE)
+
+
+@LiquidTags.register('include_code')
+def include_code(preprocessor, tag, markup):
+
+    title = None
+    lang = None
+    src = None
+
+    match = FORMAT.search(markup)
+    if match:
+        argdict = match.groupdict()
+        title = argdict['title'] or ""
+        lang = argdict['lang']
+        codec = argdict['codec'] or "utf8"
+        lines = argdict['lines']
+        hide_filename = bool(argdict['hidefilename'])
+        hide_link = bool(argdict['hidelink'])
+        hide_all = bool(argdict['hideall'])
+        if lines:
+            first_line, last_line = map(int, lines.split("-"))
+        src = argdict['src']
+
+    if not src:
+        raise ValueError("Error processing input, "
+                         "expected syntax: {0}".format(SYNTAX))
+
+    code_dir = preprocessor.configs.getConfig('CODE_DIR')
+    code_path = os.path.join('content', code_dir, src)
+
+    if not os.path.exists(code_path):
+        raise ValueError("File {0} could not be found".format(code_path))
+
+    if not codec:
+        codec = 'utf-8'
+
+    with open(code_path, encoding=codec) as fh:
+        if lines:
+            code = fh.readlines()[first_line - 1: last_line]
+            code[-1] = code[-1].rstrip()
+            code = "".join(code)
+        else:
+            code = fh.read()
+
+    if (not title and hide_filename) and not hide_all:
+        raise ValueError("Either title must be specified or filename must "
+                         "be available")
+
+    open_tag = "<figure class='code'>\n"
+    close_tag = "</figure>"
+
+    if not hide_all:
+        open_tag+= "<figcaption>"
+
+        if title:
+            open_tag += "<span class=\"liquid-tags-code-title\">{title}</span>".format(title=title.strip())
+
+        if not hide_filename:
+            filename = "%s" % os.path.basename(src)
+            open_tag += "<span class=\"liquid-tags-code-filename\">{filename}</span>".format(filename=filename.strip())
+
+        if lines:
+            lines = " [Lines %s]" % lines
+            open_tag += "<span class=\"liquid-tags-code-lines\">{lines}</span>".format(lines=lines.strip())
+
+        if not hide_link:
+            url = '/{0}/{1}'.format(code_dir, src)
+            url = re.sub('/+', '/', url)
+            open_tag += "<a href='{url}'>download</a>".format(url=url)
+
+        open_tag += "</figcaption>"
+
+    # store HTML tags in the stash.  This prevents them from being
+    # modified by markdown.
+    open_tag = preprocessor.configs.htmlStash.store(open_tag)
+    close_tag = preprocessor.configs.htmlStash.store(close_tag)
+
+    if lang:
+        lang_include = ':::' + lang + '\n    '
+    else:
+        lang_include = ''
+
+    if sys.version_info[0] < 3:
+        source = (open_tag
+                  + '\n\n    '
+                  + lang_include
+                  + '\n    '.join(code.decode(codec).split('\n')) + '\n\n'
+                  + close_tag + '\n')
+    else:
+        source = (open_tag
+                  + '\n\n    '
+                  + lang_include
+                  + '\n    '.join(code.split('\n')) + '\n\n'
+                  + close_tag + '\n')
+
+    return source
+
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/liquid_tags.py b/pelican-plugins/liquid_tags/liquid_tags.py
new file mode 100644
index 0000000..69bb9dd
--- /dev/null
+++ b/pelican-plugins/liquid_tags/liquid_tags.py
@@ -0,0 +1,30 @@
+from pelican import signals
+from .mdx_liquid_tags import LiquidTags, LT_CONFIG, LT_HELP
+
+
+def addLiquidTags(gen):
+    if not gen.settings.get('MARKDOWN'):
+        from pelican.settings import DEFAULT_CONFIG
+        gen.settings['MARKDOWN'] = DEFAULT_CONFIG['MARKDOWN']
+
+    if gen.settings.get('LIQUID_CONFIGS'):
+        for param,default,helptext in gen.settings.get('LIQUID_CONFIGS'):
+            LT_CONFIG[param] = default
+            LT_HELP[param] = helptext
+
+    if LiquidTags not in gen.settings['MARKDOWN']:
+        configs = dict()
+        for key,value in LT_CONFIG.items():
+            configs[key]=value
+        for key,value in gen.settings.items():
+            if key in LT_CONFIG:
+                configs[key]=value
+        gen.settings['MARKDOWN'].setdefault(
+            'extensions', []
+        ).append(
+            LiquidTags(configs)
+        )
+
+
+def register():
+    signals.initialized.connect(addLiquidTags)
diff --git a/pelican-plugins/liquid_tags/literal.py b/pelican-plugins/liquid_tags/literal.py
new file mode 100644
index 0000000..7c04602
--- /dev/null
+++ b/pelican-plugins/liquid_tags/literal.py
@@ -0,0 +1,27 @@
+"""
+Literal Tag
+-----------
+This implements a tag that allows explicitly showing commands which would
+otherwise be interpreted as a liquid tag.
+
+For example, the line
+
+    {% literal video arg1 arg2 %}
+
+would result in the following line:
+
+    {% video arg1 arg2 %}
+
+This is useful when the resulting line would be interpreted as another
+liquid-style tag.
+"""
+from .mdx_liquid_tags import LiquidTags
+
+@LiquidTags.register('literal')
+def literal(preprocessor, tag, markup):
+    return '{%% %s %%}' % markup
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register
+
diff --git a/pelican-plugins/liquid_tags/mdx_liquid_tags.py b/pelican-plugins/liquid_tags/mdx_liquid_tags.py
new file mode 100644
index 0000000..60edf5e
--- /dev/null
+++ b/pelican-plugins/liquid_tags/mdx_liquid_tags.py
@@ -0,0 +1,98 @@
+"""
+Markdown Extension for Liquid-style Tags
+----------------------------------------
+A markdown extension to allow user-defined tags of the form::
+
+    {% tag arg1 arg2 ... argn %}
+
+Where "tag" is associated with some user-defined extension.
+These result in a preprocess step within markdown that produces
+either markdown or html.
+"""
+import warnings
+import markdown
+import itertools
+import re
+import os
+from functools import wraps
+
+# Define some regular expressions
+LIQUID_TAG = re.compile(r'\{%.*?%\}', re.MULTILINE | re.DOTALL)
+EXTRACT_TAG = re.compile(r'(?:\s*)(\S+)(?:\s*)')
+LT_CONFIG = { 'CODE_DIR': 'code',
+              'NOTEBOOK_DIR': 'notebooks',
+              'FLICKR_API_KEY': 'flickr',
+              'GIPHY_API_KEY': 'giphy'
+}
+LT_HELP = { 'CODE_DIR' : 'Code directory for include_code subplugin',
+            'NOTEBOOK_DIR' : 'Notebook directory for notebook subplugin',
+            'FLICKR_API_KEY': 'Flickr key for accessing the API',
+            'GIPHY_API_KEY': 'Giphy key for accessing the API'
+}
+
+class _LiquidTagsPreprocessor(markdown.preprocessors.Preprocessor):
+    _tags = {}
+    def __init__(self, configs):
+        self.configs = configs
+
+    def run(self, lines):
+        page = '\n'.join(lines)
+        liquid_tags = LIQUID_TAG.findall(page)
+
+        for i, markup in enumerate(liquid_tags):
+            # remove {% %}
+            markup = markup[2:-2]
+            tag = EXTRACT_TAG.match(markup).groups()[0]
+            markup = EXTRACT_TAG.sub('', markup, 1)
+            if tag in self._tags:
+                liquid_tags[i] = self._tags[tag](self, tag, markup.strip())
+
+        # add an empty string to liquid_tags so that chaining works
+        liquid_tags.append('')
+
+        # reconstruct string
+        page = ''.join(itertools.chain(*zip(LIQUID_TAG.split(page),
+                                            liquid_tags)))
+
+        # resplit the lines
+        return page.split("\n")
+
+
+class LiquidTags(markdown.Extension):
+    """Wrapper for MDPreprocessor"""
+    def __init__(self, config):
+        try:
+            # Needed for markdown versions >= 2.5
+            for key,value in LT_CONFIG.items():
+                self.config[key] = [value,LT_HELP[key]]
+            super(LiquidTags,self).__init__(**config)
+        except AttributeError:
+            # Markdown versions < 2.5
+            for key,value in LT_CONFIG.items():
+                config[key] = [config[key],LT_HELP[key]]
+            super(LiquidTags,self).__init__(config)
+
+    @classmethod
+    def register(cls, tag):
+        """Decorator to register a new include tag"""
+        def dec(func):
+            if tag in _LiquidTagsPreprocessor._tags:
+                warnings.warn("Enhanced Markdown: overriding tag '%s'" % tag)
+            _LiquidTagsPreprocessor._tags[tag] = func
+            return func
+        return dec
+
+    def extendMarkdown(self, md, md_globals):
+        self.htmlStash = md.htmlStash
+        md.registerExtension(self)
+        # for the include_code preprocessor, we need to re-run the
+        # fenced code block preprocessor after substituting the code.
+        # Because the fenced code processor is run before, {% %} tags
+        # within equations will not be parsed as an include.
+        md.preprocessors.add('mdincludes',
+                             _LiquidTagsPreprocessor(self), ">html_block")
+
+
+def makeExtension(configs=None):
+    """Wrapper for a MarkDown extension"""
+    return LiquidTags(configs=configs)
diff --git a/pelican-plugins/liquid_tags/notebook.py b/pelican-plugins/liquid_tags/notebook.py
new file mode 100644
index 0000000..c310e6d
--- /dev/null
+++ b/pelican-plugins/liquid_tags/notebook.py
@@ -0,0 +1,355 @@
+"""
+Notebook Tag
+------------
+This is a liquid-style tag to include a static html rendering of an IPython
+notebook in a blog post.
+
+Syntax
+------
+{% notebook filename.ipynb [ cells[start:end] language[language] ]%}
+
+The file should be specified relative to the ``notebooks`` subdirectory of the
+content directory.  Optionally, this subdirectory can be specified in the
+config file:
+
+    NOTEBOOK_DIR = 'notebooks'
+
+The cells[start:end] statement is optional, and can be used to specify which
+block of cells from the notebook to include.
+
+The language statement is obvious and can be used to specify whether ipython2
+or ipython3 syntax highlighting should be used.
+
+Requirements
+------------
+- The plugin requires IPython version 1.0 or above.  It no longer supports the
+  standalone nbconvert package, which has been deprecated.
+
+Details
+-------
+Because the notebook relies on some rather extensive custom CSS, the use of
+this plugin requires additional CSS to be inserted into the blog theme.
+After typing "make html" when using the notebook tag, a file called
+``_nb_header.html`` will be produced in the main directory.  The content
+of the file should be included in the header of the theme.  An easy way
+to accomplish this is to add the following lines within the header template
+of the theme you use:
+
+    {% if EXTRA_HEADER %}
+      {{ EXTRA_HEADER }}
+    {% endif %}
+
+and in your ``pelicanconf.py`` file, include the line:
+
+    EXTRA_HEADER = open('_nb_header.html').read().decode('utf-8')
+
+this will insert the appropriate CSS.  All efforts have been made to ensure
+that this CSS will not override formats within the blog theme, but there may
+still be some conflicts.
+"""
+import warnings
+import re
+import os
+from functools import partial
+from io import open
+
+from .mdx_liquid_tags import LiquidTags
+
+import IPython
+IPYTHON_VERSION = IPython.version_info[0]
+
+try:
+    import nbformat
+except:
+    pass
+
+if not IPYTHON_VERSION >= 1:
+    raise ValueError("IPython version 1.0+ required for notebook tag")
+
+if IPYTHON_VERSION > 1:
+    warnings.warn("Pelican plugin is not designed to work with IPython "
+                  "versions greater than 1.x. CSS styles have changed in "
+                  "later releases.")
+
+try:
+    from nbconvert.filters.highlight import _pygments_highlight
+except ImportError:
+    try:
+        from IPython.nbconvert.filters.highlight import _pygments_highlight
+    except ImportError:
+        # IPython < 2.0
+        from IPython.nbconvert.filters.highlight import _pygment_highlight as _pygments_highlight
+
+from pygments.formatters import HtmlFormatter
+
+try:
+    from nbconvert.exporters import HTMLExporter
+except ImportError:
+        from IPython.nbconvert.exporters import HTMLExporter
+
+try:
+    from traitlets.config import Config
+except ImportError:
+    from IPython.config import Config
+
+try:
+    from nbconvert.preprocessors import Preprocessor
+except ImportError:
+    try:
+        from IPython.nbconvert.preprocessors import Preprocessor
+    except ImportError:
+        # IPython < 2.0
+        from IPython.nbconvert.transformers import Transformer as Preprocessor
+
+try:
+    from traitlets import Integer
+except ImportError:
+    from IPython.utils.traitlets import Integer
+
+from copy import deepcopy
+
+#----------------------------------------------------------------------
+# Some code that will be added to the header:
+#  Some of the following javascript/css include is adapted from
+#  IPython/nbconvert/templates/fullhtml.tpl, while some are custom tags
+#  specifically designed to make the results look good within the
+#  pelican-octopress theme.
+JS_INCLUDE = r"""
+<style type="text/css">
+/* Overrides of notebook CSS for static HTML export */
+div.entry-content {
+  overflow: visible;
+  padding: 8px;
+}
+.input_area {
+  padding: 0.2em;
+}
+
+a.heading-anchor {
+ white-space: normal;
+}
+
+.rendered_html
+code {
+ font-size: .8em;
+}
+
+pre.ipynb {
+  color: black;
+  background: #f7f7f7;
+  border: none;
+  box-shadow: none;
+  margin-bottom: 0;
+  padding: 0;
+  margin: 0px;
+  font-size: 13px;
+}
+
+/* remove the prompt div from text cells */
+div.text_cell .prompt {
+    display: none;
+}
+
+/* remove horizontal padding from text cells, */
+/* so it aligns with outer body text */
+div.text_cell_render {
+    padding: 0.5em 0em;
+}
+
+img.anim_icon{padding:0; border:0; vertical-align:middle; -webkit-box-shadow:none; -box-shadow:none}
+
+div.collapseheader {
+    width=100%;
+    background-color:#d3d3d3;
+    padding: 2px;
+    cursor: pointer;
+    font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
+}
+</style>
+
+<script type="text/x-mathjax-config">
+MathJax.Hub.Config({
+    tex2jax: {
+        inlineMath: [['$','$'], ['\\(','\\)']],
+        processEscapes: true,
+        displayMath: [['$$','$$'], ["\\[","\\]"]]
+    }
+});
+</script>
+<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML">
+</script>
+
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+
+<script type="text/javascript">
+jQuery(document).ready(function($) {
+    $("div.collapseheader").click(function () {
+    $header = $(this).children("span").first();
+    $codearea = $(this).children(".input_area");
+    console.log($(this).children());
+    $codearea.slideToggle(500, function () {
+        $header.text(function () {
+            return $codearea.is(":visible") ? "Collapse Code" : "Expand Code";
+        });
+    });
+});
+});
+</script>
+
+"""
+
+CSS_WRAPPER = """
+<style type="text/css">
+{0}
+</style>
+"""
+
+
+#----------------------------------------------------------------------
+# Create a custom preprocessor
+class SliceIndex(Integer):
+    """An integer trait that accepts None"""
+    default_value = None
+
+    def validate(self, obj, value):
+        if value is None:
+            return value
+        else:
+            return super(SliceIndex, self).validate(obj, value)
+
+
+class SubCell(Preprocessor):
+    """A transformer to select a slice of the cells of a notebook"""
+    start = SliceIndex(0, config=True,
+                       help="first cell of notebook to be converted")
+    end = SliceIndex(None, config=True,
+                     help="last cell of notebook to be converted")
+
+    def preprocess(self, nb, resources):
+        nbc = deepcopy(nb)
+        if IPYTHON_VERSION < 3:
+            for worksheet in nbc.worksheets:
+                cells = worksheet.cells[:]
+                worksheet.cells = cells[self.start:self.end]
+        else:
+            nbc.cells = nbc.cells[self.start:self.end]
+
+        return nbc, resources
+
+    call = preprocess # IPython < 2.0
+
+
+
+#----------------------------------------------------------------------
+# Custom highlighter:
+#  instead of using class='highlight', use class='highlight-ipynb'
+def custom_highlighter(source, language='ipython', metadata=None):
+    formatter = HtmlFormatter(cssclass='highlight-ipynb')
+    if not language:
+        language = 'ipython'
+    output = _pygments_highlight(source, formatter, language)
+    return output.replace('<pre>', '<pre class="ipynb">')
+
+
+#----------------------------------------------------------------------
+# Below is the pelican plugin code.
+#
+SYNTAX = "{% notebook /path/to/notebook.ipynb [ cells[start:end] ] [ language[language] ] %}"
+FORMAT = re.compile(r"""^(\s+)?(?P<src>\S+)(\s+)?((cells\[)(?P<start>-?[0-9]*):(?P<end>-?[0-9]*)(\]))?(\s+)?((language\[)(?P<language>-?[a-z0-9\+\-]*)(\]))?(\s+)?$""")
+
+
+@LiquidTags.register('notebook')
+def notebook(preprocessor, tag, markup):
+    match = FORMAT.search(markup)
+    if match:
+        argdict = match.groupdict()
+        src = argdict['src']
+        start = argdict['start']
+        end = argdict['end']
+        language = argdict['language']
+    else:
+        raise ValueError("Error processing input, "
+                         "expected syntax: {0}".format(SYNTAX))
+
+    if start:
+        start = int(start)
+    else:
+        start = 0
+
+    if end:
+        end = int(end)
+    else:
+        end = None
+
+    language_applied_highlighter = partial(custom_highlighter, language=language)
+
+    nb_dir =  preprocessor.configs.getConfig('NOTEBOOK_DIR')
+    nb_path = os.path.join(settings.get('PATH', 'content'), nb_dir, src)
+
+    if not os.path.exists(nb_path):
+        raise ValueError("File {0} could not be found".format(nb_path))
+
+    # Create the custom notebook converter
+    c = Config({'CSSHTMLHeaderTransformer':
+                    {'enabled':True, 'highlight_class':'.highlight-ipynb'},
+                'SubCell':
+                    {'enabled':True, 'start':start, 'end':end}})
+
+    template_file = 'basic'
+    if IPYTHON_VERSION >= 3:
+        if os.path.exists('pelicanhtml_3.tpl'):
+            template_file = 'pelicanhtml_3'
+    elif IPYTHON_VERSION == 2:
+        if os.path.exists('pelicanhtml_2.tpl'):
+            template_file = 'pelicanhtml_2'
+    else:
+        if os.path.exists('pelicanhtml_1.tpl'):
+            template_file = 'pelicanhtml_1'
+
+    if IPYTHON_VERSION >= 2:
+        subcell_kwarg = dict(preprocessors=[SubCell])
+    else:
+        subcell_kwarg = dict(transformers=[SubCell])
+
+    exporter = HTMLExporter(config=c,
+                            template_file=template_file,
+                            filters={'highlight2html': language_applied_highlighter},
+                            **subcell_kwarg)
+
+    # read and parse the notebook
+    with open(nb_path, encoding='utf-8') as f:
+        nb_text = f.read()
+        if IPYTHON_VERSION < 3:
+            nb_json = IPython.nbformat.current.reads_json(nb_text)
+        else:
+            try:
+                nb_json = nbformat.reads(nb_text, as_version=4)
+            except:
+                nb_json = IPython.nbformat.reads(nb_text, as_version=4)
+
+    (body, resources) = exporter.from_notebook_node(nb_json)
+
+    # if we haven't already saved the header, save it here.
+    if not notebook.header_saved:
+        print ("\n ** Writing styles to _nb_header.html: "
+               "this should be included in the theme. **\n")
+
+        header = '\n'.join(CSS_WRAPPER.format(css_line)
+                           for css_line in resources['inlining']['css'])
+        header += JS_INCLUDE
+
+        with open('_nb_header.html', 'w') as f:
+            f.write(header)
+        notebook.header_saved = True
+
+    # this will stash special characters so that they won't be transformed
+    # by subsequent processes.
+    body = preprocessor.configs.htmlStash.store(body)
+    return body
+
+notebook.header_saved = False
+
+
+#----------------------------------------------------------------------
+# This import allows notebook to be a Pelican plugin
+from liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/pelicanhtml_1.tpl b/pelican-plugins/liquid_tags/pelicanhtml_1.tpl
new file mode 100644
index 0000000..e0094f3
--- /dev/null
+++ b/pelican-plugins/liquid_tags/pelicanhtml_1.tpl
@@ -0,0 +1,44 @@
+{%- extends 'html_basic.tpl' -%}
+
+{% block stream_stdout -%}
+<div class="box-flex1 output_subarea output_stream output_stdout">
+<pre class="ipynb">{{output.text |ansi2html}}</pre>
+</div>
+{%- endblock stream_stdout %}
+
+{% block stream_stderr -%}
+<div class="box-flex1 output_subarea output_stream output_stderr">
+<pre class="ipynb">{{output.text |ansi2html}}</pre>
+</div>
+{%- endblock stream_stderr %}
+
+{% block pyerr -%}
+<div class="box-flex1 output_subarea output_pyerr">
+<pre class="ipynb">{{super()}}</pre>
+</div>
+{%- endblock pyerr %}
+
+{%- block data_text %}
+<pre class="ipynb">{{output.text | ansi2html}}</pre>
+{%- endblock -%}
+
+{% block input %}
+{% if "# <!-- collapse=True -->" in cell.input %}
+<div class="collapseheader box-flex1"><span style="font-weight: bold;">Expand Code</span>
+<div class="input_area box-flex1" style="display:none">
+{{ cell.input.replace("# <!-- collapse=True -->\n", "") | highlight2html(metadata=cell.metadata) }}
+</div>
+</div>
+{% elif "# <!-- collapse=False -->" in cell.input %}
+<div class="collapseheader box-flex1"><span style="font-weight: bold;">Collapse Code</span>
+<div class="input_area box-flex1">
+{{ cell.input.replace("# <!-- collapse=False -->\n", "") | highlight2html(metadata=cell.metadata) }}
+</div>
+</div>
+{% else %}
+<div class="input_area box-flex1">
+{{ cell.input | highlight2html(metadata=cell.metadata) }}
+</div>
+{% endif %}
+{%- endblock input %}
+
diff --git a/pelican-plugins/liquid_tags/pelicanhtml_2.tpl b/pelican-plugins/liquid_tags/pelicanhtml_2.tpl
new file mode 100644
index 0000000..937c383
--- /dev/null
+++ b/pelican-plugins/liquid_tags/pelicanhtml_2.tpl
@@ -0,0 +1,44 @@
+{%- extends 'basic.tpl' -%}
+
+{% block stream_stdout -%}
+<div class="box-flex1 output_subarea output_stream output_stdout">
+<pre class="ipynb">{{output.text |ansi2html}}</pre>
+</div>
+{%- endblock stream_stdout %}
+
+{% block stream_stderr -%}
+<div class="box-flex1 output_subarea output_stream output_stderr">
+<pre class="ipynb">{{output.text |ansi2html}}</pre>
+</div>
+{%- endblock stream_stderr %}
+
+{% block pyerr -%}
+<div class="box-flex1 output_subarea output_pyerr">
+<pre class="ipynb">{{super()}}</pre>
+</div>
+{%- endblock pyerr %}
+
+{%- block data_text %}
+<pre class="ipynb">{{output.text | ansi2html}}</pre>
+{%- endblock -%}
+
+{% block input %}
+{% if "# <!-- collapse=True -->" in cell.input %}
+<div class="collapseheader box-flex1"><span style="font-weight: bold;">Expand Code</span>
+<div class="input_area box-flex1" style="display:none">
+{{ cell.input.replace("# <!-- collapse=True -->\n", "") | highlight2html(metadata=cell.metadata) }}
+</div>
+</div>
+{% elif "# <!-- collapse=False -->" in cell.input %}
+<div class="collapseheader box-flex1"><span style="font-weight: bold;">Collapse Code</span>
+<div class="input_area box-flex1">
+{{ cell.input.replace("# <!-- collapse=False -->\n", "") | highlight2html(metadata=cell.metadata) }}
+</div>
+</div>
+{% else %}
+<div class="input_area box-flex1">
+{{ cell.input | highlight2html(metadata=cell.metadata) }}
+</div>
+{% endif %}
+{%- endblock input %}
+
diff --git a/pelican-plugins/liquid_tags/pelicanhtml_3.tpl b/pelican-plugins/liquid_tags/pelicanhtml_3.tpl
new file mode 100644
index 0000000..277aeb0
--- /dev/null
+++ b/pelican-plugins/liquid_tags/pelicanhtml_3.tpl
@@ -0,0 +1,55 @@
+{%- extends 'basic.tpl' -%}
+
+{% block stream_stdout -%}
+<div class="output_subarea output_stream output_stdout output_text">
+<pre class="ipynb">
+{{- output.text | ansi2html -}}
+</pre>
+</div>
+{%- endblock stream_stdout %}
+
+{% block stream_stderr -%}
+<div class="output_subarea output_stream output_stderr output_text">
+<pre class="ipynb">
+{{- output.text | ansi2html -}}
+</pre>
+</div>
+{%- endblock stream_stderr %}
+
+{% block error -%}
+<div class="output_subarea output_text output_error">
+<pre class="ipynb">
+{{- super() -}}
+</pre>
+</div>
+{%- endblock error %}
+
+{%- block data_text scoped %}
+<div class="output_text output_subarea {{extra_class}}">
+<pre class="ipynb">
+{{- output.data['text/plain'] | ansi2html -}}
+</pre>
+</div>
+{%- endblock -%}
+
+{% block input %}
+{% if "# <!-- collapse=True -->" in cell.source %}
+<div class="collapseheader inner_cell"><span style="font-weight: bold;">Expand Code</span>
+<div class="input_area" style="display:none">
+{{ cell.source.replace("# <!-- collapse=True -->\n", "") | highlight_code(metadata=cell.metadata) }}
+</div>
+</div>
+{% elif "# <!-- collapse=False -->" in cell.source %}
+<div class="collapseheader inner_cell"><span style="font-weight: bold;">Collapse Code</span>
+<div class="input_area">
+{{ cell.source.replace("# <!-- collapse=False -->\n", "") | highlight_code(metadata=cell.metadata) }}
+</div>
+</div>
+{% else %}
+<div class="inner_cell">
+    <div class="input_area">
+        {{ cell.source | highlight_code(metadata=cell.metadata) }}
+    </div>
+</div>
+{% endif %}
+{%- endblock input %}
diff --git a/pelican-plugins/liquid_tags/pygalcharts.py b/pelican-plugins/liquid_tags/pygalcharts.py
new file mode 100644
index 0000000..1c31325
--- /dev/null
+++ b/pelican-plugins/liquid_tags/pygalcharts.py
@@ -0,0 +1,164 @@
+"""
+pygal Tag
+---------
+This implements a Liquid-style pygal tag for Pelican. JSON is used for the data,
+and you can pass a bunch of pygal's 'config' items through as-is
+
+[1] http://www.pygal.org/
+
+Syntax
+------
+{% pygal
+    {
+        <graph data>
+    }
+%}
+
+Examples
+--------
+{%
+	pygal {
+		"type": "bar",
+		"title": "Test Chart",
+		"x-labels" : {"from": 2002, "to": 2013},
+		"data" : [
+		{"title": "Firefox",
+		 "values": [null, null, 0, 16.6,   25,   31, 36.4, 45.5, 46.3, 42.8, 37.1]},
+		 {"title": "Chrome",
+		 "values": [null, null, null, null, null, null,    0,  3.9, 10.8, 23.8, 35.3]},
+		 {"title": "IE",
+		 "values": [85.8, 84.6, 84.7, 74.5,   66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1]},
+		 {"title": "Others",
+		 "values": [14.2, 15.4, 15.3,  8.9,    9, 10.4,  8.9,  5.8,  6.7,  6.8,  7.5]}
+		]
+	}
+%}
+
+{%
+	pygal {
+		"type": "pie",
+		"half_pie": true,
+		"title": "Browser usage in February 2012 (in %)",
+		"data" : [
+		{"title": "IE",
+		 "values": 19.5},
+		 {"title": "Firefox",
+		 "values": 36.6},
+		 {"title": "Chrome",
+		 "values": 36.3},
+		 {"title": "Safari",
+		 "values": 4.5},
+		 {"title": "Opera",
+		 "values": 2.3}
+		]
+	}
+%}
+
+{%
+	pygal {
+		"type": "pie",
+			"config": {
+			"show_legend": false,
+			"print_values": true,
+			"show_y_labels": true
+		},
+		"title": "Browser usage in February 2012 (in %)",
+		"data" : [
+		{"title": "IE",
+		 "values": 19.5},
+		 {"title": "Firefox",
+		 "values": 36.6},
+		 {"title": "Chrome",
+		 "values": 36.3},
+		 {"title": "Safari",
+		 "values": 4.5},
+		 {"title": "Opera",
+		 "values": 2.3}
+		]
+	}
+%}
+
+
+
+...
+
+
+Output
+------
+<<div class="pygal" style="text-align: center;"><embed type="image/svg+xml" src=SVG_MARKUP_EMBEDDED style="max-width:1000px"/></div>
+
+"""
+
+import base64
+import re
+from json import loads
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = '{% pygal (data) %}'
+DOT_BLOCK_RE = re.compile(r'^\s*\{\s*(?P<code>.*\})\s*\}$', re.MULTILINE | re.DOTALL)
+
+
+def run_pygal(data, options=[], format='svg'):
+    """ Runs pygal programs and returns image data
+    """
+    import pygal
+
+    chart_title = data.get('title', None)
+    chart_type = data.get('type', '').lower()
+    # Config options are pretty much proxied straight through from the JSON dict into the object
+    config = pygal.Config()
+    config_dict = data.get('config', {})
+    for key in config_dict.keys():
+        setattr(config, key, config_dict[key])
+
+    if chart_type == 'bar':
+        chart = pygal.HorizontalBar(config) if data.get('horizontal', False) else pygal.Bar(config)
+    elif chart_type == 'line':
+        chart = pygal.Line(config)
+    elif chart_type == 'pie':
+        ir=data.get('inner_radius', 0.0)
+        hp=data.get('half_pie', False)
+        chart = pygal.Pie(config, inner_radius=ir, half_pie=hp)
+    else:
+        print('undefined or unknown chart type')
+
+    if chart is not None:
+        chart.title = data.get('title', None)
+        # Do labels (if present)
+        label_data = data.get('x-labels', None)
+        if isinstance(label_data, list):
+            # use list
+            chart.x_labels = label_data
+        elif isinstance(label_data, dict):
+            # use a range
+            range_from = label_data.get('from', 0)
+            range_to = label_data.get('to', 0)
+            chart.x_labels = map(str, range(range_from, range_to))
+        # insert data
+        for data_set in data.get('data', []):
+            title = data_set.get('title', None)
+            values = data_set.get('values', None)
+            chart.add(title, values)
+        # now render
+        result = chart.render_data_uri()
+    else:
+        result = None
+    return result
+
+@LiquidTags.register('pygal')
+def pygal_parser(preprocessor, tag, markup):
+    """ Simple pygal parser """
+    # Find JSON payload
+    data = loads(markup)
+    if tag == 'pygal' and data is not None:
+        # Run generation of chart
+        output = run_pygal(data)
+        # Return embedded SVG image
+        return '<div class="pygal" style="text-align: center;"><embed type="image/svg+xml" src=%s style="max-width:1000px"/></div>' % output
+
+    else:
+        raise ValueError('Error processing input. \nExpected syntax: {0}'.format(SYNTAX))
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from .liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/requirements.txt b/pelican-plugins/liquid_tags/requirements.txt
new file mode 100755
index 0000000..55b033e
--- /dev/null
+++ b/pelican-plugins/liquid_tags/requirements.txt
@@ -0,0 +1 @@
+pytest
\ No newline at end of file
diff --git a/pelican-plugins/liquid_tags/soundcloud.py b/pelican-plugins/liquid_tags/soundcloud.py
new file mode 100644
index 0000000..3f08995
--- /dev/null
+++ b/pelican-plugins/liquid_tags/soundcloud.py
@@ -0,0 +1,70 @@
+"""
+Soundcloud Tag
+--------------
+This implements a Liquid-style soundcloud tag for Pelican.
+
+It asks the official Soundcloud-API for the widget html code.
+
+Syntax
+------
+`{% soundcloud track_url %}`
+
+Example
+-------
+`{% soundcloud https://soundcloud.com/luftmentsh/hakotel %}`
+
+Output
+------
+```
+<iframe width="100%"
+         height="400"
+         scrolling="no"
+         frameborder="no"
+         src="https://w.soundcloud.com/player/?visual=true&url=http%3A%2F%2F\
+             api.soundcloud.com%2Ftracks%2F33875102&show_artwork=true">
+</iframe>
+```
+"""
+import json
+import re
+
+# ---------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register
+
+from .mdx_liquid_tags import LiquidTags
+
+try:
+    from urllib.request import urlopen
+except ImportError:
+    from urllib import urlopen
+
+
+SYNTAX = "{% soundcloud track_url %}"
+PARSE_SYNTAX = re.compile(r"(?P<track_url>https?://soundcloud.com/[\S]+)")
+SOUNDCLOUD_API_URL = "https://soundcloud.com/oembed"
+
+
+def get_widget(track_url):
+    r = urlopen(
+        SOUNDCLOUD_API_URL, data="format=json&url={}".format(track_url).encode("utf-8")
+    )
+
+    return json.loads(r.read().decode("utf-8"))["html"]
+
+
+def match_it(markup):
+    match = PARSE_SYNTAX.search(markup)
+    if match:
+        return match.groupdict()
+    else:
+        raise ValueError(
+            "Error processing input. " "Expected syntax: {}".format(SYNTAX)
+        )
+
+
+@LiquidTags.register("soundcloud")
+def soundcloud(preprocessor, tag, markup):
+    track_url = match_it(markup)["track_url"]
+
+    return get_widget(track_url)
diff --git a/pelican-plugins/liquid_tags/speakerdeck.py b/pelican-plugins/liquid_tags/speakerdeck.py
new file mode 100644
index 0000000..54a13e6
--- /dev/null
+++ b/pelican-plugins/liquid_tags/speakerdeck.py
@@ -0,0 +1,56 @@
+"""
+Speakerdeck Tag
+---------------
+This implements a Liquid-style speakerdeck tag for Pelican.
+
+Syntax
+------
+{% speakerdeck id %}
+
+Example
+-------
+{% speakerdeck 82b209c0f181013106da6eb14261a8ef %}
+
+Output
+------
+<script
+    async
+    class="speakerdeck-embed"
+    data-id="82b209c0f181013106da6eb14261a8ef"
+    data-ratio="1.33333333333333"
+    src="//speakerdeck.com/assets/embed.js">
+</script>
+"""
+import re
+
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = "{% speakerdeck id [ratio] %}"
+
+REGEX = re.compile(r'([\S]+)(\s+(\d*\.?\d*))?')
+
+
+@LiquidTags.register('speakerdeck')
+def speakerdeck(preprocessor, tag, markup):
+    ratio = 1.33333333333333
+    id = None
+    match = REGEX.search(markup)
+    if match:
+        groups = match.groups()
+        id = groups[0]
+        ratio = groups[2] or ratio
+    if id:
+        speakerdeck_out = """
+<script async class="speakerdeck-embed" data-id="{id}"
+data-ratio="{ratio}" src="//speakerdeck.com/assets/embed.js"></script>
+        """.format(id=id, ratio=ratio)
+    else:
+        raise ValueError(
+            "Error processing input, expected syntax: {0}".format(SYNTAX)
+        )
+    return speakerdeck_out
+
+
+# ---------------------------------------------------
+# This import allows speakerdeck tag to be a Pelican plugin
+from liquid_tags import register  # noqa # isort:skip
diff --git a/pelican-plugins/liquid_tags/spotify.py b/pelican-plugins/liquid_tags/spotify.py
new file mode 100644
index 0000000..f3eb875
--- /dev/null
+++ b/pelican-plugins/liquid_tags/spotify.py
@@ -0,0 +1,55 @@
+"""
+Spotify Tag
+---------
+This implements a Liquid-style spotify tag for Pelican,
+based on the jekyll / octopress youtube tag [1]_
+
+Syntax
+------
+{% spotify id %}
+
+Example
+-------
+{% spotify 1HNZcRFlIKwHAJD3LxvX4d %}
+
+Output
+------
+<iframe
+    src='https://embed.spotify.com/?uri=spotify:track:1HNZcRFlIKwHAJD3LxvX4d'
+    width='300' height='380' frameborder='0' allowtransparency='true'>
+</iframe>
+"""
+import re
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = "{% spotify id %}"
+
+SPOTIFY = re.compile(r'(\w+)(\s+(\d+)\s(\d+))?')
+
+
+@LiquidTags.register('spotify')
+def spotify(preprocessor, tag, markup):
+    spotify_id = None
+
+    match = SPOTIFY.search(markup)
+    if match:
+        groups = match.groups()
+        spotify_id = groups[0]
+
+    if spotify_id:
+        spotify_out = """
+        <iframe src='https://embed.spotify.com/?uri=spotify:track:{}'
+          width='300'
+          height='380'
+          frameborder='0'
+          allowtransparency='true'></iframe>""".format(spotify_id).strip()
+    else:
+        raise ValueError("Error processing input, "
+                         "expected syntax: {0}".format(SYNTAX))
+
+    return spotify_out
+
+
+# ---------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register  # noqa
diff --git a/pelican-plugins/liquid_tags/test_audio.py b/pelican-plugins/liquid_tags/test_audio.py
new file mode 100644
index 0000000..4e1fa92
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_audio.py
@@ -0,0 +1,44 @@
+import re
+import sys
+import unittest
+import pytest
+from . import audio
+
+
+if 'nosetests' in sys.argv[0]:
+    raise unittest.SkipTest('Those tests are pytest-compatible only')
+
+
+@pytest.mark.parametrize('input,expected', [
+    ('http://foo.bar https://bar.foo',
+     ('http://foo.bar', 'https://bar.foo', None)),
+    ('http://test.foo',
+     ('http://test.foo', None, None)),
+    ('https://test.foo',
+     ('https://test.foo', None, None)),
+    ('http://foo.foo https://bar.bar http://zonk.zonk',
+     ('http://foo.foo', 'https://bar.bar', 'http://zonk.zonk'))
+])
+def test_regex(input, expected):
+    assert re.match(audio.AUDIO, input).groups() == expected
+
+
+@pytest.mark.parametrize('input,expected', [
+    ('http://foo.foo/foo.mp3',
+     ('<audio controls>'
+      '<source src="http://foo.foo/foo.mp3" type="audio/mpeg">'
+      'Your browser does not support the audio element.</audio>')),
+    ('https://foo.foo/foo.ogg http://bar.bar/bar.opus',
+     ('<audio controls>'
+      '<source src="https://foo.foo/foo.ogg" type="audio/ogg">'
+      '<source src="http://bar.bar/bar.opus" type="audio/ogg">'
+      'Your browser does not support the audio element.</audio>')),
+    ('http://1.de/1.wav http://2.de/2.mp4 http://3.de/3.ogg',
+     ('<audio controls>'
+      '<source src="http://1.de/1.wav" type="audio/wav">'
+      '<source src="http://2.de/2.mp4" type="audio/mp4">'
+      '<source src="http://3.de/3.ogg" type="audio/ogg">'
+      'Your browser does not support the audio element.</audio>'))
+])
+def test_create_html(input, expected):
+    assert audio.create_html(input) == expected
diff --git a/pelican-plugins/liquid_tags/test_data/__init__.py b/pelican-plugins/liquid_tags/test_data/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/liquid_tags/test_data/content/notebooks/test_nbformat3.ipynb b/pelican-plugins/liquid_tags/test_data/content/notebooks/test_nbformat3.ipynb
new file mode 100644
index 0000000..4327ae5
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/content/notebooks/test_nbformat3.ipynb
@@ -0,0 +1,810 @@
+{
+ "metadata": {
+  "name": "",
+  "signature": "sha256:1630a227c54e735b7c11051ce8769271ee46f9bca6c1916bb26cfdba7c01b546"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+  {
+   "cells": [
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Il s\u2019agit de rep\u00e9rer les donn\u00e9es n\u00e9cessaires voire indispensables \u00e0 la\n",
+      "r\u00e9solution. Ces donn\u00e9es peuvent \u00eatre:\n",
+      "\n",
+      "-   num\u00e9riques,\n",
+      "-   ou sous forme de textes (on dit souvent cha\u00eenes de caract\u00e8res),\n",
+      "-   ou de type logique (\u00e0 deux valeurs possibles, vrai ou faux).\n",
+      "\n",
+      "Pour affecter une valeur \u00e0 une variable en python, la syntaxe est de la forme:\n",
+      "\n",
+      "```\n",
+      "nom = valeur\n",
+      "```\n",
+      "\n",
+      "<dl>\n",
+      "<dt>Affectation</dt>\n",
+      "<dd>Dans un programme, une affectation donne une valeur \u00e0 une variable, elle est de la forme <code>v = e</code> avec `v` une variable et `e` une expression.\n",
+      "</dd>\n",
+      "</dl>\n",
+      "\n",
+      "Valeurs num\u00e9riques\n",
+      "==================\n",
+      "\n",
+      "Python distingue les entiers(integers), des nombres \u00e0\n",
+      "virgule(floating-point) par l'ajout d'une virgule:\n",
+      "\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "a = 1\n",
+      "b = 1.0\n",
+      "\n",
+      "print(a, type(a), b, type(b))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "1 <class 'int'> 1.0 <class 'float'>\n"
+       ]
+      }
+     ],
+     "prompt_number": 2
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Mais il impl\u00e9mente aussi des nombres plus exotiques tels que les\n",
+      "d\u00e9cimaux, les fractions ou encore les nombres complexes\n",
+      "\n",
+      "Cha\u00eenes de caract\u00e8res\n",
+      "=====================\n",
+      "\n",
+      "En python3, il existe deux grands types de cha\u00eenes de caract\u00e8res, les\n",
+      "strings, et les bytes. Les strings sont simplement entour\u00e9es par des\n",
+      "guillemets simples ou doubles.\n",
+      "\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "a = 'Mon texte'\n",
+      "b = \"Mon deuxi\u00e8me texte\"\n",
+      "\n",
+      "print(a, type(a), b, type(b))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Mon texte <class 'str'> Mon deuxi\u00e8me texte <class 'str'>\n"
+       ]
+      }
+     ],
+     "prompt_number": 3
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Les bytes sont pr\u00e9c\u00e9d\u00e9es de la lettre b, il s'agit de texte brut utilis\u00e9\n",
+      "par la machine mais pas toujours lisible par un humain.\n",
+      "\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "a = b'Mon texte'\n",
+      "print(a, type(a))\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "b'Mon texte' <class 'bytes'>\n"
+       ]
+      }
+     ],
+     "prompt_number": 4
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "On ne peut repr\u00e9senter simplement que certains caract\u00e8res(les caract\u00e8res\n",
+      "ASCII), les caract\u00e8res accentu\u00e9s ne peuvent \u00eatre \u00e9crits directement.\n",
+      "\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "b = b'Mon deuxi\u00e8me texte'"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "ename": "SyntaxError",
+       "evalue": "bytes can only contain ASCII literal characters. (<ipython-input-5-b0bf0ef2715d>, line 1)",
+       "output_type": "pyerr",
+       "traceback": [
+        "\u001b[1;36m  File \u001b[1;32m\"<ipython-input-5-b0bf0ef2715d>\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m    b = b'Mon deuxi\u00e8me texte'\u001b[0m\n\u001b[1;37m       ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m bytes can only contain ASCII literal characters.\n"
+       ]
+      }
+     ],
+     "prompt_number": 5
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Un encodage autre que le ASCII doit \u00eatre utilis\u00e9 pour ces caract\u00e8res,\n",
+      "comme par exemple le UTF-8 qui est un codage sur huit bits tr\u00e8s r\u00e9pandu.\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "b = b'Mon deuxi\\xc3\\xa8me texte'\n",
+      "print(b)\n",
+      "print(b.decode('utf-8'))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "b'Mon deuxi\\xc3\\xa8me texte'\n",
+        "Mon deuxi\u00e8me texte\n"
+       ]
+      }
+     ],
+     "prompt_number": 6
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Valeurs logiques\n",
+      "================\n",
+      "\n",
+      "On les appelle les bool\u00e9ens, il ne peuvent avoir que deux valeurs:\n",
+      "\n",
+      "-   VRAI ou FAUX: True ou False en anglais;\n",
+      "-   1 ou 0.\n",
+      "\n",
+      "On les utilise pour r\u00e9aliser des tests.\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "1 < 2, 1 > 2, 2 == 10, 2 >= 1.9, 2 == 2, 2 != 2"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 7,
+       "text": [
+        "(True, False, False, True, True, False)"
+       ]
+      }
+     ],
+     "prompt_number": 7
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "On peut aussi les utiliser pour savoir si une variable existe.\n",
+      "\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "bool(a)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 8,
+       "text": [
+        "True"
+       ]
+      }
+     ],
+     "prompt_number": 8
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "On peut aussi combiner plusieurs tests avec les op\u00e9rateurs bool\u00e9ens `and`, `or` et `not`."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "1 < 2 or 2 < 1"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 9,
+       "text": [
+        "True"
+       ]
+      }
+     ],
+     "prompt_number": 9
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "1 < 2 and 2 < 1"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 10,
+       "text": [
+        "False"
+       ]
+      }
+     ],
+     "prompt_number": 10
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "not(1 < 2 and 2 < 1)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 11,
+       "text": [
+        "True"
+       ]
+      }
+     ],
+     "prompt_number": 11
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "#Listes et dictionnaires\n",
+      "\n",
+      "Souvent les donn\u00e9es pertinentes doivent \u00eatre agenc\u00e9es sous une forme\n",
+      "plus vaste, comme par exemple des listes o\u00f9 on peut ranger de fa\u00e7on ordonn\u00e9e *plusieurs valeurs*.\n",
+      "\n",
+      "##Listes\n",
+      "\n",
+      "\n",
+      "Les listes sont des collections *ordonn\u00e9es de valeurs*, elles sont\n",
+      "entour\u00e9es par des crochets `[]`, leurs \u00e9l\u00e9ments sont s\u00e9par\u00e9s par des\n",
+      "virgules.\n",
+      "\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "a = [ 1, 'deux' , 3]\n",
+      "type(a)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 12,
+       "text": [
+        "list"
+       ]
+      }
+     ],
+     "prompt_number": 12
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "On peut facilement acc\u00e9der \u00e0 la longueur de la liste grace \u00e0 la fonction\n",
+      "`len` et \u00e0 chacun de ces \u00e9l\u00e9ments gr\u00e2ce \u00e0 leur index *(Attention le\n",
+      "premier \u00e9lement \u00e0 l'index 0)*\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "len(a)\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 13,
+       "text": [
+        "3"
+       ]
+      }
+     ],
+     "prompt_number": 13
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "a[0], a[2]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 14,
+       "text": [
+        "(1, 3)"
+       ]
+      }
+     ],
+     "prompt_number": 14
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "On peut inversement conna\u00eetre l'indice correspondant \u00e0 une valeur gr\u00e2ce \u00e0 l'attribut `index`."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "a.index(1), a.index('deux'), a.index(3)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 15,
+       "text": [
+        "(0, 1, 2)"
+       ]
+      }
+     ],
+     "prompt_number": 15
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Dictionnaires\n",
+      "\n",
+      "Dans un dictionnaire les valeurs de la collection ne sont pas rep\u00e9r\u00e9 par\n",
+      "un index, mais par une *cl\u00e9*. Les dictionnaires sont entour\u00e9s d'accolades `{}`.\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "a = { 'nom': 'Doe' , 'prenom': 'John', 'age': 77 }\n",
+      "type(a)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 16,
+       "text": [
+        "dict"
+       ]
+      }
+     ],
+     "prompt_number": 16
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Pour acc\u00e9der aux \u00e9l\u00e9ments du dictionnaire, il suffit d'appeler la cl\u00e9\n",
+      "correspondante, d'autres part la fonction `len` est \u00e9galemnt disponible.\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "len(a)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 17,
+       "text": [
+        "3"
+       ]
+      }
+     ],
+     "prompt_number": 17
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "a['nom'], a['age']"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 18,
+       "text": [
+        "('Doe', 77)"
+       ]
+      }
+     ],
+     "prompt_number": 18
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Modification des listes et dictionnaires\n",
+      "\n",
+      "Les listes et dictionnaires sont des objets **mutables**, c'est \u00e0 dire que l'on peut modifier leur contenu sans cr\u00e9er un nouvel objet. On dit qu'il s'agit de donn\u00e9es [non-persistantes](http://fr.wikipedia.org/wiki/Persistance_%28informatique%29).\n",
+      "\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "# Valeurs initiales\n",
+      "liste = [ 1, 'deux' , 3]\n",
+      "dict = { 'nom': 'Doe' , 'prenom': 'John', 'age': 77 }\n",
+      "print(\"Valeurs initiales:\\n\", liste, dict)\n",
+      "\n",
+      "# Modification des valeurs par assignation\n",
+      "liste[1] = 2\n",
+      "dict['age'] = 17\n",
+      "\n",
+      "print(\"Modification des valeurs par assignation:\\n\", liste, dict)\n",
+      "\n",
+      "# Ajout d'\u00e9l\u00e9ments\n",
+      "liste.append(4)\n",
+      "dict['nationalit\u00e9'] = 'fran\u00e7aise'\n",
+      "\n",
+      "print(\"Ajout d'\u00e9l\u00e9ments:\\n\", liste, dict)\n",
+      "\n",
+      "# Suppression d'\u00e9l\u00e9ments\n",
+      "liste.pop(0)\n",
+      "dict.pop('age')\n",
+      "\n",
+      "print(\"Suppression d'\u00e9l\u00e9ments:\\n\", liste, dict)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Valeurs initiales:\n",
+        " [1, 'deux', 3] {'age': 77, 'nom': 'Doe', 'prenom': 'John'}\n",
+        "Modification des valeurs par assignation:\n",
+        " [1, 2, 3] {'age': 17, 'nom': 'Doe', 'prenom': 'John'}\n",
+        "Ajout d'\u00e9l\u00e9ments:\n",
+        " [1, 2, 3, 4] {'age': 17, 'nom': 'Doe', 'nationalit\u00e9': 'fran\u00e7aise', 'prenom': 'John'}\n",
+        "Suppression d'\u00e9l\u00e9ments:\n",
+        " [2, 3, 4] {'nom': 'Doe', 'nationalit\u00e9': 'fran\u00e7aise', 'prenom': 'John'}\n"
+       ]
+      }
+     ],
+     "prompt_number": 19
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Si on a besoin de modifier une liste ou un dictionnaire, mais que l'on veut garder une trace des objets initiaux, il faut commencer par en cr\u00e9er une **copie**, il ne suffit pas de cr\u00e9er une variable supl\u00e9mentaire sans quoi cette variable serait elle aussi modifi\u00e9e si l'objet initial changeait: l'assignation est dite par **r\u00e9f\u00e9rence** dans ce cas."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "# Valeurs initiales\n",
+      "L = [ 1, 'deux' , 3]\n",
+      "print(\"Valeurs initiales:\\n\", L)\n",
+      "\n",
+      "# Cr\u00e9ation d'une r\u00e9f\u00e9rencxe \u00e0 la liste par simple assignation\n",
+      "L_ref = L\n",
+      "\n",
+      "# Cr\u00e9ation d'une copie de la liste\n",
+      "L_copie = list(L)\n",
+      "\n",
+      "# Modification de la liste initiale\n",
+      "L[1] = 2\n",
+      "\n",
+      "print(\"Modification de la liste L:\")\n",
+      "print(\"La liste L a bien, \u00e9t\u00e9 modifi\u00e9e:\", L)\n",
+      "print(\"La liste L_ref a aussi \u00e9t\u00e9 modifi\u00e9e car il s'agit juste d'une r\u00e9f\u00e9rence vers la liste L:\", L_ref)\n",
+      "print(\"La copie L_copie n'a pas \u00e9t\u00e9 modifi\u00e9e:\", L_copie)\n",
+      "\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Valeurs initiales:\n",
+        " [1, 'deux', 3]\n",
+        "Modification de la liste L:\n",
+        "La liste L a bien, \u00e9t\u00e9 modifi\u00e9e: [1, 2, 3]\n",
+        "La liste L_ref a aussi \u00e9t\u00e9 modifi\u00e9e car il s'agit juste d'une r\u00e9f\u00e9rence vers la liste L: [1, 2, 3]\n",
+        "La copie L_copie n'a pas \u00e9t\u00e9 modifi\u00e9e: [1, 'deux', 3]\n"
+       ]
+      }
+     ],
+     "prompt_number": 20
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Entr\u00e9e des donn\u00e9es\n",
+      "==================\n",
+      "\n",
+      "Dans cette phase peut aussi figurer ce qu\u2019on appelle l\u2019entr\u00e9e des\n",
+      "donn\u00e9es, qui peut se manifester par la saisie de caract\u00e8res ou de\n",
+      "nombres sur le clavier, ou la lecture de la position du pointeur de la\n",
+      "souris, ou encore par la lecture d\u2019un fichier contenant ces nombres ou\n",
+      "caract\u00e8res.\n",
+      "\n",
+      "Il s\u2019agit aussi de rep\u00e9rer les r\u00e9sultats interm\u00e9diaires qu\u2019il est bon de\n",
+      "m\u00e9moriser pour la suite car indispensables au traitement.\n",
+      "\n",
+      "Il est parfois utile d\u2019utiliser des variables auxiliaires pour ne pas\n",
+      "perturber les donn\u00e9es initiales.\n",
+      "\n",
+      "Entr\u00e9e des donn\u00e9es au clavier\n",
+      "-----------------------------\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "chiffre = input(\"Entrer la valeur du chiffre souhait\u00e9: \")\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "name": "stdout",
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Entrer la valeur du chiffre souhait\u00e9: 7\n"
+       ]
+      }
+     ],
+     "prompt_number": 21
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "print(chiffre)\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "7\n"
+       ]
+      }
+     ],
+     "prompt_number": 22
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Attention cependant, cette valeur est une cha\u00eene de caract\u00e8re, et les op\u00e9rations sont celles des `string`s."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "print(type(chiffre))\n",
+      "chiffre*10"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "<class 'str'>\n"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 23,
+       "text": [
+        "'7777777777'"
+       ]
+      }
+     ],
+     "prompt_number": 23
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Il convient de la convertir un nombre entier ou flottant avant d'utiliser la valeur."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "chiffre = int(chiffre)\n",
+      "10*chiffre"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 24,
+       "text": [
+        "70"
+       ]
+      }
+     ],
+     "prompt_number": 24
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Lecture d'un fichier\n",
+      "--------------------\n",
+      "\n",
+      "Voici par exemple comment ouvrir et lire un fichier appel\u00e9 `lorem.txt`\n",
+      "contenu dans le r\u00e9p\u00e9rtoire `data` du dossier courant.\n",
+      "\n"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fichier = open('data/lorem.txt')\n",
+      "fichier.read()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 27,
+       "text": [
+        "'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod\\ntempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At\\nvero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,\\nno sea takimata sanctus est Lorem ipsum dolor sit amet.\\n'"
+       ]
+      }
+     ],
+     "prompt_number": 27
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Dans la sortie pr\u00e9c\u00e9dente, les caract\u00e8res `\\n` repr\u00e9sentent les sauts de\n",
+      "ligne, on peut aussi lire le fichier ligne par ligne."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fichier = open('data/lorem.txt')\n",
+      "fichier.readline()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 29,
+       "text": [
+        "'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod\\n'"
+       ]
+      }
+     ],
+     "prompt_number": 29
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}
diff --git a/pelican-plugins/liquid_tags/test_data/content/notebooks/test_nbformat4.ipynb b/pelican-plugins/liquid_tags/test_data/content/notebooks/test_nbformat4.ipynb
new file mode 100644
index 0000000..e8cf0bf
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/content/notebooks/test_nbformat4.ipynb
@@ -0,0 +1,853 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Il s’agit de repérer les données nécessaires voire indispensables à la\n",
+    "résolution. Ces données peuvent être:\n",
+    "\n",
+    "-   numériques,\n",
+    "-   ou sous forme de textes (on dit souvent chaînes de caractères),\n",
+    "-   ou de type logique (à deux valeurs possibles, vrai ou faux).\n",
+    "\n",
+    "Pour affecter une valeur à une variable en python, la syntaxe est de la forme:\n",
+    "\n",
+    "```\n",
+    "nom = valeur\n",
+    "```\n",
+    "\n",
+    "<dl>\n",
+    "<dt>Affectation</dt>\n",
+    "<dd>Dans un programme, une affectation donne une valeur à une variable, elle est de la forme <code>v = e</code> avec `v` une variable et `e` une expression.\n",
+    "</dd>\n",
+    "</dl>\n",
+    "\n",
+    "Valeurs numériques\n",
+    "==================\n",
+    "\n",
+    "Python distingue les entiers(integers), des nombres à\n",
+    "virgule(floating-point) par l'ajout d'une virgule:\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1 <class 'int'> 1.0 <class 'float'>\n"
+     ]
+    }
+   ],
+   "source": [
+    "# <!-- collapse=True -->\n",
+    "a = 1\n",
+    "b = 1.0\n",
+    "\n",
+    "print(a, type(a), b, type(b))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Mais il implémente aussi des nombres plus exotiques tels que les\n",
+    "décimaux, les fractions ou encore les nombres complexes\n",
+    "\n",
+    "Chaînes de caractères\n",
+    "=====================\n",
+    "\n",
+    "En python3, il existe deux grands types de chaînes de caractères, les\n",
+    "strings, et les bytes. Les strings sont simplement entourées par des\n",
+    "guillemets simples ou doubles.\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Mon texte <class 'str'> Mon deuxième texte <class 'str'>\n"
+     ]
+    }
+   ],
+   "source": [
+    "# <!-- collapse=False -->\n",
+    "a = 'Mon texte'\n",
+    "b = \"Mon deuxième texte\"\n",
+    "\n",
+    "print(a, type(a), b, type(b))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Les bytes sont précédées de la lettre b, il s'agit de texte brut utilisé\n",
+    "par la machine mais pas toujours lisible par un humain.\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "b'Mon texte' <class 'bytes'>\n"
+     ]
+    }
+   ],
+   "source": [
+    "a = b'Mon texte'\n",
+    "print(a, type(a))\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "On ne peut représenter simplement que certains caractères(les caractères\n",
+    "ASCII), les caractères accentués ne peuvent être écrits directement.\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "ename": "SyntaxError",
+     "evalue": "bytes can only contain ASCII literal characters. (<ipython-input-5-b0bf0ef2715d>, line 1)",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;36m  File \u001b[1;32m\"<ipython-input-5-b0bf0ef2715d>\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m    b = b'Mon deuxième texte'\u001b[0m\n\u001b[1;37m       ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m bytes can only contain ASCII literal characters.\n"
+     ]
+    }
+   ],
+   "source": [
+    "b = b'Mon deuxième texte'"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Un encodage autre que le ASCII doit être utilisé pour ces caractères,\n",
+    "comme par exemple le UTF-8 qui est un codage sur huit bits très répandu.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "b'Mon deuxi\\xc3\\xa8me texte'\n",
+      "Mon deuxième texte\n"
+     ]
+    }
+   ],
+   "source": [
+    "b = b'Mon deuxi\\xc3\\xa8me texte'\n",
+    "print(b)\n",
+    "print(b.decode('utf-8'))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Valeurs logiques\n",
+    "================\n",
+    "\n",
+    "On les appelle les booléens, il ne peuvent avoir que deux valeurs:\n",
+    "\n",
+    "-   VRAI ou FAUX: True ou False en anglais;\n",
+    "-   1 ou 0.\n",
+    "\n",
+    "On les utilise pour réaliser des tests.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(True, False, False, True, True, False)"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "1 < 2, 1 > 2, 2 == 10, 2 >= 1.9, 2 == 2, 2 != 2"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "On peut aussi les utiliser pour savoir si une variable existe.\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "bool(a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "On peut aussi combiner plusieurs tests avec les opérateurs booléens `and`, `or` et `not`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "1 < 2 or 2 < 1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "False"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "1 < 2 and 2 < 1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "not(1 < 2 and 2 < 1)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#Listes et dictionnaires\n",
+    "\n",
+    "Souvent les données pertinentes doivent être agencées sous une forme\n",
+    "plus vaste, comme par exemple des listes où on peut ranger de façon ordonnée *plusieurs valeurs*.\n",
+    "\n",
+    "##Listes\n",
+    "\n",
+    "\n",
+    "Les listes sont des collections *ordonnées de valeurs*, elles sont\n",
+    "entourées par des crochets `[]`, leurs éléments sont séparés par des\n",
+    "virgules.\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "list"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a = [ 1, 'deux' , 3]\n",
+    "type(a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "On peut facilement accéder à la longueur de la liste grace à la fonction\n",
+    "`len` et à chacun de ces éléments grâce à leur index *(Attention le\n",
+    "premier élement à l'index 0)*\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "3"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(a)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(1, 3)"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a[0], a[2]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "On peut inversement connaître l'indice correspondant à une valeur grâce à l'attribut `index`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(0, 1, 2)"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a.index(1), a.index('deux'), a.index(3)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "##Dictionnaires\n",
+    "\n",
+    "Dans un dictionnaire les valeurs de la collection ne sont pas repéré par\n",
+    "un index, mais par une *clé*. Les dictionnaires sont entourés d'accolades `{}`.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "dict"
+      ]
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a = { 'nom': 'Doe' , 'prenom': 'John', 'age': 77 }\n",
+    "type(a)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Pour accéder aux éléments du dictionnaire, il suffit d'appeler la clé\n",
+    "correspondante, d'autres part la fonction `len` est égalemnt disponible.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "3"
+      ]
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "len(a)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "('Doe', 77)"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a['nom'], a['age']"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "##Modification des listes et dictionnaires\n",
+    "\n",
+    "Les listes et dictionnaires sont des objets **mutables**, c'est à dire que l'on peut modifier leur contenu sans créer un nouvel objet. On dit qu'il s'agit de données [non-persistantes](http://fr.wikipedia.org/wiki/Persistance_%28informatique%29).\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Valeurs initiales:\n",
+      " [1, 'deux', 3] {'age': 77, 'nom': 'Doe', 'prenom': 'John'}\n",
+      "Modification des valeurs par assignation:\n",
+      " [1, 2, 3] {'age': 17, 'nom': 'Doe', 'prenom': 'John'}\n",
+      "Ajout d'éléments:\n",
+      " [1, 2, 3, 4] {'age': 17, 'nom': 'Doe', 'nationalité': 'française', 'prenom': 'John'}\n",
+      "Suppression d'éléments:\n",
+      " [2, 3, 4] {'nom': 'Doe', 'nationalité': 'française', 'prenom': 'John'}\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Valeurs initiales\n",
+    "liste = [ 1, 'deux' , 3]\n",
+    "dict = { 'nom': 'Doe' , 'prenom': 'John', 'age': 77 }\n",
+    "print(\"Valeurs initiales:\\n\", liste, dict)\n",
+    "\n",
+    "# Modification des valeurs par assignation\n",
+    "liste[1] = 2\n",
+    "dict['age'] = 17\n",
+    "\n",
+    "print(\"Modification des valeurs par assignation:\\n\", liste, dict)\n",
+    "\n",
+    "# Ajout d'éléments\n",
+    "liste.append(4)\n",
+    "dict['nationalité'] = 'française'\n",
+    "\n",
+    "print(\"Ajout d'éléments:\\n\", liste, dict)\n",
+    "\n",
+    "# Suppression d'éléments\n",
+    "liste.pop(0)\n",
+    "dict.pop('age')\n",
+    "\n",
+    "print(\"Suppression d'éléments:\\n\", liste, dict)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Si on a besoin de modifier une liste ou un dictionnaire, mais que l'on veut garder une trace des objets initiaux, il faut commencer par en créer une **copie**, il ne suffit pas de créer une variable suplémentaire sans quoi cette variable serait elle aussi modifiée si l'objet initial changeait: l'assignation est dite par **référence** dans ce cas."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Valeurs initiales:\n",
+      " [1, 'deux', 3]\n",
+      "Modification de la liste L:\n",
+      "La liste L a bien, été modifiée: [1, 2, 3]\n",
+      "La liste L_ref a aussi été modifiée car il s'agit juste d'une référence vers la liste L: [1, 2, 3]\n",
+      "La copie L_copie n'a pas été modifiée: [1, 'deux', 3]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Valeurs initiales\n",
+    "L = [ 1, 'deux' , 3]\n",
+    "print(\"Valeurs initiales:\\n\", L)\n",
+    "\n",
+    "# Création d'une référencxe à la liste par simple assignation\n",
+    "L_ref = L\n",
+    "\n",
+    "# Création d'une copie de la liste\n",
+    "L_copie = list(L)\n",
+    "\n",
+    "# Modification de la liste initiale\n",
+    "L[1] = 2\n",
+    "\n",
+    "print(\"Modification de la liste L:\")\n",
+    "print(\"La liste L a bien, été modifiée:\", L)\n",
+    "print(\"La liste L_ref a aussi été modifiée car il s'agit juste d'une référence vers la liste L:\", L_ref)\n",
+    "print(\"La copie L_copie n'a pas été modifiée:\", L_copie)\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Entrée des données\n",
+    "==================\n",
+    "\n",
+    "Dans cette phase peut aussi figurer ce qu’on appelle l’entrée des\n",
+    "données, qui peut se manifester par la saisie de caractères ou de\n",
+    "nombres sur le clavier, ou la lecture de la position du pointeur de la\n",
+    "souris, ou encore par la lecture d’un fichier contenant ces nombres ou\n",
+    "caractères.\n",
+    "\n",
+    "Il s’agit aussi de repérer les résultats intermédiaires qu’il est bon de\n",
+    "mémoriser pour la suite car indispensables au traitement.\n",
+    "\n",
+    "Il est parfois utile d’utiliser des variables auxiliaires pour ne pas\n",
+    "perturber les données initiales.\n",
+    "\n",
+    "Entrée des données au clavier\n",
+    "-----------------------------\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Entrer la valeur du chiffre souhaité: 7\n"
+     ]
+    }
+   ],
+   "source": [
+    "chiffre = input(\"Entrer la valeur du chiffre souhaité: \")\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "7\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(chiffre)\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Attention cependant, cette valeur est une chaîne de caractère, et les opérations sont celles des `string`s."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "<class 'str'>\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "'7777777777'"
+      ]
+     },
+     "execution_count": 23,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "print(type(chiffre))\n",
+    "chiffre*10"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Il convient de la convertir un nombre entier ou flottant avant d'utiliser la valeur."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "70"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "chiffre = int(chiffre)\n",
+    "10*chiffre"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Lecture d'un fichier\n",
+    "--------------------\n",
+    "\n",
+    "Voici par exemple comment ouvrir et lire un fichier appelé `lorem.txt`\n",
+    "contenu dans le répértoire `data` du dossier courant.\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod\\ntempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At\\nvero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,\\nno sea takimata sanctus est Lorem ipsum dolor sit amet.\\n'"
+      ]
+     },
+     "execution_count": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "fichier = open('data/lorem.txt')\n",
+    "fichier.read()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Dans la sortie précédente, les caractères `\\n` représentent les sauts de\n",
+    "ligne, on peut aussi lire le fichier ligne par ligne."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod\\n'"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "fichier = open('data/lorem.txt')\n",
+    "fichier.readline()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.4.0"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/pelican-plugins/liquid_tags/test_data/content/test-generic-config-tag.md b/pelican-plugins/liquid_tags/test_data/content/test-generic-config-tag.md
new file mode 100644
index 0000000..867b8d7
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/content/test-generic-config-tag.md
@@ -0,0 +1,7 @@
+Title: test generic config tag
+Date: 2017-12-03
+Authors: A. Person
+
+This post is written by 
+{% generic config author %}
+if all goes well the blog post author (from settings, not from the post) shows up one line above
diff --git a/pelican-plugins/liquid_tags/test_data/content/test-ipython-notebook-nbformat3.md b/pelican-plugins/liquid_tags/test_data/content/test-ipython-notebook-nbformat3.md
new file mode 100644
index 0000000..0f5d2d8
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/content/test-ipython-notebook-nbformat3.md
@@ -0,0 +1,17 @@
+Title: test ipython notebook nb format 3
+Date: 2015-03-03
+Authors: Testing Man
+
+
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
+tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
+vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
+no sea takimata sanctus est Lorem ipsum dolor sit amet.
+
+#Loading an entire notebook nbformat = 3.0
+
+{% notebook test_nbformat3.ipynb %}
+
+#Loading selected cells from a notebook nbformat = 3.0
+
+{% notebook test_nbformat3.ipynb cells[1:5] %}
diff --git a/pelican-plugins/liquid_tags/test_data/content/test-ipython-notebook-nbformat4.md b/pelican-plugins/liquid_tags/test_data/content/test-ipython-notebook-nbformat4.md
new file mode 100644
index 0000000..680817a
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/content/test-ipython-notebook-nbformat4.md
@@ -0,0 +1,17 @@
+Title: test ipython notebook nb format 4
+Date: 2015-03-03
+Authors: Testing Man
+
+
+Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
+tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
+vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
+no sea takimata sanctus est Lorem ipsum dolor sit amet.
+
+#Loading an entire notebook nbformat = 4.0
+
+{% notebook test_nbformat4.ipynb %}
+
+#Loading selected cells from a notebook nbformat = 4.0
+
+{% notebook test_nbformat4.ipynb cells[1:5] %}
diff --git a/pelican-plugins/liquid_tags/test_data/flickr.json b/pelican-plugins/liquid_tags/test_data/flickr.json
new file mode 100644
index 0000000..dbc7078
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/flickr.json
@@ -0,0 +1 @@
+{"photo":{"id":"18841055371","secret":"17ac287217","server":"5552","farm":6,"dateuploaded":"1434394882","isfavorite":0,"license":"4","safety_level":"0","rotation":0,"originalsecret":"ee4b63c8d8","originalformat":"jpg","owner":{"nsid":"8810721@N07","username":"marvinxsteadfast","realname":"","location":"","iconserver":"0","iconfarm":0,"path_alias":"marvinxsteadfast"},"title":{"_content":"fichte"},"description":{"_content":"Processed with VSCOcam with k1 preset"},"visibility":{"ispublic":1,"isfriend":0,"isfamily":0},"dates":{"posted":"1434394882","taken":"2015-06-13 12:51:14","takengranularity":"0","takenunknown":"0","lastupdate":"1434445581"},"views":"23","editability":{"cancomment":0,"canaddmeta":0},"publiceditability":{"cancomment":1,"canaddmeta":0},"usage":{"candownload":1,"canblog":0,"canprint":0,"canshare":1},"comments":{"_content":"0"},"notes":{"note":[]},"people":{"haspeople":0},"tags":{"tag":[]},"location":{"latitude":"52.418917","longitude":"10.785100","accuracy":"16","context":"0","neighbourhood":{"_content":"Stadtteil Wolfsburg","place_id":"WhlihUxTVLJhqUkmNQ","woeid":"26823353"},"locality":{"_content":"Wolfsburg","place_id":"E0zyhhBWUr1dyKs","woeid":"707678"},"county":{"_content":"Stadtkreis Wolfsburg","place_id":"3NbeUiNQUL9_BB.8dg","woeid":"12596975"},"region":{"_content":"Lower Saxony","place_id":"ul2d17NTUb4lkTA_","woeid":"2345486"},"country":{"_content":"Germany","place_id":"h7eZVDlTUb50Btij9Q","woeid":"23424829"},"place_id":"WhlihUxTVLJhqUkmNQ","woeid":"26823353"},"geoperms":{"ispublic":1,"iscontact":0,"isfriend":0,"isfamily":0},"urls":{"url":[{"type":"photopage","_content":"https:\/\/www.flickr.com\/photos\/marvinxsteadfast\/18841055371\/"}]},"media":"photo"},"stat":"ok"}
\ No newline at end of file
diff --git a/pelican-plugins/liquid_tags/test_data/giphy.json b/pelican-plugins/liquid_tags/test_data/giphy.json
new file mode 100644
index 0000000..8a2d5e1
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/giphy.json
@@ -0,0 +1,2 @@
+
+{"data":{"type":"gif","id":"aMSJFS6oFX0fC","url":"http:\/\/giphy.com\/gifs\/veronica-mars-aMSJFS6oFX0fC","bitly_gif_url":"http:\/\/gph.is\/1hcFOSo","bitly_url":"http:\/\/gph.is\/1hcFOSo","embed_url":"http:\/\/giphy.com\/embed\/aMSJFS6oFX0fC","username":"","source":"http:\/\/www.tumblr.com","rating":"pg","caption":"","content_url":"","import_datetime":"2014-02-21 04:43:11","trending_datetime":"1970-01-01 00:00:00","images":{"fixed_height":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200.gif","width":"350","height":"200","size":"296611","mp4":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200.mp4","mp4_size":"64850","webp":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200.webp","webp_size":"529942"},"fixed_height_still":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200_s.gif","width":"350","height":"200"},"fixed_height_downsampled":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200_d.gif","width":"350","height":"200","size":"243264","webp":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200_d.webp","webp_size":"138300"},"fixed_width":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200w.gif","width":"200","height":"114","size":"120246","mp4":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200w.mp4","mp4_size":"96166","webp":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200w.webp","webp_size":"210140"},"fixed_width_still":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200w_s.gif","width":"200","height":"114"},"fixed_width_downsampled":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200w_d.gif","width":"200","height":"114","size":"113909","webp":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/200w_d.webp","webp_size":"55084"},"fixed_height_small":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/100.gif","width":"175","height":"100","size":"296611","mp4":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/100.mp4","mp4_size":"243931","webp":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/100.webp","webp_size":"136098"},"fixed_height_small_still":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/100_s.gif","width":"175","height":"100"},"fixed_width_small":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/100w.gif","width":"100","height":"57","size":"120246","mp4":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/100w.mp4","mp4_size":"101604","webp":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/100w.webp","webp_size":"55480"},"fixed_width_small_still":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/100w_s.gif","width":"100","height":"57"},"downsized":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/giphy.gif","width":"245","height":"140","size":"487767"},"downsized_still":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/giphy_s.gif","width":"245","height":"140"},"downsized_large":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/giphy.gif","width":"245","height":"140","size":"487767"},"original":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/giphy.gif","width":"245","height":"140","size":"487767","frames":"23","mp4":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/giphy.mp4","mp4_size":"219528","webp":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/giphy.webp","webp_size":"272262"},"original_still":{"url":"http:\/\/media2.giphy.com\/media\/aMSJFS6oFX0fC\/giphy_s.gif","width":"245","height":"140"}}},"meta":{"status":200,"msg":"OK"}}
\ No newline at end of file
diff --git a/pelican-plugins/liquid_tags/test_data/pelicanconf.py b/pelican-plugins/liquid_tags/test_data/pelicanconf.py
new file mode 100644
index 0000000..e6ebd9a
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/pelicanconf.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*- #
+from __future__ import unicode_literals
+
+AUTHOR = 'The Tester'
+SITENAME = 'Testing site'
+SITEURL = 'http://example.com/test'
+
+# to make the test suite portable
+TIMEZONE = 'UTC'
+PATH = 'content'
+
+READERS = {'html': None}
+
+# Generate only one feed
+FEED_ALL_ATOM = None
+CATEGORY_FEED_ATOM = None
+TRANSLATION_FEED_ATOM = None
+AUTHOR_FEED_ATOM = None
+AUTHOR_FEED_RSS = None
+
+# Disable unnecessary pages
+CATEGORY_SAVE_AS = ''
+TAG_SAVE_AS = ''
+AUTHOR_SAVE_AS = ''
+ARCHIVES_SAVE_AS = ''
+AUTHORS_SAVE_AS = ''
+CATEGORIES_SAVE_AS = ''
+TAGS_SAVE_AS = ''
+
+PLUGIN_PATHS = ['../../']
+PLUGINS = ['liquid_tags.notebook', 'liquid_tags.generic']
+
+NOTEBOOK_DIR = 'notebooks'
+LIQUID_CONFIGS = (('PATH', '.', "The default path"), ('THEME', '', 'The theme in use'), ('SITENAME', 'Default Sitename', 'The name of the site'), ('AUTHOR', '', 'Name of the blog author'))
diff --git a/pelican-plugins/liquid_tags/test_data/pelicanhtml_2.tpl b/pelican-plugins/liquid_tags/test_data/pelicanhtml_2.tpl
new file mode 120000
index 0000000..0f51030
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/pelicanhtml_2.tpl
@@ -0,0 +1 @@
+../pelicanhtml_2.tpl
\ No newline at end of file
diff --git a/pelican-plugins/liquid_tags/test_data/pelicanhtml_3.tpl b/pelican-plugins/liquid_tags/test_data/pelicanhtml_3.tpl
new file mode 120000
index 0000000..662692d
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_data/pelicanhtml_3.tpl
@@ -0,0 +1 @@
+../pelicanhtml_3.tpl
\ No newline at end of file
diff --git a/pelican-plugins/liquid_tags/test_flickr.py b/pelican-plugins/liquid_tags/test_flickr.py
new file mode 100644
index 0000000..556dad0
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_flickr.py
@@ -0,0 +1,84 @@
+import os
+import re
+import sys
+import unittest
+try:
+    from unittest.mock import patch
+except ImportError:
+    from mock import patch
+import pytest
+from . import flickr
+
+
+if 'nosetests' in sys.argv[0]:
+    raise unittest.SkipTest('Those tests are pytest-compatible only')
+
+PLUGIN_DIR = os.path.dirname(__file__)
+TEST_DATA_DIR = os.path.join(PLUGIN_DIR, 'test_data')
+
+
+@pytest.mark.parametrize('input,expected', [
+    ('18873146680 large "test 1"',
+     dict(photo_id='18873146680',
+          size='large',
+          alt='test 1')),
+    ('18873146680 large \'test 1\'',
+     dict(photo_id='18873146680',
+          size='large',
+          alt='test 1')),
+    ('18873143536360 medium "test number two"',
+     dict(photo_id='18873143536360',
+          size='medium',
+          alt='test number two')),
+    ('18873143536360 small "test number 3"',
+     dict(photo_id='18873143536360',
+          size='small',
+          alt='test number 3')),
+    ('18873143536360 "test 4"',
+     dict(photo_id='18873143536360',
+          size=None,
+          alt='test 4')),
+    ('18873143536360',
+     dict(photo_id='18873143536360',
+          size=None,
+          alt=None)),
+    ('123456 small',
+     dict(photo_id='123456',
+          size='small',
+          alt=None))
+])
+def test_regex(input, expected):
+    assert re.match(flickr.PARSE_SYNTAX, input).groupdict() == expected
+
+
+@pytest.mark.parametrize('input,expected', [
+    (['1', 'server1', '1', 'secret1', 'small'],
+     'https://farm1.staticflickr.com/server1/1_secret1_n.jpg'),
+    (['2', 'server2', '2', 'secret2', 'medium'],
+     'https://farm2.staticflickr.com/server2/2_secret2_c.jpg'),
+    (['3', 'server3', '3', 'secret3', 'large'],
+     'https://farm3.staticflickr.com/server3/3_secret3_b.jpg')
+])
+def test_source_url(input, expected):
+    assert flickr.source_url(
+        input[0], input[1], input[2], input[3], input[4]) == expected
+
+
+@patch('liquid_tags.flickr.urlopen')
+def test_generage_html(mock_urlopen):
+    # mock the return to deliver the flickr.json file instead
+    with open(TEST_DATA_DIR + '/flickr.json', 'rb') as f:
+        mock_urlopen.return_value.read.return_value = f.read()
+
+        attrs = dict(
+            photo_id='1234567',
+            size='large',
+            alt='this is a test'
+        )
+
+        expected = ('<a href="https://www.flickr.com/photos/'
+                    'marvinxsteadfast/18841055371/">'
+                    '<img src="https://farm6.staticflickr.com/5552/1234567_'
+                    '17ac287217_b.jpg" alt="this is a test"></a>')
+
+        assert flickr.generate_html(attrs, 'abcdef') == expected
diff --git a/pelican-plugins/liquid_tags/test_generation.py b/pelican-plugins/liquid_tags/test_generation.py
new file mode 100644
index 0000000..169034a
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_generation.py
@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+from __future__ import print_function
+
+import filecmp
+import os
+import unittest
+from shutil import rmtree
+from tempfile import mkdtemp
+
+import pytest
+from pelican import Pelican
+from pelican.settings import read_settings
+
+from .notebook import IPYTHON_VERSION
+
+PLUGIN_DIR = os.path.dirname(__file__)
+TEST_DATA_DIR = os.path.join(PLUGIN_DIR, 'test_data')
+
+
+class TestFullRun(unittest.TestCase):
+    '''Test running Pelican with the Plugin'''
+
+    def setUp(self):
+        '''Create temporary output and cache folders'''
+        self.temp_path = mkdtemp(prefix='pelicantests.')
+        self.temp_cache = mkdtemp(prefix='pelican_cache.')
+        os.chdir(TEST_DATA_DIR)
+
+    def tearDown(self):
+        '''Remove output and cache folders'''
+        rmtree(self.temp_path)
+        rmtree(self.temp_cache)
+        os.chdir(PLUGIN_DIR)
+
+    @unittest.skipIf(IPYTHON_VERSION != 3,
+                     reason="output must be created with ipython version 3")
+    def test_generate_with_ipython3(self):
+        '''Test generation of site with the plugin.'''
+
+        base_path = os.path.dirname(os.path.abspath(__file__))
+        base_path = os.path.join(base_path, 'test_data')
+        content_path = os.path.join(base_path, 'content')
+        output_path = os.path.join(base_path, 'output')
+        settings_path = os.path.join(base_path, 'pelicanconf.py')
+        settings = read_settings(path=settings_path,
+                                 override={'PATH': content_path,
+                                           'OUTPUT_PATH': self.temp_path,
+                                           'CACHE_PATH': self.temp_cache,
+                                           }
+                                 )
+
+        pelican = Pelican(settings)
+        pelican.run()
+
+        # test existence
+        assert os.path.exists(os.path.join(self.temp_path,
+                                           'test-ipython-notebook-nb-format-3.html'))
+        assert os.path.exists(os.path.join(self.temp_path,
+                                           'test-ipython-notebook-nb-format-4.html'))
+
+        # test differences
+        #assert filecmp.cmp(os.path.join(output_path,
+        #                                'test-ipython-notebook-v2.html'),
+        #                   os.path.join(self.temp_path,
+        #                                'test-ipython-notebook.html'))
+
+    @unittest.skipIf(IPYTHON_VERSION != 2,
+                     reason="output must be created with ipython version 2")
+    def test_generate_with_ipython2(self):
+        '''Test generation of site with the plugin.'''
+
+        base_path = os.path.dirname(os.path.abspath(__file__))
+        base_path = os.path.join(base_path, 'test_data')
+        content_path = os.path.join(base_path, 'content')
+        settings_path = os.path.join(base_path, 'pelicanconf.py')
+        settings = read_settings(path=settings_path,
+                                 override={'PATH': content_path,
+                                           'OUTPUT_PATH': self.temp_path,
+                                           'CACHE_PATH': self.temp_cache,
+                                           }
+                                 )
+
+        pelican = Pelican(settings)
+        pelican.run()
+
+        # test existence
+        assert os.path.exists(os.path.join(self.temp_path,
+                                           'test-ipython-notebook-nb-format-3.html'))
+        assert os.path.exists(os.path.join(self.temp_path,
+                                           'test-ipython-notebook-nb-format-4.html'))
+
+        # test differences
+        #assert filecmp.cmp(os.path.join(output_path,
+        #                                'test-ipython-notebook-v3.html'),
+        #                   os.path.join(self.temp_path,
+        #                                'test-ipython-notebook.html'))
diff --git a/pelican-plugins/liquid_tags/test_generic.py b/pelican-plugins/liquid_tags/test_generic.py
new file mode 100644
index 0000000..4960219
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_generic.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+from __future__ import print_function
+
+import filecmp
+import os
+import unittest
+from shutil import rmtree
+from tempfile import mkdtemp
+
+import pytest
+from pelican import Pelican
+from pelican.settings import read_settings
+
+PLUGIN_DIR = os.path.dirname(__file__)
+TEST_DATA_DIR = os.path.join(PLUGIN_DIR, 'test_data')
+
+
+class TestFullRun(unittest.TestCase):
+    '''Test running Pelican with the Plugin'''
+
+    def setUp(self):
+        '''Create temporary output and cache folders'''
+        self.temp_path = mkdtemp(prefix='pelicantests.')
+        self.temp_cache = mkdtemp(prefix='pelican_cache.')
+        os.chdir(TEST_DATA_DIR)
+
+    def tearDown(self):
+        '''Remove output and cache folders'''
+        rmtree(self.temp_path)
+        rmtree(self.temp_cache)
+        os.chdir(PLUGIN_DIR)
+
+
+    def test_generic_tag_with_config(self):
+        '''Test generation of site with a generic tag that reads in a config file.'''
+
+        base_path = os.path.dirname(os.path.abspath(__file__))
+        base_path = os.path.join(base_path, 'test_data')
+        content_path = os.path.join(base_path, 'content')
+        output_path = os.path.join(base_path, 'output')
+        settings_path = os.path.join(base_path, 'pelicanconf.py')
+        settings = read_settings(path=settings_path,
+                                 override={'PATH': content_path,
+                                           'OUTPUT_PATH': self.temp_path,
+                                           'CACHE_PATH': self.temp_cache,
+                                           }
+                                 )
+
+        pelican = Pelican(settings)
+        pelican.run()
+
+        assert os.path.exists(os.path.join(self.temp_path,
+                                           'test-generic-config-tag.html'))
+
+        assert "Tester" in open(os.path.join(self.temp_path,
+                                           'test-generic-config-tag.html')).read()
+        # test differences
+        #assert filecmp.cmp(os.path.join(output_path,
+        #                                'test-ipython-notebook-v3.html'),
+        #                   os.path.join(self.temp_path,
+        #                                'test-ipython-notebook.html'))
diff --git a/pelican-plugins/liquid_tags/test_giphy.py b/pelican-plugins/liquid_tags/test_giphy.py
new file mode 100644
index 0000000..a6d915d
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_giphy.py
@@ -0,0 +1,34 @@
+import os
+import sys
+import unittest
+try:
+    from unittest.mock import patch
+except ImportError:
+    from mock import patch
+import pytest
+from . import giphy
+
+
+if 'nosetests' in sys.argv[0]:
+    raise unittest.SkipTest('Those tests are pytest-compatible only')
+
+PLUGIN_DIR = os.path.dirname(__file__)
+TEST_DATA_DIR = os.path.join(PLUGIN_DIR, 'test_data')
+
+
+@pytest.mark.parametrize('input,expected', [
+    (dict(gif_id='abc123'),
+     ('<a href="http://giphy.com/gifs/veronica-mars-aMSJFS6oFX0fC">'
+      '<img src="http://media2.giphy.com/media/'
+      'aMSJFS6oFX0fC/giphy.gif" alt="source: http://www.tumblr.com"></a>')),
+    (dict(gif_id='abc123', alt='ive had some free time'),
+     ('<a href="http://giphy.com/gifs/veronica-mars-aMSJFS6oFX0fC">'
+      '<img src="http://media2.giphy.com/media/'
+      'aMSJFS6oFX0fC/giphy.gif" alt="ive had some free time"></a>'))
+])
+@patch('liquid_tags.giphy.urlopen')
+def test_create_html(mock_urlopen, input, expected):
+    with open(TEST_DATA_DIR + '/giphy.json', 'rb') as f:
+        mock_urlopen.return_value.read.return_value = f.read()
+
+        assert giphy.create_html('test_api_key', input) == expected
diff --git a/pelican-plugins/liquid_tags/test_include_code.py b/pelican-plugins/liquid_tags/test_include_code.py
new file mode 100644
index 0000000..a5321c6
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_include_code.py
@@ -0,0 +1,247 @@
+import re
+import sys
+import unittest
+
+import pytest
+
+from . import include_code
+
+if 'nosetests' in sys.argv[0]:
+    raise unittest.SkipTest('Those tests are pytest-compatible only')
+
+@pytest.mark.parametrize(
+        'input,expected', [
+            (
+                'test_data/main.c',
+                ('test_data/main.c', None, None, None, None, None, None, None)
+            ),
+            (
+                'test_data/main.c lang:c',
+                ('test_data/main.c', 'c', None, None, None, None, None, None)
+            ),
+            (
+                'test_data/main.c lang:c lines:1-10',
+                ('test_data/main.c', 'c', '1-10', None, None, None, None, None)
+            ),
+            (
+                'test_data/main.c lang:c lines:1-10 :hidefilename:',
+                ('test_data/main.c', 'c', '1-10', ':hidefilename:', None, None,
+                 None, None)
+            ),
+            (
+                'test_data/main.c lang:c lines:1-10 :hidefilename: :hidelink:',
+                ('test_data/main.c', 'c', '1-10', ':hidefilename:', ':hidelink:',
+                 None, None, None)
+            ),
+            (
+                'test_data/main.c lang:c lines:1-10 :hidefilename: :hidelink: '\
+                ':hideall:',
+                ('test_data/main.c', 'c', '1-10', ':hidefilename:', ':hidelink:',
+                 ":hideall:", None, None)
+            ),
+            (
+                'test_data/main.c lang:c lines:1-10 :hidefilename: :hidelink: '\
+                ':hideall: codec:iso-8859-1',
+                ('test_data/main.c', 'c', '1-10', ':hidefilename:', ':hidelink:',
+                 ':hideall:', 'iso-8859-1', None)
+            ),
+            (
+                'test_data/main.c lang:c lines:1-10 :hidefilename: :hidelink: '\
+                ':hideall: codec:iso-8859-1 Hello It\'s me - Title',
+                ('test_data/main.c', 'c', '1-10', ':hidefilename:', ':hidelink:',
+                 ':hideall:', 'iso-8859-1', 'Hello It\'s me - Title')
+            ),
+        ]
+)
+def test_regex(input, expected):
+    print(re.match(include_code.FORMAT, input).groups())
+    assert re.match(include_code.FORMAT, input).groups() == expected
+
+class Object:
+    pass
+
+class preprocessor:
+    @classmethod
+    def func(*x, safe=False):
+        return ''.join([str(s) for s in x])
+
+    def __init__(self):
+        self.configs = Object()
+        self.configs.getConfig = lambda x: ''
+        self.configs.htmlStash = Object()
+        self.configs.htmlStash.store = self.func
+
+@pytest.mark.parametrize(
+        'input, expected', [
+            (
+                'test_data/main.c',
+                (
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '<figure class=\'code\'>\n<figcaption>'
+                    '<span>main.c</span> '
+                    '<a href=\'/test_data/main.c\'>download</a>'
+                    '\n'
+                    '\n'
+                    '    #include <stdio.h>\n'
+                    '    \n'
+                    '    int main(int argc, char** argv){\n'
+                    '        printf("Hello world!");\n'
+                    '    \n'
+                    '        return 0;\n'
+                    '    }\n'
+                    '    \n'
+                    '\n'
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '</figure>\n'
+                )
+            ),
+            (
+                'test_data/main.c :hideall:',
+                (
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '<figure class=\'code\'>\n<figcaption>'
+                    '\n'
+                    '\n'
+                    '    #include <stdio.h>\n'
+                    '    \n'
+                    '    int main(int argc, char** argv){\n'
+                    '        printf("Hello world!");\n'
+                    '    \n'
+                    '        return 0;\n'
+                    '    }\n'
+                    '    \n'
+                    '\n'
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '</figure>\n'
+                )
+            ),
+            (
+                'test_data/main.c :hidefilename: C application',
+                (
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '<figure class=\'code\'>\n<figcaption>'
+                    '<a href=\'/test_data/main.c\'>download</a>'
+                    '\n'
+                    '\n'
+                    '    #include <stdio.h>\n'
+                    '    \n'
+                    '    int main(int argc, char** argv){\n'
+                    '        printf("Hello world!");\n'
+                    '    \n'
+                    '        return 0;\n'
+                    '    }\n'
+                    '    \n'
+                    '\n'
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '</figure>\n'
+                )
+            ),
+            (
+                'test_data/main.c :hidelink:',
+                (
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '<figure class=\'code\'>\n<figcaption>'
+                    '<span>main.c</span> '
+                    '\n'
+                    '\n'
+                    '    #include <stdio.h>\n'
+                    '    \n'
+                    '    int main(int argc, char** argv){\n'
+                    '        printf("Hello world!");\n'
+                    '    \n'
+                    '        return 0;\n'
+                    '    }\n'
+                    '    \n'
+                    '\n'
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '</figure>\n'
+                )
+            ),
+            (
+                'test_data/main.c lang:c',
+                (
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '<figure class=\'code\'>\n<figcaption>'
+                    '<span>main.c</span> '
+                    '<a href=\'/test_data/main.c\'>download</a>'
+                    '\n'
+                    '\n'
+                    '    :::c\n'
+                    '    #include <stdio.h>\n'
+                    '    \n'
+                    '    int main(int argc, char** argv){\n'
+                    '        printf("Hello world!");\n'
+                    '    \n'
+                    '        return 0;\n'
+                    '    }\n'
+                    '    \n'
+                    '\n'
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '</figure>\n'
+                )
+            ),
+            (
+                'test_data/main.c lines:4-6',
+                (
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '<figure class=\'code\'>\n<figcaption>'
+                    '<span>main.c [Lines 4-6]</span> '
+                    '<a href=\'/test_data/main.c\'>download</a>'
+                    '\n'
+                    '\n'
+                    '        printf("Hello world!");\n'
+                    '    \n'
+                    '        return 0;\n'
+                    '\n'
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '</figure>\n'
+                )
+            ),
+            (
+                'test_data/main_cz.c codec:iso-8859-1',
+                (
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '<figure class=\'code\'>\n<figcaption>'
+                    '<span>main_cz.c</span> '
+                    '<a href=\'/test_data/main_cz.c\'>download</a>'
+                    '\n'
+                    '\n'
+                    '    #include <stdio.h>\n'
+                    '    \n'
+                    '    int main(int argc, char** argv){\n'
+                    '        printf("Dobrý");\n'
+                    '    \n'
+                    '        return 0;\n'
+                    '    }\n'
+                    '    \n'
+                    '\n'
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '</figure>\n'
+                )
+            ),
+            (
+                'test_data/main.c C Application',
+                (
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '<figure class=\'code\'>\n<figcaption>'
+                    '<span>C Application main.c</span> '
+                    '<a href=\'/test_data/main.c\'>download</a>'
+                    '\n'
+                    '\n'
+                    '    #include <stdio.h>\n'
+                    '    \n'
+                    '    int main(int argc, char** argv){\n'
+                    '        printf("Hello world!");\n'
+                    '    \n'
+                    '        return 0;\n'
+                    '    }\n'
+                    '    \n'
+                    '\n'
+                    '<class \'liquid_tags.test_include_code.preprocessor\'>'
+                    '</figure>\n'
+                )
+            ),
+        ]
+)
+def test_create_html(input, expected):
+    assert include_code.include_code(preprocessor(), 'include_code', input) == expected
diff --git a/pelican-plugins/liquid_tags/test_notebook.py b/pelican-plugins/liquid_tags/test_notebook.py
new file mode 100644
index 0000000..d699cdc
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_notebook.py
@@ -0,0 +1,100 @@
+import re
+import sys
+import unittest
+
+if 'nosetests' in sys.argv[0]:
+    raise unittest.SkipTest('Those tests are pytest-compatible only')
+
+import pytest
+pytest.skip("Test is currently broken, see pelican pr #1618", allow_module_level=True)
+
+from pelican.tests.support import unittest
+
+from . import notebook
+
+
+class TestNotebookTagRegex(unittest.TestCase):
+
+    def get_argdict(self, markup):
+
+        match = notebook.FORMAT.search(markup)
+
+        if match:
+            argdict = match.groupdict()
+
+            src = argdict['src']
+            start = argdict['start']
+            end = argdict['end']
+            language = argdict['language']
+
+            return src, start, end, language
+
+        return None
+
+    def test_basic_notebook_tag(self):
+        markup = u'path/to/thing.ipynb'
+        src, start, end, language = self.get_argdict(markup)
+
+        self.assertEqual(src, u'path/to/thing.ipynb')
+        self.assertIsNone(start)
+        self.assertIsNone(end)
+        self.assertIsNone(language)
+
+    def test_basic_notebook_tag_insensitive_to_whitespace(self):
+        markup = u'   path/to/thing.ipynb '
+        src, start, end, language = self.get_argdict(markup)
+
+        self.assertEqual(src, u'path/to/thing.ipynb')
+        self.assertIsNone(start)
+        self.assertIsNone(end)
+        self.assertIsNone(language)
+
+    def test_notebook_tag_with_cells(self):
+        markup = u'path/to/thing.ipynb cells[1:5]'
+        src, start, end, language = self.get_argdict(markup)
+
+        self.assertEqual(src, u'path/to/thing.ipynb')
+        self.assertEqual(start, u'1')
+        self.assertEqual(end, u'5')
+        self.assertIsNone(language)
+
+    def test_notebook_tag_with_alphanumeric_language(self):
+        markup = u'path/to/thing.ipynb language[python3]'
+        src, start, end, language = self.get_argdict(markup)
+
+        self.assertEqual(src, u'path/to/thing.ipynb')
+        self.assertIsNone(start)
+        self.assertIsNone(end)
+        self.assertEqual(language, u'python3')
+
+    def test_notebook_tag_with_symbol_in_name_language(self):
+        for short_name in [u'c++', u'cpp-objdump', u'c++-objdumb', u'cxx-objdump']:
+            markup = u'path/to/thing.ipynb language[{}]'.format(short_name)
+            src, start, end, language = self.get_argdict(markup)
+
+            self.assertEqual(src, u'path/to/thing.ipynb')
+            self.assertIsNone(start)
+            self.assertIsNone(end)
+            self.assertEqual(language, short_name)
+
+    def test_notebook_tag_with_language_and_cells(self):
+        markup = u'path/to/thing.ipynb cells[1:5] language[julia]'
+        src, start, end, language = self.get_argdict(markup)
+
+        self.assertEqual(src, u'path/to/thing.ipynb')
+        self.assertEqual(start, u'1')
+        self.assertEqual(end, u'5')
+        self.assertEqual(language, u'julia')
+
+    def test_notebook_tag_with_language_and_cells_and_weird_spaces(self):
+        markup = u'   path/to/thing.ipynb   cells[1:5]  language[julia]       '
+        src, start, end, language = self.get_argdict(markup)
+
+        self.assertEqual(src, u'path/to/thing.ipynb')
+        self.assertEqual(start, u'1')
+        self.assertEqual(end, u'5')
+        self.assertEqual(language, u'julia')
+
+
+if __name__ == '__main__':
+    unittest.main()
\ No newline at end of file
diff --git a/pelican-plugins/liquid_tags/test_soundcloud.py b/pelican-plugins/liquid_tags/test_soundcloud.py
new file mode 100644
index 0000000..9809435
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_soundcloud.py
@@ -0,0 +1,45 @@
+import sys
+import unittest
+
+import pytest
+
+from . import soundcloud
+
+if "nosetests" in sys.argv[0]:
+    raise unittest.SkipTest("Those tests are pytest-compatible only")
+
+
+@pytest.mark.parametrize(
+    "input,expected",
+    [
+        (
+            "https://soundcloud.com/forss/in-paradisum",
+            dict(track_url="https://soundcloud.com/forss/in-paradisum"),
+        ),
+        (
+            "https://soundcloud.com/forss/in-paradisum",
+            dict(track_url="https://soundcloud.com/forss/in-paradisum"),
+        ),
+        (
+            "https://soundcloud.com/toroymoi/real-love-ft-kool-ad",
+            dict(track_url="https://soundcloud.com/toroymoi/real-love-ft-kool-ad"),
+        ),
+        (
+            "https://soundcloud.com/capturedtracks/sets/wild-nothing-nocturne",
+            dict(
+                track_url=(
+                    "https://soundcloud.com/capturedtracks/"
+                    "sets/wild-nothing-nocturne"
+                )
+            ),
+        ),
+    ],
+)
+def test_match_it(input, expected):
+    assert soundcloud.match_it(input) == expected
+
+
+@pytest.mark.parametrize("input", ["http://foobar.com", "foobar", "https://google.com"])
+def test_match_it_exception(input):
+    with pytest.raises(ValueError):
+        soundcloud.match_it(input)
diff --git a/pelican-plugins/liquid_tags/test_video.py b/pelican-plugins/liquid_tags/test_video.py
new file mode 100644
index 0000000..501c684
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_video.py
@@ -0,0 +1,42 @@
+import unittest
+from .video import video
+
+
+class TestVideoTag(unittest.TestCase):
+
+    maxDiff = None
+
+    def setUp(self):
+        self.preprocessor = None
+        self.tag = 'video'
+
+    def test_normal_example(self):
+        markup = 'http://site.com/video.mp4 720 480 http://site.com/poster-frame.jpg'
+        expected = (
+            '<video width="720" height="480" preload="none" controls poster="http://site.com/poster-frame.jpg">'
+            "<source src='http://site.com/video.mp4' type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'>"
+            "</video>")
+        actual = video(self.preprocessor, self.tag, markup)
+        self.assertIn(expected, actual)
+
+    def test_relative_path(self):
+        markup = 'files/video.mp4 720 480 images/poster-frame.jpg'
+        expected = (
+            '<video width="720" height="480" preload="none" controls poster="images/poster-frame.jpg">'
+            "<source src='files/video.mp4' type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'>"
+            "</video>")
+        actual = video(self.preprocessor, self.tag, markup)
+        self.assertIn(expected, actual)
+
+    def test_internal_content(self):
+        markup = '{filename}../files/video.mp4 720 480 {filename}../images/poster-frame.jpg'
+        expected = (
+            '<video width="720" height="480" preload="none" controls poster="{filename}../images/poster-frame.jpg">'
+            "<source src='{filename}../files/video.mp4' type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'>"
+            "</video>")
+        actual = video(self.preprocessor, self.tag, markup)
+        self.assertIn(expected, actual)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/pelican-plugins/liquid_tags/test_youtube.py b/pelican-plugins/liquid_tags/test_youtube.py
new file mode 100644
index 0000000..92cb59f
--- /dev/null
+++ b/pelican-plugins/liquid_tags/test_youtube.py
@@ -0,0 +1,52 @@
+import sys
+import unittest
+
+import pytest
+
+from . import youtube
+
+
+if "nosetests" in sys.argv[0]:
+    raise unittest.SkipTest("Those tests are pytest-compatible only")
+
+
+class configs:
+    def __init__(self):
+        self.config = {}
+
+    def setConfig(self, name, value):
+        self.config[name] = value
+
+    def getConfig(self, name):
+        try:
+            out = self.config[name]
+        except KeyError:
+            out = ''
+
+        return out
+
+
+class fake_proc:
+    def __init__(self):
+        self.configs = configs()
+
+
+@pytest.mark.parametrize('input,expected', [
+    ('v78_WujMnVk', """<a
+                    href="https://www.youtube.com/watch?v=v78_WujMnVk"
+                class="youtube_video" alt="YouTube Video"
+                title="Click to view on YouTube">
+                    <img width="1280" height="720"
+                        src="https://img.youtube.com/vi/v78_WujMnVk/maxresdefault.jpg">
+                </a>""")])
+def test_youtube(input, expected):
+    fake_preproc = fake_proc()
+
+    fake_preproc.configs.setConfig('YOUTUBE_THUMB_ONLY', True)
+    fake_preproc.configs.setConfig('YOUTUBE_THUMB_SIZE', 'maxres')
+
+    print(fake_preproc.configs.config)
+
+    out = youtube.youtube(fake_preproc, '', input)
+
+    assert out == expected
diff --git a/pelican-plugins/liquid_tags/tox.ini b/pelican-plugins/liquid_tags/tox.ini
new file mode 100644
index 0000000..e2e22bd
--- /dev/null
+++ b/pelican-plugins/liquid_tags/tox.ini
@@ -0,0 +1,17 @@
+[tox]
+skipsdist = True
+minversion = 1.8
+envlist =
+       py{27,34}-ipython2,
+       py{27,34}-ipython3,
+
+[testenv]
+commands = py.test
+
+deps =
+	pytest
+	pelican
+	markdown
+	mock
+	ipython2: ipython[notebook]>=2,<3
+	ipython3: ipython[notebook]
diff --git a/pelican-plugins/liquid_tags/video.py b/pelican-plugins/liquid_tags/video.py
new file mode 100644
index 0000000..2ef8baf
--- /dev/null
+++ b/pelican-plugins/liquid_tags/video.py
@@ -0,0 +1,80 @@
+"""
+Video Tag
+---------
+This implements a Liquid-style video tag for Pelican,
+based on the octopress video tag [1]_
+
+Syntax
+------
+{% video url/to/video [width height] [url/to/poster] %}
+
+Example
+-------
+{% video http://site.com/video.mp4 100% 480 http://site.com/poster-frame.jpg %}
+
+Output
+------
+<span class="videobox">
+	<video width='100%' height='480' preload='none' controls poster='http://site.com/poster-frame.jpg'>
+	   <source src='http://site.com/video.mp4' type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'/>
+	</video>
+</span>
+
+[1] https://github.com/imathis/octopress/blob/master/plugins/video_tag.rb
+"""
+import os
+import re
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = "{% video [http[s]://]path/to/video [[http[s]://]path/to/video] [[http[s]://]path/to/video] [width height] [[http[s]://]path/to/poster] %}"
+
+VIDEO = re.compile(
+    r'((?:https?://|/|\S+/)\S+)(\s+((?:https?://|/|\S+/)\S+))?(\s+((?:https?://|/|\S+/)\S+))?'  # Up to 3 videos
+    r'(\s+(\d+\%?)\s(\d+\%?))?'  # width and height
+    r'(\s+((?:https?://|/|\S+/)\S+))?'  # poster
+)
+
+VID_TYPEDICT = {'.mp4':"type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'",
+                '.ogv':"type='video/ogg; codecs=theora, vorbis'",
+                '.webm':"type='video/webm; codecs=vp8, vorbis'"}
+
+
+@LiquidTags.register('video')
+def video(preprocessor, tag, markup):
+    videos = []
+    width = None
+    height = None
+    poster = None
+
+    match = VIDEO.search(markup)
+    if match:
+        groups = match.groups()
+        videos = [g for g in groups[0:6:2] if g]
+        width = groups[6]
+        height = groups[7]
+        poster = groups[9]
+
+    if any(videos):
+        video_out = """
+        <span class="videobox">
+            <video width="{width}" height="{height}" preload="none" controls poster="{poster}">
+        """.format(width=width, height=height, poster=poster).strip()
+
+        for vid in videos:
+            base, ext = os.path.splitext(vid)
+            if ext not in VID_TYPEDICT:
+                raise ValueError("Unrecognized video extension: "
+                                 "{0}".format(ext))
+            video_out += ("<source src='{0}' "
+                          "{1}>".format(vid, VID_TYPEDICT[ext]))
+        video_out += "</video></span>"
+    else:
+        raise ValueError("Error processing input, "
+                         "expected syntax: {0}".format(SYNTAX))
+
+    return video_out
+
+
+#----------------------------------------------------------------------
+# This import allows video tag to be a Pelican plugin
+from liquid_tags import register
diff --git a/pelican-plugins/liquid_tags/vimeo.py b/pelican-plugins/liquid_tags/vimeo.py
new file mode 100644
index 0000000..e60f0b1
--- /dev/null
+++ b/pelican-plugins/liquid_tags/vimeo.py
@@ -0,0 +1,68 @@
+"""
+Vimeo Tag
+---------
+This implements a Liquid-style vimeo tag for Pelican,
+based on the youtube tag which is in turn based on
+the jekyll / octopress youtube tag [1]_
+
+Syntax
+------
+{% vimeo id [width height] %}
+
+Example
+-------
+{% vimeo 10739054 640 480 %}
+
+Output
+------
+<span style="width:640px; height:480px;">
+    <iframe
+        src="//player.vimeo.com/video/10739054?title=0&amp;byline=0&amp;portrait=0"
+        width="640" height="480" frameborder="0"
+        webkitallowfullscreen mozallowfullscreen allowfullscreen>
+    </iframe>
+</span>
+
+[1] https://gist.github.com/jamieowen/2063748
+"""
+import re
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = "{% vimeo id [width height] %}"
+
+VIMEO = re.compile(r'(\S+)(\s+(\d+)\s(\d+))?')
+
+
+@LiquidTags.register('vimeo')
+def vimeo(preprocessor, tag, markup):
+    width = 640
+    height = 390
+    vimeo_id = None
+
+    match = VIMEO.search(markup)
+    if match:
+        groups = match.groups()
+        vimeo_id = groups[0]
+        width = groups[2] or width
+        height = groups[3] or height
+
+    if vimeo_id:
+        vimeo_out = """
+            <span class="videobox">
+                <iframe
+                    src="//player.vimeo.com/video/{vimeo_id}?title=0&amp;byline=0&amp;portrait=0"
+                    width="{width}" height="{height}" frameborder="0"
+                    webkitAllowFullScreen mozallowfullscreen allowFullScreen>
+                </iframe>
+            </span>
+        """.format(width=width, height=height, vimeo_id=vimeo_id).strip()
+    else:
+        raise ValueError("Error processing input, "
+                         "expected syntax: {0}".format(SYNTAX))
+
+    return vimeo_out
+
+
+# ---------------------------------------------------
+# This import allows vimeo tag to be a Pelican plugin
+from liquid_tags import register  # noqa
diff --git a/pelican-plugins/liquid_tags/youtube.py b/pelican-plugins/liquid_tags/youtube.py
new file mode 100644
index 0000000..26fc059
--- /dev/null
+++ b/pelican-plugins/liquid_tags/youtube.py
@@ -0,0 +1,104 @@
+"""
+Youtube Tag
+---------
+This implements a Liquid-style youtube tag for Pelican,
+based on the jekyll / octopress youtube tag [1]_
+
+Syntax
+------
+{% youtube id [width height] %}
+
+Example
+-------
+{% youtube dQw4w9WgXcQ 640 480 %}
+
+Output
+------
+
+<span class="videobox">
+    <iframe
+        width="640" height="480"
+        src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0"
+        webkitAllowFullScreen mozallowfullscreen allowFullScreen>
+    </iframe>
+</span>
+
+[1] https://gist.github.com/jamieowen/2063748
+"""
+import re
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = "{% youtube id [width height] %}"
+
+YOUTUBE = re.compile(r'([\S]+)(\s+([\d%]+)\s([\d%]+))?')
+
+
+@LiquidTags.register('youtube')
+def youtube(preprocessor, tag, markup):
+    width = 640
+    height = 390
+    youtube_id = None
+
+    config_thumb_only = preprocessor.configs.getConfig('YOUTUBE_THUMB_ONLY')
+    config_thumb_size = preprocessor.configs.getConfig('YOUTUBE_THUMB_SIZE')
+
+    thumb_sizes = {
+        'maxres': [1280, 720],
+        'sd': [640, 480],
+        'hq': [480, 360],
+        'mq': [320, 180]
+    }
+
+    if config_thumb_only:
+        if not config_thumb_size:
+            config_thumb_size = 'sd'
+
+        try:
+            width = thumb_sizes[config_thumb_size][0]
+            height = thumb_sizes[config_thumb_size][1]
+        except KeyError:
+            pass
+
+    match = YOUTUBE.search(markup)
+    if match:
+        groups = match.groups()
+        youtube_id = groups[0]
+        width = groups[2] or width
+        height = groups[3] or height
+
+    if youtube_id:
+        if config_thumb_only:
+            thumb_url = 'https://img.youtube.com/vi/{youtube_id}'.format(
+                youtube_id=youtube_id)
+
+            youtube_out = """<a
+                    href="https://www.youtube.com/watch?v={youtube_id}"
+                class="youtube_video" alt="YouTube Video"
+                title="Click to view on YouTube">
+                    <img width="{width}" height="{height}"
+                        src="{thumb_url}/{size}default.jpg">
+                </a>""".format(width=width, height=height,
+                               youtube_id=youtube_id,
+                               size=config_thumb_size,
+                               thumb_url=thumb_url)
+        else:
+            youtube_out = """
+                <span class="videobox">
+                    <iframe width="{width}" height="{height}"
+                        src='https://www.youtube.com/embed/{youtube_id}'
+                        frameborder='0' webkitAllowFullScreen
+                        mozallowfullscreen allowFullScreen>
+                    </iframe>
+                </span>
+            """.format(width=width, height=height,
+                       youtube_id=youtube_id).strip()
+    else:
+        raise ValueError("Error processing input, "
+                         "expected syntax: {0}".format(SYNTAX))
+
+    return youtube_out
+
+
+# ---------------------------------------------------
+# This import allows youtube tag to be a Pelican plugin
+from liquid_tags import register  # noqa
diff --git a/pelican-plugins/md_inline_extension/Readme.md b/pelican-plugins/md_inline_extension/Readme.md
new file mode 100644
index 0000000..6d13db1
--- /dev/null
+++ b/pelican-plugins/md_inline_extension/Readme.md
@@ -0,0 +1,48 @@
+Markdown Inline Extension For Pelican
+=====================================
+This plugin lets you customize inline HTML
+within Markdown by extending Python's Markdown module.
+
+Installation
+------------
+To enable, ensure that the `md_inline_extension` plugin is accessible.
+Then add the following to settings.py:
+
+    PLUGINS = ["md_inline_extension"]
+
+Usage
+-----
+By default, any Markdown text inside `[]...[]` will get wrapped in
+`span` tags with a class of `pelican-inline`. For example:
+
+`[]Lorem ipsum dolor sit amet, consectetur adipiscing elit[]` will
+become `<span class="pelican-inline">Lorem ipsum dolor sit amet, consectetur adipiscing elit</span>`
+
+You can create your own inline patterns and associate them with
+arbitrary classes and styles by using the `MD_INLINE` dictionary in settings.
+The dictionary takes a pattern as key and expects either a string or a tuple
+as a value. If a string is provided, then that will be the CSS class. If
+a tuple is provided, then the first value will be the style, and the second
+value (if present) will be the class. For example:
+
+```
+MD_INLINE = {
+    '+=+': ('color:red;', 'my-test-class'),
+    '|-|': ('color:blue;',),
+    '&^': 'my-other-text-class',
+}
+```
+
+The above defines three new inline patterns:
+
+ 1. **+=+**: Text within `+=+` will be wrapped in `span` tags like so
+: `<span style="color:red;" class="my-test-class">...</span>`
+ 2. **|-|**: Text within `|-|` will be wrapped in
+`<span style="color:blue;">...</span>`. Note - no class is present.
+ 3. **&^**: Text within `&^` will be wrapped in
+`<span class="my-other-text-class">...</span>`. Note - no style present.
+
+In order to work seamlessly with default inline patterns such as `*` and
+`**`, it is important that your pattern not contain these characters. So
+do not create patterns that are already part of a default Markdown
+[span element](http://daringfireball.net/projects/markdown/syntax#span).
diff --git a/pelican-plugins/md_inline_extension/__init__.py b/pelican-plugins/md_inline_extension/__init__.py
new file mode 100644
index 0000000..2453fe9
--- /dev/null
+++ b/pelican-plugins/md_inline_extension/__init__.py
@@ -0,0 +1 @@
+from .inline import *
diff --git a/pelican-plugins/md_inline_extension/inline.py b/pelican-plugins/md_inline_extension/inline.py
new file mode 100644
index 0000000..db4b627
--- /dev/null
+++ b/pelican-plugins/md_inline_extension/inline.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+"""
+Markdown Inline Extension For Pelican
+=====================================
+Extends Pelican's Markdown module
+and allows for customized inline HTML
+"""
+
+import os
+import sys
+
+from pelican import signals
+
+try:
+    from . pelican_inline_markdown_extension import PelicanInlineMarkdownExtension
+except ImportError as e:
+    PelicanInlineMarkdownExtension = None
+    print("\nMarkdown is not installed - inline Markdown extension disabled\n")
+
+def process_settings(pelicanobj):
+    """Sets user specified settings (see README for more details)"""
+
+    # Default settings
+    inline_settings = {}
+    inline_settings['config'] = {'[]':('', 'pelican-inline')}
+
+    # Get the user specified settings
+    try:
+        settings = pelicanobj.settings['MD_INLINE']
+    except:
+        settings = None
+
+    # If settings have been specified, add them to the config
+    if isinstance(settings, dict):
+        inline_settings['config'].update(settings)
+
+    return inline_settings
+
+def inline_markdown_extension(pelicanobj, config):
+    """Instantiates a customized Markdown extension"""
+
+    # Instantiate Markdown extension and append it to the current extensions
+    try:
+        if isinstance(pelicanobj.settings.get('MD_EXTENSIONS'), list):  # pelican 3.6.3 and earlier
+            pelicanobj.settings['MD_EXTENSIONS'].append(PelicanInlineMarkdownExtension(config))
+        else:
+            pelicanobj.settings['MARKDOWN'].setdefault('extensions', []).append(PelicanInlineMarkdownExtension(config))
+    except:
+        sys.excepthook(*sys.exc_info())
+        sys.stderr.write("\nError - the pelican Markdown extension failed to configure. Inline Markdown extension is non-functional.\n")
+        sys.stderr.flush()
+
+def pelican_init(pelicanobj):
+    """Loads settings and instantiates the Python Markdown extension"""
+
+    # If there was an error loading Markdown, then do not process any further 
+    if not PelicanInlineMarkdownExtension:
+        return
+
+    # Process settings
+    config = process_settings(pelicanobj)
+
+    # Configure Markdown Extension
+    inline_markdown_extension(pelicanobj, config)
+
+def register():
+    """Plugin registration"""
+    signals.initialized.connect(pelican_init)
diff --git a/pelican-plugins/md_inline_extension/pelican_inline_markdown_extension.py b/pelican-plugins/md_inline_extension/pelican_inline_markdown_extension.py
new file mode 100644
index 0000000..a3a3eb3
--- /dev/null
+++ b/pelican-plugins/md_inline_extension/pelican_inline_markdown_extension.py
@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+"""
+Pelican Inline Markdown Extension
+==================================
+An extension for the Python Markdown module that enables
+the Pelican Python static site generator to add inline patterns.
+"""
+
+import markdown
+import re
+
+from markdown.util import etree
+from markdown.util import AtomicString
+
+class PelicanInlineMarkdownExtensionPattern(markdown.inlinepatterns.Pattern):
+    """Inline Markdown processing"""
+
+    def __init__(self, pelican_markdown_extension, tag, pattern):
+        super(PelicanInlineMarkdownExtensionPattern,self).__init__(pattern)
+        self.tag = tag
+        self.config = pelican_markdown_extension.getConfig('config')
+
+    def handleMatch(self, m):
+        node = markdown.util.etree.Element(self.tag)
+        tag_attributes = self.config.get(m.group('prefix'), ('', 'pelican-inline'))
+        tag_class = 'pelican-inline'  # default class
+        tag_style = ''  # default is for no styling
+
+        if isinstance(tag_attributes, tuple):
+            tag_style = tag_attributes[0]
+            tag_class = tag_attributes[1] if len(tag_attributes) > 1 else ''
+        elif isinstance(tag_attributes, str):
+            tag_class = tag_attributes
+
+        if tag_class != '':
+            node.set('class', tag_class)
+        if tag_style!= '':
+            node.set('style', tag_style)
+
+        node.text = markdown.util.AtomicString(m.group('text'))
+
+        return node
+
+class PelicanInlineMarkdownExtension(markdown.Extension):
+    """A Markdown extension enabling processing in Markdown for Pelican"""
+    def __init__(self, config):
+
+        try:
+            # Needed for Markdown versions >= 2.5
+            self.config['config'] = ['{}', 'config for markdown extension']
+            super(PelicanInlineMarkdownExtension,self).__init__(**config)
+        except AttributeError:
+            # Markdown versions < 2.5
+            config['config'] = [config['config'], 'config for markdown extension']
+            super(PelicanInlineMarkdownExtension, self).__init__(config)
+
+    def extendMarkdown(self, md, md_globals):
+        # Regex to detect mathjax
+        config = self.getConfig('config')
+        patterns = []
+
+        # The following mathjax settings can be set via the settings dictionary
+        for key in config:
+            patterns.append(re.escape(key))
+
+        inline_regex = r'(?P<prefix>%s)(?P<text>.+?)\2' % ('|'.join(patterns))
+
+        # Process after escapes
+        md.inlinePatterns.add('texthighlight_inlined', PelicanInlineMarkdownExtensionPattern(self, 'span', inline_regex), '>emphasis2')
diff --git a/pelican-plugins/members/Readme.rst b/pelican-plugins/members/Readme.rst
new file mode 100644
index 0000000..ce3494d
--- /dev/null
+++ b/pelican-plugins/members/Readme.rst
@@ -0,0 +1,22 @@
+Members
+-------
+
+This plugin looks for a ``members`` metadata header containing key/value pairs
+and makes them available for use in templates.
+
+The first line of this metadata defines each key, and the following line should
+contain corresponding values for each member.
+
+The keys must be in the same first line as the ``members`` metadata header,
+and the next line containing the corresponding values must have an identation
+before it.
+
+Example for reStructuredText::
+
+    :members: name, email, twitter, github, site_nome, site_href
+        Danilo Shiga, daniloshiga@gmail.com, @daneoshiga, daneoshiga, Danilo Shiga, http://daniloshiga.com
+
+Example for Markdown::
+
+    members: name, email, twitter, github, site_nome, site_href
+        Danilo Shiga, daniloshiga@gmail.com, @daneoshiga, daneoshiga, Danilo Shiga, http://daniloshiga.com
diff --git a/pelican-plugins/members/__init__.py b/pelican-plugins/members/__init__.py
new file mode 100644
index 0000000..3c0b42f
--- /dev/null
+++ b/pelican-plugins/members/__init__.py
@@ -0,0 +1 @@
+from members import *  # noqa
diff --git a/pelican-plugins/members/members.py b/pelican-plugins/members/members.py
new file mode 100644
index 0000000..d084519
--- /dev/null
+++ b/pelican-plugins/members/members.py
@@ -0,0 +1,38 @@
+"""
+Members info plugin for Pelican
+===============================
+
+This plugin looks for a ``members`` metadata header containing key/value pairs
+and makes them available for use in templates
+
+The first line of the members metadata defines each key, and the following
+lines contain corresponding values for each member.
+
+:members: nome, email, twitter, github, site_nome, site_href
+    Danilo Shiga, daniloshiga@gmail.com, @daneoshiga, daneoshiga, Danilo Shiga, http://daniloshiga.com
+"""
+
+from collections import OrderedDict
+
+from pelican import signals
+
+
+def add_members(generator, metadata):
+
+    if 'members' in metadata.keys():
+        # Dealing with differences on metadata for md and rst content
+        if type(metadata['members']) == list:
+            members = metadata['members']
+        else:
+            members = metadata['members'].splitlines()
+
+        metadata['members'] = OrderedDict()
+        keys = map(unicode.strip, members[0].split(','))
+        for member in members[1:]:
+            values = map(unicode.strip, member.split(','))
+            member_dict = dict(zip(keys, values))
+            metadata['members'][member_dict['nome']] = member_dict
+
+
+def register():
+    signals.page_generator_context.connect(add_members)
diff --git a/pelican-plugins/more_categories/README.md b/pelican-plugins/more_categories/README.md
new file mode 100644
index 0000000..85e9966
--- /dev/null
+++ b/pelican-plugins/more_categories/README.md
@@ -0,0 +1,79 @@
+# Subcategory Plugin
+
+**NOTE: [This plugin has been moved to its own repository](https://github.com/pelican-plugins/more-categories). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.**
+
+This plugin adds support for multiple categories per article, and for nested
+categories. It requires Pelican 4.0.0 or newer.
+
+## Multiple categories
+To indicate that an article belongs to multiple categories, use a
+comma-separated string:
+
+    Category: foo, bar, bazz
+
+This will add the article to the categories `foo`, `bar` and `bazz`.
+
+### Templates
+Existing themes that use `article.category` will display only the first of
+these categories, `foo`. This plugin adds `article.categories` that you can
+loop over instead. To accomodate this plugin in a theme whether it is present
+or not, use:
+
+    {% for cat in article.categories or [article.category] %}
+        <a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a>{{ ', ' if not loop.last }}
+    {% endfor %}
+
+## Nested categories
+(This is a reimplementation of the `subcategory` plugin.)
+
+To indicate that a category is a child of another category, use a
+slash-separated string:
+
+    Category: foo/bar/bazz
+
+This will add the article to the categories `foo/bar/bazz`, `foo/bar` and
+`foo`.
+
+### Templates
+Existing themes that use `article.category` will display the full path to the
+most specific of these categories, `foo/bar/bazz`. For any category `cat`, this
+plugin adds `cat.shortname`, which in this case is `bazz`, `cat.parent`, which
+in this case is the category `foo/bar`, and `cat.ancestors`, which is a list of
+the category's ancestors, ending with the category itself. For instance, to
+also include a link to each of the ancestor categories on an article page, in
+case this plugin in present, use:
+
+    {% for cat in article.category.ancestors or [article.category] %}
+        <a href="{{ SITEURL }}/{{ cat.url }}">{{ cat.shortname or cat }}</a>{{ '/' if not loop.last }}
+    {% endfor %}
+
+Likewise, `category.shortname`, `category.parent` and `category.ancestors` can
+also be used on the category template.
+
+### Slug
+The slug of a category is generated recursively by slugifying the shortname of
+the category and its ancestors, and preserving slashes:
+
+    slug-of-(foo/bar/baz) := slug-of-foo/slug-of-bar/slug-of-baz
+
+### Category folders
+To specify categories using the directory structure, you can configure
+`PATH_METADATA` to extract the article path into the `category` metadata. The
+following settings would use the entire structure:
+
+    PATH_METADATA = '(?P<category>.*)/.*'
+
+If you store all articles in a single `articles/` folder that you want to
+ignore for this purpose, use:
+
+    PATH_METADATA = 'articles/(?P<category>.*)/.*'
+
+### Categories in templates
+The list `categories` of all pairs of categories with their corresponding
+articles, which is available in the context and can be used in templates (e.g.
+to make a menu of available categories), is ordered lexicographically, so
+categories always follow their parent:
+
+    aba
+    aba/dat
+    abaala
diff --git a/pelican-plugins/more_categories/__init__.py b/pelican-plugins/more_categories/__init__.py
new file mode 100644
index 0000000..85fa31b
--- /dev/null
+++ b/pelican-plugins/more_categories/__init__.py
@@ -0,0 +1 @@
+from .more_categories import *
\ No newline at end of file
diff --git a/pelican-plugins/more_categories/more_categories.py b/pelican-plugins/more_categories/more_categories.py
new file mode 100644
index 0000000..945a1bc
--- /dev/null
+++ b/pelican-plugins/more_categories/more_categories.py
@@ -0,0 +1,82 @@
+# -*- coding: utf-8 -*-
+"""
+Title: More Categories
+Description: adds support for multiple categories per article and nested
+categories
+Requirements: Pelican 3.8 or higher
+"""
+
+from pelican import signals
+from pelican.urlwrappers import URLWrapper
+from pelican.utils import slugify
+
+from collections import defaultdict
+from six import text_type
+
+class Category(URLWrapper):
+    @property
+    def _name(self):
+        if self.parent:
+            return self.parent._name + '/' + self.shortname
+        return self.shortname
+
+    @_name.setter
+    def _name(self, val):
+        if '/' in val:
+            parentname, val = val.rsplit('/', 1)
+            self.parent = self.__class__(parentname, self.settings)
+        else:
+            self.parent = None
+        self.shortname = val.strip()
+
+    @URLWrapper.name.setter
+    def name(self, val):
+        self._name = val
+
+    @property
+    def slug(self):
+        if self._slug is None:
+            if 'CATEGORY_REGEX_SUBSTITUTIONS' in self.settings:
+                subs = self.settings['CATEGORY_REGEX_SUBSTITUTIONS']
+            else:
+                subs = self.settings.get('SLUG_REGEX_SUBSTITUTIONS', [])
+            self._slug = slugify(self.shortname, regex_subs=subs)
+            if self.parent:
+                self._slug = self.parent.slug + '/' + self._slug
+        return self._slug
+
+    @property
+    def ancestors(self):
+        if self.parent:
+            return self.parent.ancestors + [self]
+        return [self]
+
+    def as_dict(self):
+        d = super(Category, self).as_dict()
+        d['shortname'] = self.shortname
+        return d
+
+
+def get_categories(generator, metadata):
+    categories = text_type(metadata.get('category')).split(',')
+    metadata['categories'] = [
+        Category(name, generator.settings) for name in categories]
+    metadata['category'] = metadata['categories'][0]
+
+
+def create_categories(generator):
+    generator.categories = []
+    cat_dct = defaultdict(list)
+    for article in generator.articles:
+        for cat in {a for c in article.categories for a in c.ancestors}:
+            cat_dct[cat].append(article)
+
+    generator.categories = sorted(
+        list(cat_dct.items()),
+        reverse=generator.settings.get('REVERSE_CATEGORY_ORDER') or False)
+    generator._update_context(['categories'])
+
+
+def register():
+    signals.article_generator_context.connect(get_categories)
+    signals.article_generator_finalized.connect(create_categories)
diff --git a/pelican-plugins/more_categories/test_data/article_with_multiple_categories.rst b/pelican-plugins/more_categories/test_data/article_with_multiple_categories.rst
new file mode 100644
index 0000000..aa7ea80
--- /dev/null
+++ b/pelican-plugins/more_categories/test_data/article_with_multiple_categories.rst
@@ -0,0 +1,6 @@
+Article with multiple and nested categories
+===========================================
+:date: 2018-11-04
+:category: foo/bar, foo/b#az
+
+This is an article with multiple categories
diff --git a/pelican-plugins/more_categories/test_data/article_with_no_category.rst b/pelican-plugins/more_categories/test_data/article_with_no_category.rst
new file mode 100644
index 0000000..756c54b
--- /dev/null
+++ b/pelican-plugins/more_categories/test_data/article_with_no_category.rst
@@ -0,0 +1,5 @@
+Article with no category
+========================
+:date: 2018-11-04
+
+This is an article with no category
diff --git a/pelican-plugins/more_categories/test_more_categories.py b/pelican-plugins/more_categories/test_more_categories.py
new file mode 100644
index 0000000..45e7966
--- /dev/null
+++ b/pelican-plugins/more_categories/test_more_categories.py
@@ -0,0 +1,57 @@
+"""Unit tests for the more_categories plugin"""
+
+import os
+import unittest
+from shutil import rmtree
+from tempfile import mkdtemp
+
+from . import more_categories
+from pelican.generators import ArticlesGenerator
+from pelican.tests.support import get_context, get_settings
+
+
+class TestArticlesGenerator(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.temp_path = mkdtemp(prefix='pelicantests.')
+        more_categories.register()
+        settings = get_settings()
+        settings['DEFAULT_CATEGORY'] = 'default'
+        settings['CACHE_CONTENT'] = False
+        settings['PLUGINS'] = more_categories
+        context = get_context(settings)
+
+        base_path = os.path.dirname(os.path.abspath(__file__))
+        test_data_path = os.path.join(base_path, 'test_data')
+        cls.generator = ArticlesGenerator(
+            context=context, settings=settings,
+            path=test_data_path, theme=settings['THEME'], output_path=cls.temp_path)
+        cls.generator.generate_context()
+
+    @classmethod
+    def tearDownClass(cls):
+        rmtree(cls.temp_path)
+
+    def test_generate_categories(self):
+        """Test whether multiple categories are generated correctly,
+        including ancestor categories"""
+
+        cats_generated = [cat.name for cat, _ in self.generator.categories]
+        cats_expected = ['default', 'foo', 'foo/bar', 'foo/b#az',]
+        self.assertEqual(sorted(cats_generated), sorted(cats_expected))
+
+    def test_categories_slug(self):
+        """Test whether category slug substitutions are used"""
+
+        slugs_generated = [cat.slug for cat, _ in self.generator.categories]
+        slugs_expected = ['default', 'foo', 'foo/bar', 'foo/baz',]
+        self.assertEqual(sorted(slugs_generated), sorted(slugs_expected))
+
+    def test_assign_articles_to_categories(self):
+        """Test whether articles are correctly assigned to categories,
+        including whether articles are not assigned multiple times to the same
+        ancestor category"""
+
+        for cat, articles in self.generator.categories:
+            self.assertEqual(len(articles), 1)
\ No newline at end of file
diff --git a/pelican-plugins/multi_part/Readme.md b/pelican-plugins/multi_part/Readme.md
new file mode 100644
index 0000000..47b720f
--- /dev/null
+++ b/pelican-plugins/multi_part/Readme.md
@@ -0,0 +1,26 @@
+Multi parts posts
+-----------------
+
+**This plugin has been deprecated. See the series plugin for a better support of multi part articles.**
+
+The multi-part posts plugin allow you to write multi-part posts.
+
+In order to mark posts as part of a multi-part post, use the `:parts:` metadata:
+
+    :parts:  MY_AWESOME_MULTI_PART_POST
+
+You can then use the `article.metadata.parts_articles` variable in your templates 
+to display other parts of current post.
+
+For example:
+
+    {% if article.metadata.parts_articles %}
+        <p>This post is part of a series:</p>
+        <ol class="parts">
+            {% for part_article in article.metadata.parts_articles %}
+                <li {% if part_article == article %}class="active"{% endif %}>
+                    <a href='{{ SITEURL }}/{{ part_article.url }}'>{{ part_article.title }}</a>
+                </li>
+            {% endfor %}
+        </ol>
+    {% endif %}
diff --git a/pelican-plugins/multi_part/__init__.py b/pelican-plugins/multi_part/__init__.py
new file mode 100644
index 0000000..6e00046
--- /dev/null
+++ b/pelican-plugins/multi_part/__init__.py
@@ -0,0 +1 @@
+from .multi_part import *
diff --git a/pelican-plugins/multi_part/multi_part.py b/pelican-plugins/multi_part/multi_part.py
new file mode 100644
index 0000000..6f4a859
--- /dev/null
+++ b/pelican-plugins/multi_part/multi_part.py
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+"""
+Copyright (c) FELD Boris <lothiraldan@gmail.com>
+
+Multiple part support
+=====================
+
+Create a navigation menu for multi-part related_posts
+"""
+
+from collections import defaultdict
+
+from pelican import signals
+
+import logging
+
+log = logging.getLogger(__name__)
+
+warning_message = """multi_part plugin: this plugin has been deprecated.
+The 'series' plugin provides better support for multi part articles.
+"""
+
+def aggregate_multi_part(generator):
+    log.warning(warning_message)
+    multi_part = defaultdict(list)
+
+    for article in generator.articles:
+        if 'parts' in article.metadata:
+            multi_part[article.metadata['parts']].append(article)
+
+    for part_id in multi_part:
+        parts = multi_part[part_id]
+
+        # Sort by date
+        parts.sort(key=lambda x: x.metadata['date'])
+
+        for article in parts:
+            article.metadata['parts_articles'] = parts
+
+
+def register():
+    signals.article_generator_finalized.connect(aggregate_multi_part)
diff --git a/pelican-plugins/neighbors/Readme.rst b/pelican-plugins/neighbors/Readme.rst
new file mode 100644
index 0000000..e9277fc
--- /dev/null
+++ b/pelican-plugins/neighbors/Readme.rst
@@ -0,0 +1,101 @@
+Neighbor Articles Plugin for Pelican
+====================================
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/neighbors>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
+
+-------------------------------------------------------------------------------
+
+This plugin adds ``next_article`` (newer) and ``prev_article`` (older)
+variables to the article's context.
+
+Also adds ``next_article_in_category`` and ``prev_article_in_category``.
+
+
+Usage
+-----
+
+.. code-block:: html+jinja
+
+    <ul>
+    {% if article.prev_article %}
+        <li>
+            <a href="{{ SITEURL }}/{{ article.prev_article.url}}">
+                {{ article.prev_article.title }}
+            </a>
+        </li>
+    {% endif %}
+    {% if article.next_article %}
+        <li>
+            <a href="{{ SITEURL }}/{{ article.next_article.url}}">
+                {{ article.next_article.title }}
+            </a>
+        </li>
+    {% endif %}
+   </ul>
+   <ul>
+    {% if article.prev_article_in_category %}
+        <li>
+            <a href="{{ SITEURL }}/{{ article.prev_article_in_category.url}}">
+                {{ article.prev_article_in_category.title }}
+            </a>
+        </li>
+    {% endif %}
+    {% if article.next_article_in_category %}
+        <li>
+            <a href="{{ SITEURL }}/{{ article.next_article_in_category.url}}">
+                {{ article.next_article_in_category.title }}
+            </a>
+        </li>
+    {% endif %}
+    </ul>
+
+Usage with the Subcategory plugin
+---------------------------------
+
+If you want to get the neigbors within a subcategory it's a little different.
+Since an article can belong to more than one subcategory, subcategories are
+stored in a list. If you have an article with subcategories like
+
+``Category/Foo/Bar``
+
+it will belong to both subcategory Foo, and Foo/Bar. Subcategory neighbors are
+added to an article as ``next_article_in_subcategory#`` and
+``prev_article_in_subcategory#`` where ``#`` is the level of subcategory. So using
+the example from above, subcategory1 will be Foo, and subcategory2 Foo/Bar.
+Therefor the usage with subcategories is:
+
+.. code-block:: html+jinja
+
+    <ul>
+    {% if article.prev_article_in_subcategory1 %}
+        <li>
+            <a href="{{ SITEURL }}/{{ article.prev_article_in_subcategory1.url}}">
+                {{ article.prev_article_in_subcategory1.title }}
+            </a>
+        </li>
+    {% endif %}
+    {% if article.next_article_in_subcategory1 %}
+        <li>
+            <a href="{{ SITEURL }}/{{ article.next_article_in_subcategory1.url}}">
+                {{ article.next_article_in_subcategory1.title }}
+            </a>
+        </li>
+    {% endif %}
+   </ul>
+   <ul>
+    {% if article.prev_article_in_subcategory2 %}
+        <li>
+            <a href="{{ SITEURL }}/{{ article.prev_article_in_subcategory2.url}}">
+                {{ article.prev_article_in_subcategory2.title }}
+            </a>
+        </li>
+    {% endif %}
+    {% if article.next_article_in_subcategory2 %}
+        <li>
+            <a href="{{ SITEURL }}/{{ article.next_article_in_subcategory2.url}}">
+                {{ article.next_article_in_subcategory2.title }}
+            </a>
+        </li>
+    {% endif %}
+    </ul>
+
diff --git a/pelican-plugins/neighbors/__init__.py b/pelican-plugins/neighbors/__init__.py
new file mode 100644
index 0000000..9038d7e
--- /dev/null
+++ b/pelican-plugins/neighbors/__init__.py
@@ -0,0 +1 @@
+from .neighbors import *
diff --git a/pelican-plugins/neighbors/neighbors.py b/pelican-plugins/neighbors/neighbors.py
new file mode 100644
index 0000000..71ea9ce
--- /dev/null
+++ b/pelican-plugins/neighbors/neighbors.py
@@ -0,0 +1,63 @@
+# -*- coding: utf-8 -*-
+"""
+Neighbor Articles Plugin for Pelican
+====================================
+
+This plugin adds ``next_article`` (newer) and ``prev_article`` (older)
+variables to the article's context
+"""
+from pelican import signals
+
+
+def iter3(seq):
+    """Generate one triplet per element in 'seq' following PEP-479."""
+    nxt, cur = None, None
+    for prv in seq:
+        if cur:
+            yield nxt, cur, prv
+        nxt, cur = cur, prv
+    # Don't yield anything if empty seq
+    if cur:
+        # Yield last element in seq (also if len(seq) == 1)
+        yield nxt, cur, None
+
+
+def get_translation(article, prefered_language):
+    if not article:
+        return None
+    for translation in article.translations:
+        if translation.lang == prefered_language:
+            return translation
+    return article
+
+
+def set_neighbors(articles, next_name, prev_name):
+    for nxt, cur, prv in iter3(articles):
+        setattr(cur, next_name, nxt)
+        setattr(cur, prev_name, prv)
+
+        for translation in cur.translations:
+            setattr(translation, next_name,
+                    get_translation(nxt, translation.lang))
+            setattr(translation, prev_name,
+                    get_translation(prv, translation.lang))
+
+def neighbors(generator):
+    set_neighbors(generator.articles, 'next_article', 'prev_article')
+
+    for category, articles in generator.categories:
+        articles.sort(key=lambda x: x.date, reverse=True)
+        set_neighbors(
+            articles, 'next_article_in_category', 'prev_article_in_category')
+
+    if hasattr(generator, 'subcategories'):
+        for subcategory, articles in generator.subcategories:
+            articles.sort(key=lambda x: x.date, reverse=True)
+            index = subcategory.name.count('/')
+            next_name = 'next_article_in_subcategory{}'.format(index)
+            prev_name = 'prev_article_in_subcategory{}'.format(index)
+            set_neighbors(articles, next_name, prev_name)
+
+
+def register():
+    signals.article_generator_finalized.connect(neighbors)
diff --git a/pelican-plugins/neighbors/test_data/article.md b/pelican-plugins/neighbors/test_data/article.md
new file mode 100644
index 0000000..89b6980
--- /dev/null
+++ b/pelican-plugins/neighbors/test_data/article.md
@@ -0,0 +1,14 @@
+Title: Test md File
+Category: test
+Tags: foo, bar, foobar
+Date: 2010-12-02 10:14
+Modified: 2010-12-02 10:20
+Summary: I have a lot to test
+
+Test Markdown File Header
+=========================
+
+Used for pelican test
+---------------------
+
+The quick brown fox jumped over the lazy dog's back.
diff --git a/pelican-plugins/neighbors/test_neighbors.py b/pelican-plugins/neighbors/test_neighbors.py
new file mode 100644
index 0000000..f9865fa
--- /dev/null
+++ b/pelican-plugins/neighbors/test_neighbors.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+from os.path import dirname, join
+from tempfile import TemporaryDirectory
+
+from pelican.generators import ArticlesGenerator
+from pelican.tests.support import get_settings, unittest
+
+from .neighbors import neighbors
+
+
+CUR_DIR = dirname(__file__)
+
+
+class NeighborsTest(unittest.TestCase):
+    def test_neighbors_basic(self):
+        with TemporaryDirectory() as tmpdirname:
+            generator = _build_article_generator(join(CUR_DIR, '..', 'test_data'), tmpdirname)
+            neighbors(generator)
+    def test_neighbors_with_single_article(self):
+        with TemporaryDirectory() as tmpdirname:
+            generator = _build_article_generator(join(CUR_DIR, 'test_data'), tmpdirname)
+            neighbors(generator)
+
+
+def _build_article_generator(content_path, output_path):
+    settings = get_settings(filenames={})
+    settings['PATH'] = content_path
+    context = settings.copy()
+    context['generated_content'] = dict()
+    context['static_links'] = set()
+    article_generator = ArticlesGenerator(
+        context=context, settings=settings,
+        path=settings['PATH'], theme=settings['THEME'], output_path=output_path)
+    article_generator.generate_context()
+    return article_generator
diff --git a/pelican-plugins/optimize_images/Readme.md b/pelican-plugins/optimize_images/Readme.md
new file mode 100644
index 0000000..8efc926
--- /dev/null
+++ b/pelican-plugins/optimize_images/Readme.md
@@ -0,0 +1,28 @@
+Optimize Images Plugin For Pelican
+==================================
+
+This plugin applies lossless compression on JPEG, PNG and SVG images, with no
+effect on image quality via [jpegtran][], [OptiPNG][] and [svgo][] respectively. 
+The plugin assumes that all of these tools are installed, with associated
+executables available on the system path.
+
+[jpegtran]: http://jpegclub.org/jpegtran/
+[OptiPNG]: http://optipng.sourceforge.net/
+[SVGO]: https://github.com/svg/svgo
+
+
+Installation
+------------
+
+To enable, ensure that `optimize_images.py` is put somewhere that is accessible.
+Then use as follows by adding the following to your settings.py:
+
+    PLUGIN_PATH = 'path/to/pelican-plugins'
+    PLUGINS = ["optimize_images"]
+
+`PLUGIN_PATH` can be a path relative to your settings file or an absolute path.
+
+Usage
+-----
+The plugin will activate and optimize images upon `finalized` signal of
+Pelican.
diff --git a/pelican-plugins/optimize_images/__init__.py b/pelican-plugins/optimize_images/__init__.py
new file mode 100644
index 0000000..cbb056a
--- /dev/null
+++ b/pelican-plugins/optimize_images/__init__.py
@@ -0,0 +1 @@
+from .optimize_images import *
diff --git a/pelican-plugins/optimize_images/optimize_images.py b/pelican-plugins/optimize_images/optimize_images.py
new file mode 100644
index 0000000..af252bd
--- /dev/null
+++ b/pelican-plugins/optimize_images/optimize_images.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+
+"""
+Optimized images (jpg and png)
+Assumes that jpegtran and optipng are isntalled on path.
+http://jpegclub.org/jpegtran/
+http://optipng.sourceforge.net/
+Copyright (c) 2012 Irfan Ahmad (http://i.com.pk)
+"""
+
+import logging
+import os
+from subprocess import call
+
+from pelican import signals
+
+logger = logging.getLogger(__name__)
+
+# Display command output on DEBUG and TRACE
+SHOW_OUTPUT = logger.getEffectiveLevel() <= logging.DEBUG
+
+# A list of file types with their respective commands
+COMMANDS = {
+    # '.ext': ('command {flags} {filename', 'silent_flag', 'verbose_flag')
+    '.svg': ('svgo {flags} --input="{filename}" --output="{filename}"', '--quiet', ''),
+    '.jpg': ('jpegtran {flags} -copy none -optimize -progressive -outfile "{filename}" "{filename}"', '', '-v'),
+    '.png': ('optipng {flags} "{filename}"', '--quiet', ''),
+}
+
+
+def optimize_images(pelican):
+    """
+    Optimized jpg and png images
+
+    :param pelican: The Pelican instance
+    """
+    for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']):
+        for name in filenames:
+            if os.path.splitext(name)[1] in COMMANDS.keys():
+                optimize(dirpath, name)
+
+def optimize(dirpath, filename):
+    """
+    Check if the name is a type of file that should be optimized.
+    And optimizes it if required.
+
+    :param dirpath: Path of the file to be optimzed
+    :param name: A file name to be optimized
+    """
+    filepath = os.path.join(dirpath, filename)
+    logger.info('optimizing %s', filepath)
+
+    ext = os.path.splitext(filename)[1]
+    command, silent, verbose = COMMANDS[ext]
+    flags = verbose if SHOW_OUTPUT else silent
+    command = command.format(filename=filepath, flags=flags)
+    call(command, shell=True)
+
+
+def register():
+    signals.finalized.connect(optimize_images)
diff --git a/pelican-plugins/org_python_reader/LICENSE b/pelican-plugins/org_python_reader/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/pelican-plugins/org_python_reader/LICENSE
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<https://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
diff --git a/pelican-plugins/org_python_reader/README.org b/pelican-plugins/org_python_reader/README.org
new file mode 100644
index 0000000..b025be7
--- /dev/null
+++ b/pelican-plugins/org_python_reader/README.org
@@ -0,0 +1,74 @@
+* Org Python Reader plugin
+
+This plugin add the possibility to write your pages and blog posts in
+Org format from Emacs Org-mode.
+
+To generate your website, you don't need Emacs, Pandoc or any other
+software.
+
+
+** Dependency
+
+   This plugin only need =orgco= python package.
+   
+   You can install it with =pip=:
+   #+BEGIN_SRC sh
+   pip install orgco
+   #+END_SRC
+
+** Install
+
+   First, install this plugin in path know by pelican. Set pelican
+   variable =PLUGIN_PATHS= in =pelicanconf.py= if necessary.
+
+   Second, enable this plugin by adding his name to the pelican
+   variable =PLUGINS= in =pelicanconf.py=
+   
+   Exemple:
+   #+BEGIN_SRC python
+   PLUGINS = ['org_python_reader']
+   #+END_SRC
+
+** Settings
+
+   With this plugin, you define settings with the =ORGMODE= variable,
+   a dictionary.
+
+   Available settings:
+   - =code_highlight=: =True= or =False=, enable code highlight with
+     =orgco=. Default is =True=.
+
+   Exemple of settings:
+   #+BEGIN_SRC python
+     ORGMODE = {
+	 'code_highlight': False,
+     }
+   #+END_SRC
+
+** Usage
+
+   Simply write content in Org format.
+
+** More informations
+
+*** Org-mode
+    
+     Org-mode is an Emacs mode for keeping notes, maintaining TODO
+     lists, planning projects, and authoring documents with a fast and
+     effective plain-text system.
+
+     - [[http://orgmode.org][Org-mode website]]
+     - [[https://www.gnu.org/software/emacs/][Emacs website]]
+     - [[https://www.youtube.com/watch?v=SzA2YODtgK4][Getting Started With Org Mode]]
+
+*** Orgco
+
+    #+BEGIN_QUOTE
+    With orgco you can convert Emacs’ orgmode to other formats.
+    #+END_QUOTE
+
+    - [[https://github.com/paetzke/orgco][orgco website]]
+
+*** Author
+    Sébastien Gendre <seb@k-7.ch>
+    [[https://k-7.ch/][Website]]
diff --git a/pelican-plugins/org_python_reader/__init__.py b/pelican-plugins/org_python_reader/__init__.py
new file mode 100644
index 0000000..6c549ac
--- /dev/null
+++ b/pelican-plugins/org_python_reader/__init__.py
@@ -0,0 +1,15 @@
+# Copyright (C) 2017  Sébastien Gendre
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+from .org_python_reader import *
diff --git a/pelican-plugins/org_python_reader/org_python_reader.py b/pelican-plugins/org_python_reader/org_python_reader.py
new file mode 100644
index 0000000..d0efe74
--- /dev/null
+++ b/pelican-plugins/org_python_reader/org_python_reader.py
@@ -0,0 +1,102 @@
+# Copyright (C) 2017  Sébastien Gendre
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+import re
+from orgco import convert_html
+from pelican import signals
+from pelican.readers import BaseReader
+from pelican.utils import pelican_open
+
+class OrgReader(BaseReader):
+    """Reader for Org files"""
+    enabled = True
+    file_extensions = ['org']
+
+    def __init__(self, *args, **kargs):
+        """Init object construct with this class"""
+        super(OrgReader, self).__init__(*args, **kargs)
+        settings = self.settings['ORGMODE']
+        settings.setdefault('code_highlight', True)
+        self.code_highlight = settings['code_highlight']
+    
+    def _separate_header_and_content(self, text_lines):
+        """
+        From a given Org text, return the header separate from the content.
+        The given text must be separate line by line and be a list.
+        The return is a list of two items: header and content.
+        Theses two items are text separate line by line in format of a list
+        Keyword Arguments:
+        text_lines -- A list, each item is a line of the texte
+        Return:
+        [
+          header   -- A list, each item is a line of the texte
+          content  -- A list, each item is a line of the texte
+        ]
+        """
+        no_more_header = False
+        expr_metadata = re.compile(r'^#\+[a-zA-Z]+:.*')
+        header = []
+        content = []
+        for line in text_lines:
+            metadata = expr_metadata.match(line)
+            if metadata and not no_more_header:
+                header.append(line)
+            else:
+                no_more_header = True
+                content.append(line)
+        return header, content 
+
+    def _parse_metadatas(self, text_lines):
+        """
+        From a given Org text, return the metadatas 
+        Keyword Arguments:
+        text_lines -- A list, each item is a line of the texte
+        Return:
+        A dict containing metadatas
+        """
+        if not text_lines:
+            return {}
+        expr_metadata = re.compile(r'^#\+([a-zA-Z]+):(.*)')
+        return {
+            expr_metadata.match(line).group(1).lower()
+            : expr_metadata.match(line).group(2).strip()
+            for line in text_lines
+        }
+
+    def read(self, source_path):
+        """
+        Parse content and metadata of Org files
+        Keyword Arguments:
+        source_path -- Path to the Org file to parse
+        """
+        with pelican_open(source_path) as text:
+            text_lines = list(text.splitlines())
+
+        header, content = self._separate_header_and_content(text_lines)
+        metadatas = self._parse_metadatas(header)
+        metadatas_processed = {
+            key
+            : self.process_metadata(key, value)
+            for key, value in metadatas.items()
+        }
+        content_html = convert_html("\n".join(content),
+                                    highlight=self.code_highlight)
+        return content_html, metadatas_processed
+    
+def add_reader(readers):
+    for ext in OrgReader.file_extensions:
+        readers.reader_classes[ext] = OrgReader
+
+def register():
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/org_python_reader/requirements.txt b/pelican-plugins/org_python_reader/requirements.txt
new file mode 100755
index 0000000..9781cf3
--- /dev/null
+++ b/pelican-plugins/org_python_reader/requirements.txt
@@ -0,0 +1 @@
+orgco
\ No newline at end of file
diff --git a/pelican-plugins/org_reader/LICENSE b/pelican-plugins/org_reader/LICENSE
new file mode 100644
index 0000000..4d98b17
--- /dev/null
+++ b/pelican-plugins/org_reader/LICENSE
@@ -0,0 +1,12 @@
+Copyright 2015 Matthew Snyder, http://msnyder.info
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/pelican-plugins/org_reader/README.md b/pelican-plugins/org_reader/README.md
new file mode 100644
index 0000000..c4a18a8
--- /dev/null
+++ b/pelican-plugins/org_reader/README.md
@@ -0,0 +1,44 @@
+# Org Emacs Reader
+
+Publish Emacs Org files alongside the rest of your website or blog.
+
+- `ORG_READER_EMACS_LOCATION`: Required. Location of Emacs binary.
+  If you use `Emacs for Mac OS X`,
+  the location should be `/Applications/Emacs.app/Contents/MacOS/Emacs`,
+  rather than `/usr/bin/emacs`.
+
+- `ORG_READER_EMACS_SETTINGS`: Optional. An absolute path to an Elisp file, to
+  run per invocation. Useful for initializing the `package` Emacs library if
+  that's where your Org mode comes from, or any modifications to Org Export-
+  related variables. If you want to use your standard emacs init file, you
+  can ignore this variable.
+
+- `ORG_READER_BACKEND`: Optional. A custom backend to provide to Org. Defaults
+  to `'html`.
+
+To provide metadata to Pelican, the following properties can be defined in
+the org file's header:
+
+    #+TITLE: The Title Of This BlogPost
+    #+DATE: 2001-01-01
+    #+CATEGORY: blog-category
+    #+AUTHOR: My Name
+    #+PROPERTY: LANGUAGE en
+    #+PROPERTY: SUMMARY hello, this is the description
+    #+PROPERTY: STATUS disable or enable document
+    #+PROPERTY: SLUG test_slug
+    #+PROPERTY: MODIFIED [2015-12-29 Di]
+    #+PROPERTY: TAGS my, first, tags
+    #+PROPERTY: SAVE_AS alternative_filename.html
+
+
+- The `TITLE` is the only mandatory header property
+- Timestamps (`DATE` and `MODIFIED`) are optional and can be either a string
+  of `%Y-%m-%d` or an org timestamp
+- The property names (`SUMMARY`, `SLUG`, `MODIFIED`, `TAGS`, `SAVE_AS`) can
+  be either lower-case or upper-case
+- The slug is automatically the filename of the Org file, if not explicitly
+  specified
+- It is not possible to pass an empty property to Pelican.  For this plugin,
+  it makes no difference if a property is present in the Org file and left
+  empty, or if it is not defined at all.
diff --git a/pelican-plugins/org_reader/__init__.py b/pelican-plugins/org_reader/__init__.py
new file mode 100644
index 0000000..a42b13b
--- /dev/null
+++ b/pelican-plugins/org_reader/__init__.py
@@ -0,0 +1 @@
+from .org_reader import *
diff --git a/pelican-plugins/org_reader/org_reader.el b/pelican-plugins/org_reader/org_reader.el
new file mode 100644
index 0000000..abc9e80
--- /dev/null
+++ b/pelican-plugins/org_reader/org_reader.el
@@ -0,0 +1,59 @@
+(require 'json)
+(require 'org)
+(require 'ox)
+(require 'package)
+
+;; htmlize is needed for SRC blocks
+(setq package-load-list '((htmlize t)))
+(package-initialize)
+
+(defun org->pelican (filename backend)
+  (progn
+    (save-excursion
+      ; open org file
+      (find-file filename)
+
+      ; pre-process some metadata
+      (let (; extract org export properties
+            (org-export-env (org-export-get-environment))
+            ; convert MODIFIED prop to string
+            (modifiedstr (cdr (assoc-string "MODIFIED" org-keyword-properties t)))
+            ; prepare date property
+            (dateobj (car (plist-get (org-export-get-environment) ':date))))
+
+        ; check if #+TITLE: is given and give sensible error message if not
+        (if (symbolp (car (plist-get org-export-env :title)))
+            (error "Each page/article must have a #+TITLE: property"))
+
+        ; construct the JSON object
+        (princ (json-encode
+                (list
+                 ; org export environment
+                 :title (substring-no-properties
+                         (car (plist-get org-export-env :title)))
+                 ; if #+DATE is not given, dateobj is nil
+                 ; if #+DATE is a %Y-%m-%d string, dateobj is a string,
+                 ; and otherwise we assume #+DATE is a org timestamp
+                 :date (if (symbolp dateobj)
+                           ""
+                         (if (stringp dateobj)
+                             (org-read-date nil nil dateobj nil)
+                           (org-timestamp-format dateobj "%Y-%m-%d")))
+
+                 :author (substring-no-properties
+                          (car (plist-get org-export-env ':author)))
+
+                 ; org file properties
+                 :category (cdr (assoc-string "CATEGORY" org-keyword-properties t))
+
+                 ; custom org file properties, defined as #+PROPERTY: NAME ARG
+                 :language (cdr (assoc-string "LANGUAGE" org-keyword-properties t))
+                 :save_as (cdr (assoc-string "SAVE_AS" org-keyword-properties t))
+                 :tags (cdr (assoc-string "TAGS" org-keyword-properties t))
+                 :summary (cdr (assoc-string "SUMMARY" org-keyword-properties t))
+                 :status (cdr (assoc-string "STATUS" org-keyword-properties t))
+                 :slug (cdr (assoc-string "SLUG" org-keyword-properties t))
+                 :modified (if (stringp modifiedstr)
+                               (org-read-date nil nil modifiedstr nil)
+                             "")
+                 :post (org-export-as backend nil nil t))))))))
diff --git a/pelican-plugins/org_reader/org_reader.py b/pelican-plugins/org_reader/org_reader.py
new file mode 100644
index 0000000..bc04657
--- /dev/null
+++ b/pelican-plugins/org_reader/org_reader.py
@@ -0,0 +1,122 @@
+"""
+Org Reader
+==========
+
+Version 1.1.
+
+Relevant Pelican settings:
+
+- ORG_READER_EMACS_LOCATION: Required. Location of Emacs binary.
+
+- ORG_READER_EMACS_SETTINGS: Optional. An absolute path to an Elisp file, to
+  run per invocation. Useful for initializing the `package` Emacs library if
+  that's where your Org mode comes from, or any modifications to Org Export-
+  related variables.
+
+- ORG_READER_BACKEND: Optional. A custom backend to provide to Org. Defaults
+  to 'html.
+
+To provide metadata to Pelican, the following properties can be defined in
+the org file's header:
+
+#+TITLE: The Title Of This BlogPost
+#+DATE: 2001-01-01
+#+CATEGORY: blog-category
+#+AUTHOR: My Name
+#+PROPERTY: LANGUAGE en
+#+PROPERTY: SUMMARY hello, this is the description
+#+PROPERTY: SLUG test_slug
+#+PROPERTY: MODIFIED [2015-12-29 Di]
+#+PROPERTY: TAGS my, first, tags
+#+PROPERTY: SAVE_AS alternative_filename.html
+
+- The TITLE is the only mandatory header property
+- Timestamps (DATE and MODIFIED) are optional and can be either a string of
+  %Y-%m-%d or an org timestamp
+- The property names (SUMMARY, SLUG, MODIFIED, TAGS, SAVE_AS) can be either
+  lower-case or upper-case
+- The slug is automatically the filename of the Org file, if not explicitly
+  specified
+- It is not possible to pass an empty property to Pelican.  For this plugin,
+  it makes no difference if a property is present in the Org file and left
+  empty, or if it is not defined at all.
+
+"""
+import os
+import json
+import logging
+import subprocess
+from pelican import readers
+from pelican import signals
+
+
+ELISP = os.path.join(os.path.dirname(__file__), 'org_reader.el')
+LOG = logging.getLogger(__name__)
+
+
+class OrgEmacsReader(readers.BaseReader):
+    enabled = True
+
+    EMACS_ARGS = ["-Q", "--batch"]
+    ELISP_EXEC = "(org->pelican \"{0}\" {1})"
+
+    file_extensions = ['org']
+
+    def read(self, filename):
+        assert 'ORG_READER_EMACS_LOCATION' in self.settings, \
+            "No ORG_READER_EMACS_LOCATION specified in settings"
+        LOG.info("Reading Org file {0}".format(filename))
+        cmd = [self.settings['ORG_READER_EMACS_LOCATION']]
+        cmd.extend(self.EMACS_ARGS)
+
+        if 'ORG_READER_EMACS_SETTINGS' in self.settings:
+            cmd.append('-l')
+            cmd.append(self.settings['ORG_READER_EMACS_SETTINGS'])
+
+        backend = self.settings.get('ORG_READER_BACKEND', "'html")
+
+        cmd.append('-l')
+        cmd.append(ELISP)
+
+        cmd.append('--eval')
+        cmd.append(self.ELISP_EXEC.format(filename, backend))
+
+        LOG.debug("OrgEmacsReader: running command `{0}`".format(cmd))
+
+        json_result = subprocess.check_output(cmd, universal_newlines=True)
+        json_output = json.loads(json_result)
+
+        # get default slug from .org filename
+        default_slug, _ = os.path.splitext(os.path.basename(filename))
+
+        metadata = {'title': json_output['title'] or '',
+                    'date': json_output['date'] or '',
+                    'author': json_output['author'] or '',
+                    'lang': json_output['language'] or '',
+                    'category': json_output['category'] or '',
+                    'slug': json_output['slug'] or default_slug,
+                    'modified': json_output['modified'] or '',
+                    'tags': json_output['tags'] or '',
+                    'save_as': json_output['save_as'] or '',
+                    'summary': json_output['summary'] or '',
+                    'status': json_output['status'] or ''}
+        # remove empty strings when necessary
+        for key in ['save_as', 'modified', 'lang', 'summary']:
+            if not metadata[key]:
+                metadata.pop(key)
+
+        parsed = {}
+        for key, value in metadata.items():
+            parsed[key] = self.process_metadata(key, value)
+
+        content = json_output['post']
+
+        return content, parsed
+
+
+def add_reader(readers):
+    readers.reader_classes['org'] = OrgEmacsReader
+
+
+def register():
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/pdf/Readme.rst b/pelican-plugins/pdf/Readme.rst
new file mode 100644
index 0000000..18bf8ee
--- /dev/null
+++ b/pelican-plugins/pdf/Readme.rst
@@ -0,0 +1,43 @@
+-------------
+PDF Generator
+-------------
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/pdf>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
+
+The PDF Generator plugin automatically exports articles and pages as PDF files
+as part of the site generation process. PDFs are saved to:
+``output/pdf/``
+
+Requirements
+------------
+
+You should ensure you have the ``rst2pdf`` module installed, which can be
+accomplished via::
+
+	pip install rst2pdf
+
+If you are converting Markdown sources to PDF, you also need the ``xhtml2pdf``
+module, which can be installed with::
+
+	pip install xhtml2pdf
+
+Usage
+-----
+
+To customize the PDF output, you can use the following settings in your
+Pelican configuration file::
+
+	PDF_STYLE = ''
+	PDF_STYLE_PATH = ''
+
+``PDF_STYLE_PATH`` defines a new path where ``rst2pdf`` will look for style
+sheets, while ``PDF_STYLE`` specifies the style you want to use. For a
+description of the available styles, please read the `rst2pdf documentation`_.
+
+.. _rst2pdf documentation: http://rst2pdf.ralsina.me/handbook.html#styles
+
+Known Issues
+------------
+
+Relative links in the form of ``|filename|images/test.png`` are not yet handled
+by the PDF generator.
diff --git a/pelican-plugins/pdf/__init__.py b/pelican-plugins/pdf/__init__.py
new file mode 100644
index 0000000..3920e03
--- /dev/null
+++ b/pelican-plugins/pdf/__init__.py
@@ -0,0 +1 @@
+from .pdf import *
diff --git a/pelican-plugins/pdf/pdf.py b/pelican-plugins/pdf/pdf.py
new file mode 100644
index 0000000..a981d63
--- /dev/null
+++ b/pelican-plugins/pdf/pdf.py
@@ -0,0 +1,125 @@
+# -*- coding: utf-8 -*-
+'''
+PDF Generator
+-------
+
+The pdf plugin generates PDF files from reStructuredText and Markdown sources.
+'''
+
+from __future__ import unicode_literals, print_function
+
+from io import open
+from pelican import signals
+from pelican.generators import Generator
+from pelican.readers import MarkdownReader
+
+import os
+import logging
+
+logger = logging.getLogger(__name__)
+
+import xhtml2pdf.util
+if 'pyPdf' not in dir(xhtml2pdf.util):
+    try:
+        from xhtml2pdf.util import PyPDF2
+        xhtml2pdf.util.pyPdf = PyPDF2
+    except ImportError:
+        logger.error('Failed to monkeypatch xhtml2pdf. ' +
+                     'You have missing dependencies')
+        raise
+
+from rst2pdf.createpdf import RstToPdf
+
+
+class PdfGenerator(Generator):
+    "Generate PDFs on the output dir, for all articles and pages"
+
+    supported_md_fields = ['date']
+
+    def __init__(self, *args, **kwargs):
+        super(PdfGenerator, self).__init__(*args, **kwargs)
+
+        if 'PDF_STYLE_PATH' in self.settings:
+            pdf_style_path = [self.settings['PDF_STYLE_PATH']]
+        else:
+            pdf_style_path = []
+
+        if 'PDF_STYLE' in self.settings:
+            pdf_style = [self.settings['PDF_STYLE']]
+        else:
+            pdf_style = []
+
+        self.pdfcreator = RstToPdf(breakside=0,
+                                   stylesheets=pdf_style,
+                                   style_path=pdf_style_path,
+                                   raw_html=True)
+
+    def _create_pdf(self, obj, output_path):
+        filename = obj.slug + '.pdf'
+        output_pdf = os.path.join(output_path, filename)
+        mdreader = MarkdownReader(self.settings)
+        _, ext = os.path.splitext(obj.source_path)
+        if ext == '.rst':
+            with open(obj.source_path, encoding='utf-8') as f:
+                text = f.read()
+            header = ''
+        elif ext[1:] in mdreader.file_extensions and mdreader.enabled:
+            text, meta = mdreader.read(obj.source_path)
+            header = ''
+
+            if 'title' in meta:
+                title = meta['title']
+                header = title + '\n' + '#' * len(title) + '\n\n'
+                del meta['title']
+
+            for k in meta.keys():
+                # We can't support all fields, so we strip the ones that won't
+                # look good
+                if k not in self.supported_md_fields:
+                    del meta[k]
+
+            header += '\n'.join([':%s: %s' % (k, meta[k]) for k in meta])
+            header += '\n\n.. raw:: html\n\n\t'
+            text = text.replace('\n', '\n\t')
+
+            # rst2pdf casts the text to str and will break if it finds
+            # non-escaped characters. Here we nicely escape them to XML/HTML
+            # entities before proceeding
+            text = text.encode('ascii', 'xmlcharrefreplace').decode()
+        else:
+            # We don't support this format
+            logger.warn('Ignoring unsupported file ' + obj.source_path)
+            return
+
+        logger.info(' [ok] writing %s' % output_pdf)
+        self.pdfcreator.createPdf(text=(header+text),
+                                  output=output_pdf)
+
+    def generate_context(self):
+        pass
+
+    def generate_output(self, writer=None):
+        # we don't use the writer passed as argument here
+        # since we write our own files
+        logger.info(' Generating PDF files...')
+        pdf_path = os.path.join(self.output_path, 'pdf')
+        if not os.path.exists(pdf_path):
+            try:
+                os.mkdir(pdf_path)
+            except OSError:
+                logger.error("Couldn't create the pdf output folder in " +
+                             pdf_path)
+
+        for article in self.context['articles']:
+            self._create_pdf(article, pdf_path)
+
+        for page in self.context['pages']:
+            self._create_pdf(page, pdf_path)
+
+
+def get_generators(generators):
+    return PdfGenerator
+
+
+def register():
+    signals.get_generators.connect(get_generators)
diff --git a/pelican-plugins/pdf/requirements.txt b/pelican-plugins/pdf/requirements.txt
new file mode 100755
index 0000000..576b757
--- /dev/null
+++ b/pelican-plugins/pdf/requirements.txt
@@ -0,0 +1,3 @@
+# Using git version as no Python3-compatible exists on Pypi: https://github.com/rst2pdf/rst2pdf/issues/799
+git+https://github.com/rst2pdf/rst2pdf.git
+xhtml2pdf
\ No newline at end of file
diff --git a/pelican-plugins/pdf/test_pdf.py b/pelican-plugins/pdf/test_pdf.py
new file mode 100644
index 0000000..daa61b1
--- /dev/null
+++ b/pelican-plugins/pdf/test_pdf.py
@@ -0,0 +1,47 @@
+import unittest
+import os
+import locale
+import logging
+import pdf
+
+from tempfile import mkdtemp
+from pelican import Pelican
+from pelican.readers import MarkdownReader
+from pelican.settings import read_settings
+from shutil import rmtree
+
+CUR_DIR = os.path.dirname(__file__)
+
+
+class TestPdfGeneration(unittest.TestCase):
+    def setUp(self, override=None):
+        self.temp_path = mkdtemp(prefix='pelicantests.')
+        settings = {
+            'PATH': os.path.join(CUR_DIR, '..', 'test_data', 'content'),
+            'OUTPUT_PATH': self.temp_path,
+            'PLUGINS': [pdf],
+            'LOCALE': locale.normalize('en_US'),
+        }
+        if override:
+            settings.update(override)
+
+        self.settings = read_settings(override=settings)
+        pelican = Pelican(settings=self.settings)
+
+        try:
+            pelican.run()
+        except ValueError:
+            logging.warn('Relative links in the form of ' +
+                         '|filename|images/test.png are not yet handled by ' +
+                         ' the pdf generator')
+            pass
+
+    def tearDown(self):
+        rmtree(self.temp_path)
+
+    def test_existence(self):
+        assert os.path.exists(os.path.join(self.temp_path, 'pdf',
+                                           'this-is-a-super-article.pdf'))
+        if MarkdownReader.enabled:
+            assert os.path.exists(os.path.join(self.temp_path, 'pdf',
+                                  'a-markdown-powered-article.pdf'))
diff --git a/pelican-plugins/pelican-cite/LICENSE b/pelican-plugins/pelican-cite/LICENSE
new file mode 100644
index 0000000..733c072
--- /dev/null
+++ b/pelican-plugins/pelican-cite/LICENSE
@@ -0,0 +1,675 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    {one line to give the program's name and a brief idea of what it does.}
+    Copyright (C) {year}  {name of author}
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    {project}  Copyright (C) {year}  {fullname}
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/pelican-plugins/pelican-cite/README.md b/pelican-plugins/pelican-cite/README.md
new file mode 100644
index 0000000..2c67a40
--- /dev/null
+++ b/pelican-plugins/pelican-cite/README.md
@@ -0,0 +1,57 @@
+pelican-cite
+==============
+
+Allows the use of BibTeX citations within a Pelican site. 
+
+## Installation
+
+Clone the git repository and put it in a directory listed in ``PLUGIN_PATHS`` in your ``pelicanconf.py``:
+
+```bash
+git clone https://github.com/VorpalBlade/pelican-cite.git
+```
+
+Then install the dependency `pybtex`:
+
+```bash
+pip install pybtex
+```
+
+How to Use
+==========
+
+This plugin reads a user-specified BibTeX file and generates bibliographic
+information within your articles and pages.
+
+Configuration is simply:
+
+```python
+PUBLICATIONS_SRC = 'content/pubs.bib'
+```
+
+If the file is present and readable, then content will be scanned for references
+to citation keys. These take the format `[@Bai2011]` or `[@@Bai2011]`. These
+will be replaced by incline citations which provide links to the full
+bibliographic information at the end of the article. The former reference would
+be replaced by a citation of the form "Bai & Stone (2011)", while the latter
+would be replaced by "(Bai & Stone, 2011)". 
+
+If a citation key is used which does not exist within the BibTeX file then
+a warning will be displayed.
+
+The BibTeX file may, optionally, be provided or overridden on a per-article
+basis by supplying the meta-data `publications_src`.
+
+The HTML code for the start and end of the bibliography section can be replaced via
+setting `BIBLIOGRAPHY_START` and `BIBLIOGRAPHY_END`. For example: 
+
+```python
+BIBLIOGRAPHY_START = '<section id="bib"><h1>My awesome bibliography</h1>'
+BIBLIOGRAPHY_END = '</section>' 
+``` 
+
+Attribution
+===========
+`pelican-cite` is based on the
+[pelican-bibtex](https://github.com/vene/pelican-bibtex) plugin written by
+[Vlad Niculae](https://github.com/vene).
diff --git a/pelican-plugins/pelican-cite/__init__.py b/pelican-plugins/pelican-cite/__init__.py
new file mode 100644
index 0000000..1b36570
--- /dev/null
+++ b/pelican-plugins/pelican-cite/__init__.py
@@ -0,0 +1,3 @@
+# This is a compatibility shim to support using this package directly with
+# Pelican's import system (instead of installing from PyPI).
+from .src.pelican_cite import *
diff --git a/pelican-plugins/pelican-cite/pelican-cite-master/.gitignore b/pelican-plugins/pelican-cite/pelican-cite-master/.gitignore
new file mode 100644
index 0000000..768b3cd
--- /dev/null
+++ b/pelican-plugins/pelican-cite/pelican-cite-master/.gitignore
@@ -0,0 +1,13 @@
+*.pyc
+*.pyo
+*.swp
+*\.egg-info/
+*~
+.coverage*
+\.eggs/
+__pycache__
+build/
+dist/
+papers.bib
+pip-wheel-metadata/
+test-blog
diff --git a/pelican-plugins/pelican-cite/pyproject.toml b/pelican-plugins/pelican-cite/pyproject.toml
new file mode 100644
index 0000000..121a39f
--- /dev/null
+++ b/pelican-plugins/pelican-cite/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools >= 40.6.0", "wheel"]
+build-backend = "setuptools.build_meta"
diff --git a/pelican-plugins/pelican-cite/setup.py b/pelican-plugins/pelican-cite/setup.py
new file mode 100755
index 0000000..0f1881b
--- /dev/null
+++ b/pelican-plugins/pelican-cite/setup.py
@@ -0,0 +1,35 @@
+from os.path import abspath, dirname, join, normpath
+
+import setuptools
+
+setuptools.setup(
+    # Basic package information:
+    name='pelican_cite',
+    version='1.0.0',
+    packages=setuptools.find_packages('src'),
+    package_dir={'': 'src'},
+
+
+    # Packaging options:
+    include_package_data=True,
+
+    # Package dependencies:
+    install_requires=['pelican>=4.0', 'pybtex'],
+
+    # Metadata for PyPI:
+    author='Arvid Norlander',
+    author_email='VorpalBlade@users.noreply.github.com',
+    license='GPL-3.0',
+    url='https://github.com/VorpalBlade/pelican-cite',
+    keywords='pelican blog static bibtex citation',
+    description='Allows the use of BibTeX citations within a Pelican site.',
+    long_description=open(
+        normpath(join(dirname(abspath(__file__)), 'README.md'))).read(),
+    long_description_content_type="text/markdown",
+    classifiers=[
+        "Programming Language :: Python :: 3",
+        "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+        "Operating System :: OS Independent",
+        "Framework :: Pelican :: Plugins",
+    ],
+)
diff --git a/pelican-plugins/pelican-cite/src/__init__.py b/pelican-plugins/pelican-cite/src/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/pelican-cite/src/pelican_cite/__init__.py b/pelican-plugins/pelican-cite/src/pelican_cite/__init__.py
new file mode 100644
index 0000000..3653c5e
--- /dev/null
+++ b/pelican-plugins/pelican-cite/src/pelican_cite/__init__.py
@@ -0,0 +1 @@
+from .pelican_cite import *
diff --git a/pelican-plugins/pelican-cite/src/pelican_cite/author_year.py b/pelican-plugins/pelican-cite/src/pelican_cite/author_year.py
new file mode 100644
index 0000000..15b5e19
--- /dev/null
+++ b/pelican-plugins/pelican-cite/src/pelican_cite/author_year.py
@@ -0,0 +1,193 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 Chris MacMackin
+#
+# 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.
+
+"""
+Defines an author-year inline citation style for Pybtex. This is 
+modified from the alpha style built into Pybtex, written by
+Andrey Golovizin.
+"""
+
+import re
+import sys
+import unicodedata
+from collections import Counter
+from pybtex.style.labels import BaseLabelStyle
+from pybtex.textutils import abbreviate
+
+_nonalnum_pattern = re.compile(r'[^\w]+', re.UNICODE)
+
+
+def _strip_accents(s):
+    return u''.join(
+        (c for c in unicodedata.normalize('NFD', s)
+         if not unicodedata.combining(c)))
+
+
+def _strip_nonalnum(parts):
+    """Strip all non-alphanumerical characters from a list of strings.
+
+    >>> _strip_nonalnum([u"Ã…A. B. Testing 12+}[.@~_", u" 3%"])
+    u'AABTesting123'
+    """
+    s = u''.join(parts)
+    return _nonalnum_pattern.sub(u'', s)
+
+
+class LabelStyle(BaseLabelStyle):
+    name = 'alpha'
+
+    def format_labels(self, sorted_entries):
+        labels = [self.format_label(entry) for entry in sorted_entries]
+        for i in range(len(labels)):
+            labels[i] = labels[i].replace('\\{', '&#123;')
+            labels[i] = labels[i].replace('\\}', '&#125;')
+            labels[i] = labels[i].replace('{', '')
+            labels[i] = labels[i].replace('}', '')
+        count = Counter(labels)
+        counted = Counter()
+        for label in labels:
+            if count[label]:
+                yield '(' + label + ')'
+            else:
+                yield '(' + label + chr(ord('a') + counted[label]) + ')'
+                counted.update([label])
+
+    # note: this currently closely follows the alpha.bst code
+    # we should eventually refactor it
+
+    def format_label(self, entry):
+        # see alpha.bst calc.label
+        if entry.type == "book" or entry.type == "inbook":
+            label = self.author_editor_key_label(entry)
+        elif entry.type == "proceedings":
+            label = self.editor_key_organization_label(entry)
+        elif entry.type == "manual":
+            label = self.author_key_organization_label(entry)
+        else:
+            label = self.author_key_label(entry)
+        if "year" in entry.fields:
+            return label.strip() + ', ' + entry.fields["year"]
+        else:
+            return label.strip()
+        # bst additionally sets sort.label
+
+    def author_key_label(self, entry):
+        # see alpha.bst author.key.label
+        if "author" not in entry.persons:
+            if "key" not in entry.fields:
+                return entry.key[:]  # entry.key is bst cite$
+            else:
+                # for entry.key, bst actually uses text.prefix$
+                return entry.fields["key"][:]
+        else:
+            return self.format_lab_names(entry.persons["author"])
+
+    def author_editor_key_label(self, entry):
+        # see alpha.bst author.editor.key.label
+        if "author" not in entry.persons:
+            if "editor" not in entry.persons:
+                if "key" not in entry.fields:
+                    return entry.key[:]  # entry.key is bst cite$
+                else:
+                    # for entry.key, bst actually uses text.prefix$
+                    return entry.fields["key"][:]
+            else:
+                return self.format_lab_names(entry.persons["editor"])
+        else:
+            return self.format_lab_names(entry.persons["author"])
+
+    def author_key_organization_label(self, entry):
+        if "author" not in entry.persons:
+            if "key" not in entry.fields:
+                if "organization" not in entry.fields:
+                    return entry.key[:]  # entry.key is bst cite$
+                else:
+                    result = entry.fields["organization"]
+                    if result.startswith("The "):
+                        result = result[4:]
+                    return result
+            else:
+                return entry.fields["key"][:]
+        else:
+            return self.format_lab_names(entry.persons["author"])
+
+    def editor_key_organization_label(self, entry):
+        if "editor" not in entry.persons:
+            if "key" not in entry.fields:
+                if "organization" not in entry.fields:
+                    return entry.key[:]  # entry.key is bst cite$
+                else:
+                    result = entry.fields["organization"]
+                    if result.startswith("The "):
+                        result = result[4:]
+                    return result
+            else:
+                return entry.fields["key"][:]
+        else:
+            return self.format_lab_names(entry.persons["editor"])
+
+    @staticmethod
+    def format_lab_names(persons):
+        # see alpha.bst format.lab.names
+        # s = persons
+        numnames = len(persons)
+        if numnames > 1:
+            if numnames > 2:
+                namesleft = 1
+            else:
+                namesleft = numnames
+            result = ""
+            nameptr = 1
+            while namesleft:
+                person = persons[nameptr - 1]
+                if nameptr == numnames:
+                    if str(person) == "others":
+                        result += "et al. "
+                    else:
+                        result += _strip_nonalnum(
+                            [abbreviate(name) for name in person.prelast()]
+                            + [' ']
+                            + person.last()
+                        )
+                else:
+                    result += _strip_nonalnum(
+                        [abbreviate(name) for name in person.prelast()]
+                        + [' ']
+                        + person.last()
+                    )
+                if numnames == 2 and nameptr == 1:
+                    result += ' and '
+                else:
+                    result += ' '
+                nameptr += 1
+                namesleft -= 1
+            if numnames > 2:
+                result += "et al."
+        else:
+            person = persons[0]
+            result = _strip_nonalnum(
+                [abbreviate(name) for name in person.prelast()]
+                + [' ']
+                + person.last()
+            )
+        return result
diff --git a/pelican-plugins/pelican-cite/src/pelican_cite/pelican_cite.py b/pelican-plugins/pelican-cite/src/pelican_cite/pelican_cite.py
new file mode 100644
index 0000000..c4a4ff3
--- /dev/null
+++ b/pelican-plugins/pelican-cite/src/pelican_cite/pelican_cite.py
@@ -0,0 +1,254 @@
+# -*- coding: utf-8 -*-
+"""
+pelican-cite
+==============
+
+A Pelican plugin that provices a BibTeX-style reference system within
+pelican sites.
+
+Based on teh Pelican BibTeX plugin written by Vlad Niculae <vlad@vene.ro>
+"""
+
+import logging
+import re
+import sys
+
+try:
+    from pybtex.database.input.bibtex import Parser
+    from pybtex.database.output.bibtex import Writer
+    from pybtex.database import BibliographyData, PybtexError, Entry
+    from pybtex.backends import html
+    from pybtex.style.formatting import toplevel
+    from pybtex.style.formatting.unsrt import dashify, Style as UnsrtStyle
+    from pybtex.style.template import (
+        join, words, field, optional, first_of, sentence, tag, optional_field,
+    )
+    from pybtex.plugin import find_plugin
+
+    pyb_imported = True
+except ImportError:
+    pyb_imported = False
+
+from pelican import signals
+from pelican.contents import Static
+from .author_year import LabelStyle
+
+__version__ = '1.0.0'
+
+JUMP_BACK = '<a class="cite-backref" href="#ref-{0}-{1}" title="Jump back to reference {1}">{2}</a>'
+CITE_RE = re.compile(r"\[&#64;(&#64;)?\s*(\w.*?)\s*\]")
+DATE_RE = re.compile(r"(?P<y>\d{4})(?:-(?P<m>\d{1,2})(?:-(?P<d>\d{1,2}))?)?")
+CITE_2_RE = re.compile(r">\s*\(\s*(.*?),\s*(.*?)\s*\)\s*<")
+
+
+class Style(UnsrtStyle):
+    name = 'inline'
+    default_sorting_style = 'author_year_title'
+    default_label_style = 'author_year'
+
+    def __init__(self, label_style=None, name_style=None, sorting_style=None, abbreviate_names=False, **kwargs):
+        self.name_style = find_plugin('pybtex.style.names', name_style or self.default_name_style)()
+        self.label_style = LabelStyle()
+        self.sorting_style = find_plugin('pybtex.style.sorting', sorting_style or self.default_sorting_style)()
+        self.format_name = self.name_style.format
+        self.format_labels = self.label_style.format_labels
+        self.sort = self.sorting_style.sort
+        self.abbreviate_names = abbreviate_names
+
+    def get_article_template(self, e):
+        pages = field('pages', apply_func=dashify)
+        date = words[optional_field('month'), field('year')]
+        volume_and_pages = first_of[
+            # volume and pages, with optional issue number
+            optional[
+                join[
+                    field('volume'),
+                    optional['(', field('number'), ')'],
+                    ':', pages
+                ],
+            ],
+            # pages only
+            words['pages', pages],
+        ]
+        template = toplevel[
+            self.format_names('author'),
+            self.format_title(e, 'title'),
+            sentence[
+                tag('em')[first_of[
+                              optional[field('journal')],
+                              optional[field('journaltitle')],
+                          ],
+                ],
+                optional[volume_and_pages],
+                date],
+            sentence[optional_field('note')],
+            self.format_web_refs(e),
+        ]
+        return template
+
+
+logger = logging.getLogger(__name__)
+global_bib = None
+bibliography_start = '<hr>\n<h2>Bibliography</h2>\n'
+bibliography_end = ''
+if pyb_imported:
+    style = Style()
+    backend = html.Backend()
+else:
+    style = None
+    backend = None
+
+
+def get_bib_file(article):
+    """
+    If a bibliography file is specified for this article/page, parse
+    it and return the parsed object.
+    """
+    if 'publications_src' in article.metadata:
+        refs_file = article.metadata['publications_src']
+        try:
+            local_bib = Parser().parse_file(refs_file)
+            return local_bib
+        except PybtexError as e:
+            logger.warning('`pelican_bibtex` failed to parse file %s: %s' % (
+                refs_file,
+                str(e)))
+            return global_bib
+    else:
+        return global_bib
+
+
+def process_content(article):
+    """
+    Substitute the citations and add a bibliography for an article or
+    page, using the local bib file if specified or the global one otherwise.
+    """
+    data = get_bib_file(article)
+    if not data:
+        return
+    content = article._content
+    content = content.replace("@", "&#64;")
+
+    # Scan post to figure out what citations are needed
+    cite_count = {}
+    replace_count = {}
+    for citation in CITE_RE.findall(content):
+        if citation[1] not in cite_count:
+            cite_count[citation[1]] = 1
+            replace_count[citation[1]] = 1
+        else:
+            cite_count[citation[1]] += 1
+
+    # Get formatted entries for the appropriate bibliographic entries
+    cited = []
+    for key in data.entries.keys():
+        if key in cite_count:
+            cited.append(data.entries[key])
+    if len(cited) == 0:
+        return
+
+    # Patch entries, adding missing things to workaround style expecting fields
+    # that are not there
+    for entry in cited:  # type: Entry
+        # Zotero at least exports with "date" instead of separate "year" etc.
+        if 'year' not in entry.fields and 'date' in entry.fields:
+            date_parse = DATE_RE.match(entry.fields['date'])
+            if date_parse:
+                groups = date_parse.groupdict()
+                if groups['y']:
+                    entry.fields['year'] = groups['y']
+                if groups['m']:
+                    entry.fields['month'] = groups['m']
+                if groups['d']:
+                    entry.fields['day'] = groups['d']
+    formatted_entries = style.format_entries(cited)
+
+    # Get the data for the required citations and append to content
+    labels = {}
+    content += bibliography_start
+    for formatted_entry in formatted_entries:
+        key = formatted_entry.key
+        ref_id = key.replace(' ', '')
+        label = ("<a href='#" + ref_id + "' id='ref-" + ref_id + "-{0}'>"
+                 + formatted_entry.label + "</a>")
+        t = formatted_entry.text.render(backend)
+        t = t.replace('\\{', '&#123;')
+        t = t.replace('\\}', '&#125;')
+        t = t.replace('{', '')
+        t = t.replace('}', '')
+        text = ("<p id='" + ref_id + "'>" + t)
+        for i in range(cite_count[key]):
+            if i == 0:
+                text += ' ' + JUMP_BACK.format(ref_id, 1, '↩')
+                if cite_count[key] > 1:
+                    text += JUMP_BACK.format(ref_id, 1, ' <sup>1</sup> ')
+            else:
+                text += JUMP_BACK.format(ref_id, i + 1, '<sup>' + str(i + 1) + '</sup> ')
+        text += '</p>'
+        content += text + '\n'
+        labels[key] = label
+
+    content += bibliography_end
+
+    # Replace citations in article/page
+    cite_count = {}
+
+    def replace_cites(match):
+        label = match.group(2)
+        if label in labels:
+            if label not in cite_count:
+                cite_count[label] = 1
+                replace_count[label] = 1
+            else:
+                cite_count[label] += 1
+            lab = labels[label].format(cite_count[label])
+            if '&#64;&#64;' in match.group():
+                return lab
+            else:
+                m = CITE_2_RE.search(lab)
+                lab = lab[0:m.start()] + '>' + m.group(1) + ' (' + m.group(2) + ')<' + lab[m.end():]
+                return lab
+        else:
+            logger.warning('No BibTeX entry found for key "{}"'.format(label))
+            return match.group(0)
+
+    content = CITE_RE.sub(replace_cites, content)
+    article._content = content
+
+
+def add_citations(content):
+    if isinstance(content, Static):
+        return
+
+    global global_bib
+    if not pyb_imported:
+        logger.warning('`pelican-cite` failed to load dependency `pybtex`')
+        return
+
+    process_content(content)
+
+
+def init(pelican_instance):
+    global global_bib, bibliography_start, bibliography_end
+    if not pyb_imported:
+        logger.warning('`pelican-cite` failed to load dependency `pybtex`')
+        return
+
+    if 'BIBLIOGRAPHY_START' in pelican_instance.settings:
+        bibliography_start = pelican_instance.settings['BIBLIOGRAPHY_START']
+    if 'BIBLIOGRAPHY_END' in pelican_instance.settings:
+        bibliography_end = pelican_instance.settings['BIBLIOGRAPHY_END']
+
+    if 'PUBLICATIONS_SRC' in pelican_instance.settings:
+        refs_file = pelican_instance.settings['PUBLICATIONS_SRC']
+        try:
+            global_bib = Parser().parse_file(refs_file)
+        except PybtexError as e:
+            logger.warning('`pelican_bibtex` failed to parse file %s: %s' % (
+                refs_file,
+                str(e)))
+
+
+def register():
+    signals.initialized.connect(init)
+    signals.content_object_init.connect(add_citations)
diff --git a/pelican-plugins/pelican-rdf/ReadMe.md b/pelican-plugins/pelican-rdf/ReadMe.md
new file mode 100644
index 0000000..8590837
--- /dev/null
+++ b/pelican-plugins/pelican-rdf/ReadMe.md
@@ -0,0 +1,107 @@
+pelican-rdf plugin
+==================
+
+A plugin for rdf vocabularies providers
+---------------------------------------
+
+# Overview
+ 
+This plugin is intended at easing the lightwheight description of vocabularies online, in the fashion of http://vocab.linkeddata.es/. It offers a new media type, the Vocabulary, and a flexible mechanism to gather metadata about said vocabulary based on sparql queries.
+
+# How it works
+
+## Required configuration
+
+### Description of the variables
+Your pelicanconf.py should include new options : 
+- **VOC_PATHS**: A list of paths to a local folders containing vocabularies. If all your vocabularies are remote, set its value to an empty list.
+- **VOC_EXCLUDES**: A list of paths to folders where you don't want vocabularies to be processed. 
+- **VOC_URIS** = A list of URLs pointing to dereferencable vocabularies. Content is negociated to retrieve RDF/XML.
+- **VOC_QUERIES_PATH** = Path th the folder containing the sparql queries to collect metadata about the vocabulary.
+- **VOCABULARY_URL**= How the generated document URL should look like
+- **VOCABULARY_SAVE_AS**= How the generated document should be named
+
+### Default configuration
+```
+VOC_PATHS=['ontologies']
+VOC_EXCLUDES=[]
+VOC_URIS = ["https://www.irit.fr/recherches/MELODI/ontologies/IoT-O",]
+VOC_QUERIES_PATH = "plugins/pelican-rdf/sparql-queries"
+VOCABULARY_URL= '{slug}.html'
+VOCABULARY_SAVE_AS= '{slug}.html'
+```
+
+## Accessing the vocabulary metadata
+
+### First, a simple example...
+The following snippet of code outputs a description of the vocabularies that have been processed : 
+```
+<h1 class="page-header">
+    Ontology repository
+</h1>
+{% if vocabularies %}
+    <table class="table table-striped">
+        <thead>
+          <tr>
+            <th>Title</th>
+            <th>Description</th>
+            <th>License (if any)</th>
+          </tr>
+        </thead>
+        <tbody>
+            {% for voc in vocabularies %}
+                <tr>
+                    <td><a href="{{ voc.iri }}">{{ voc.title }}</a></td>
+                    <td>
+                        <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#{{ voc.title }}description" aria-expanded="false" aria-controls="{{ voc.title }}description">
+                            {{ voc.title }} description
+                        </button>
+                        <div class="collapse" id="{{ voc.title }}description">
+                            <div class="card card-block">
+                                {{ voc.description }}
+                          </div>
+                        </div>
+                    </td>
+                    <td>{{ voc.lov_metadata.license }}</td>
+                <tr>
+            {% endfor %}
+        </tbody>
+      </table>
+{% endif %}
+```
+
+### ... but how does it work ?
+The required properties (iri, title, version and description) are directly available in the vocabulary metadata. Notice that the license is accessed through a compound notation, explained in the next paragraph.
+
+### Another example...
+The following snippet outputs a list of the classes defined by the ontology, as well as its superclass (limited to one for the time being) and potential description (the comment).
+```
+{% for class in voc.classes %}
+    <div>
+        <h2>{{ class.class }}</h2>
+        <h3>{{ class.superclass }}</h3>
+        <p>{{ class.comment }}</p>
+    </div>
+{% endfor %}
+```
+
+### ... with custom metadata
+To understand the example, one must look at the classes.sparql (the name is important) query : 
+```
+PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX dc:  <http://purl.org/dc/elements/1.1/>
+PREFIX cc:  <http://creativecommons.org/ns#>
+PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
+
+SELECT ?class ?comment ?label ?superclass
+WHERE {
+    ?class rdf:type owl:Class.
+    OPTIONAL { ?class rdfs:comment ?comment.}
+    OPTIONAL { ?label rdfs:label ?label.}
+    OPTIONAL { ?class rdfs:subClassOf ?superclass.}
+} GROUP BY ?class
+```
+
+Each graph binding matching this sparql query is returned as a dictionnary in the vocabulary context, with the sparql projection attributes (here, class, comment, label and superclass) as keys. Then, this list of results is stored in the vocabulary metadata under the name of the query, here "classes". 
+
+**NOTE**: The management of multiple values such as the multiple superclasses for a class is not yet handled correctly, it is a work in progress.
\ No newline at end of file
diff --git a/pelican-plugins/pelican-rdf/__init__.py b/pelican-plugins/pelican-rdf/__init__.py
new file mode 100644
index 0000000..1040e55
--- /dev/null
+++ b/pelican-plugins/pelican-rdf/__init__.py
@@ -0,0 +1 @@
+from .pelican_rdf import *
diff --git a/pelican-plugins/pelican-rdf/pelican_rdf.py b/pelican-plugins/pelican-rdf/pelican_rdf.py
new file mode 100644
index 0000000..8bc6220
--- /dev/null
+++ b/pelican-plugins/pelican-rdf/pelican_rdf.py
@@ -0,0 +1,175 @@
+from pelican.readers import BaseReader
+from pelican.generators import CachingGenerator
+from pelican.contents import Page, is_valid_content
+from pelican import signals
+import logging
+from blinker import signal
+import requests
+from os import listdir
+from os.path import isfile, join
+
+"""
+pelican-rdf
+===============
+
+This plugin integrates to pelican a new type of media, the vocabulary.
+Vocabularies are .rdf or .owl files, and metadata about them is collected
+through sparql queries.
+"""
+
+
+try:
+    import rdflib
+    from rdflib.query import Processor
+    rdflib_loaded=True
+except ImportError:
+    rdflib_loaded=False
+
+logger = logging.getLogger(__name__)
+
+voc_generator_init = signal('voc_generator_init')
+voc_generator_finalized = signal('voc_generator_finalized')
+voc_writer_finalized = signal('voc_writer_finalized')
+voc_generator_preread = signal('voc_generator_preread')
+voc_generator_context = signal('voc_generator_context')
+
+class VocabularyGenerator(CachingGenerator):
+    """Generate vocabulary descriptions"""
+
+    # temporary file where the vocabulary is dereferenced to
+    # when collected online
+    _local_vocabulary_path = "/tmp/"
+    
+    def __init__(self, *args, **kwargs):
+        logger.debug("Vocabulary generator called")
+        self.vocabularies =[]
+        super(VocabularyGenerator, self).__init__(*args, **kwargs)
+    
+    # Called both for local and remote vocabulary context creation.
+    # Performs the actual Vocabulary generation.
+    def generate_vocabulary_context(
+            self, vocabulary_file_name, path_to_vocabulary):
+        logger.debug("Generating__ vocabulary context for "+
+            path_to_vocabulary+"/"+vocabulary_file_name)
+        voc = self.get_cached_data(vocabulary_file_name, None)
+        if voc is None:
+            try:
+                voc = self.readers.read_file(
+                    base_path=path_to_vocabulary,
+                    path=vocabulary_file_name,
+                    content_class=Vocabulary,
+                    context=self.context,
+                    preread_signal=voc_generator_preread,
+                    preread_sender=self,
+                    context_signal=voc_generator_context,
+                    context_sender=self)
+            except Exception as e:
+                logger.error(
+                    'Could not process %s\n%s', vocabulary_file_name, e,
+                    exc_info=self.settings.get('DEBUG', False))
+                self._add_failed_source_path(vocabulary_file_name)
+            
+            if not is_valid_content(voc, vocabulary_file_name):
+                self._add_failed_source_path(vocabulary_file_name)
+    
+            self.cache_data(vocabulary_file_name, voc)
+        self.vocabularies.append(voc)
+        self.add_source_path(voc)
+    
+    
+    def generate_local_context(self):
+        for f in self.get_files(
+                self.settings['VOC_PATHS'],
+                exclude=self.settings['VOC_EXCLUDES']):
+            self.generate_vocabulary_context(f, self.path)
+    
+    def dereference(self, uri, local_file):
+        logger.debug("Dereferencing "+uri+" into "+local_file)
+        headers={"Accept":"application/rdf+xml"}
+        r = requests.get(uri, headers=headers)
+        with open(self._local_vocabulary_path+local_file, 'w') as f:
+            f.write(r.text)
+    
+    def generate_remote_context(self):
+        for uri in self.settings["VOC_URIS"]:
+            logger.debug("Generating context for remote "+uri)
+            local_name = uri.split("/")[-1]+".rdf"
+            self.dereference(uri, local_name)
+            self.generate_vocabulary_context(
+                local_name,
+                self._local_vocabulary_path)
+    
+    def generate_context(self):
+        self.generate_local_context()
+        self.generate_remote_context()
+        self._update_context(('vocabularies',))
+        self.save_cache()
+        self.readers.save_cache()
+    
+    def generate_output(self, writer):
+        for voc in self.vocabularies:
+            writer.write_file(
+                voc.save_as, self.get_template(voc.template),
+                self.context, voc=voc,
+                relative_urls=self.settings['RELATIVE_URLS'],
+                override_output=hasattr(voc, 'override_save_as'))
+        voc_writer_finalized.send(self, writer=writer)
+
+class RdfReader(BaseReader):
+    
+    file_extensions = ['rdf', 'owl']
+    enabled = bool(rdflib_loaded)
+    
+    def __init__(self, *args, **kwargs):
+        super(RdfReader, self).__init__(*args, **kwargs)
+
+    def read(self, source_path):
+        """Parse content and metadata of an rdf file"""
+        logger.debug("Loading graph described in "+source_path)
+        graph = rdflib.Graph()
+        graph.load(source_path)
+        meta = {}
+        queries = [
+            f for f in listdir(self.settings["VOC_QUERIES_PATH"])
+            if (isfile(join(self.settings["VOC_QUERIES_PATH"], f)) 
+                and f.endswith(".sparql"))]
+        for query_path in queries:
+            query_file_path = self.settings["VOC_QUERIES_PATH"]+"/"+query_path
+            with open(query_file_path, "r") as query_file:
+                query = query_file.read()
+
+                # The name of the query identifies the elements in the context
+                query_key=query_path.split(".")[0]
+                result_set = graph.query(query)
+                # Each query result will be stored as a dictionnary in the
+                # vocabulary context, referenced by the query name as its key.
+                # Multiple results are stored in a list.
+                for result in result_set:
+                    if not query_key in meta.keys():
+                        meta[query_key]=result.asdict()
+                    elif type(meta[query_key]) == list:
+                        meta[query_key].append(result.asdict())
+                    else:
+                        meta[query_key]=[meta[query_key], result.asdict()]
+        meta["iri"] = meta["lov_metadata"]["iri"]
+        meta["description"] = meta["lov_metadata"]["description"]
+        meta["version"] = meta["lov_metadata"]["version"]
+        meta["title"] = meta["lov_metadata"]["title"]
+        return "", meta
+
+class Vocabulary(Page):
+    mandatory_properties = ('iri','description','version', 'title')
+    default_template = 'vocabulary'
+
+def add_reader(readers):
+    for ext in RdfReader.file_extensions:
+        readers.reader_classes[ext] = RdfReader
+
+def add_generator(pelican_object):
+    print("Adding the generator")
+    return VocabularyGenerator
+
+
+def register():
+    signals.get_generators.connect(add_generator)
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/pelican-rdf/sparql-queries/classes.sparql b/pelican-plugins/pelican-rdf/sparql-queries/classes.sparql
new file mode 100644
index 0000000..269cf2f
--- /dev/null
+++ b/pelican-plugins/pelican-rdf/sparql-queries/classes.sparql
@@ -0,0 +1,12 @@
+PREFIX owl:	<http://www.w3.org/2002/07/owl#>
+PREFIX dc:	<http://purl.org/dc/elements/1.1/>
+PREFIX cc:	<http://creativecommons.org/ns#>
+PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
+
+SELECT ?class ?comment ?label
+WHERE {
+	?class rdf:type owl:Class.
+	OPTIONAL { ?class rdfs:comment ?comment.}
+	OPTIONAL { ?label rdfs:label ?label.}
+	OPTIONAL { ?class rdfs:subClassOf ?superclass.}
+} GROUP BY ?class
\ No newline at end of file
diff --git a/pelican-plugins/pelican-rdf/sparql-queries/lov_metadata.sparql b/pelican-plugins/pelican-rdf/sparql-queries/lov_metadata.sparql
new file mode 100644
index 0000000..87556a1
--- /dev/null
+++ b/pelican-plugins/pelican-rdf/sparql-queries/lov_metadata.sparql
@@ -0,0 +1,11 @@
+PREFIX owl:	<http://www.w3.org/2002/07/owl#>
+PREFIX dc:	<http://purl.org/dc/elements/1.1/>
+PREFIX cc:	<http://creativecommons.org/ns#>
+SELECT ?iri ?license ?description ?version ?title
+WHERE {
+	?iri rdf:type owl:Ontology;
+		cc:license ?license;
+		dc:description ?description;
+		dc:title ?title;
+		owl:versionInfo ?version.
+} LIMIT 1
\ No newline at end of file
diff --git a/pelican-plugins/pelican_comment_system/CHANGELOG.md b/pelican-plugins/pelican_comment_system/CHANGELOG.md
new file mode 100644
index 0000000..d6720e4
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/CHANGELOG.md
@@ -0,0 +1,54 @@
+# Change Log #
+All notable changes to this project will be documented in this file.
+This project adheres to [Semantic Versioning](http://semver.org/).
+
+## 1.3.0 - 2017-01-10
+### Added
+- add [blogger_comment_export.py](import/blogger_comment_export.py) script to export comments from Blogger XML export and [associated documentation](docs/import.md) [PR #835](https://github.com/getpelican/pelican-plugins/pull/835)
+
+## 1.2.2 – 2016-12-19
+### Fixed
+- Correct jQuery expression in cancelReply method  [PR #820](https://github.com/getpelican/pelican-plugins/pull/820)
+
+## 1.2.1 – 2016-09-22
+### Fixed
+- Add support for the autoreload mode of pelican [PR #782](https://github.com/getpelican/pelican-plugins/pull/782) [Fixes pelican#1949](https://github.com/getpelican/pelican/issues/1949)
+
+## 1.2.0 – 2016-05-23
+### Fixed - Documentation
+- Correct template path [PR #713](https://github.com/getpelican/pelican-plugins/pull/713)
+
+### Added - Documentation
+- Adds Quickstart guide + default theme [PR #686](https://github.com/getpelican/pelican-plugins/pull/686)
+
+### Fixed
+- Fix mailto link: use '\r\n' instead of '\n' [PR #720](https://github.com/getpelican/pelican-plugins/pull/720)
+- Fix comparison of offset-naive and offset-aware datetimes [PR #722](https://github.com/getpelican/pelican-plugins/pull/722)
+
+### Added
+- Logs a warning if the parent of a comment can not be found [PR #715](https://github.com/getpelican/pelican-plugins/pull/715)
+
+## 1.1.0 – 2016-02-18
+### Fixed – Documentation
+- Updated old URLs [PR #677](https://github.com/getpelican/pelican-plugins/pull/677)
+
+### Changed
+- Main logic runs a bit earlier (allows other plugins to access comments earlier)  [PR #677](https://github.com/getpelican/pelican-plugins/pull/677)
+- The writer to generate the feeds can now be exchanged (via a normal pelican writer plugin) [PR #677](https://github.com/getpelican/pelican-plugins/pull/677)
+
+
+## 1.0.1 – 2015-10-04
+### Fixed – Documentation
+- Add commas indicating tuple (`PELICAN_COMMENT_SYSTEM_AUTHORS`) [PR #579](https://github.com/getpelican/pelican-plugins/pull/579)
+
+
+## 1.0.0 – 2014-11-05
+### Added
+- Basic static comments
+- Atom Feeds
+- Replies to comments
+- Avatars and identicons
+
+
+This change log uses [Keep a CHANGELOG](http://keepachangelog.com/) as a template.
+
diff --git a/pelican-plugins/pelican_comment_system/Readme.md b/pelican-plugins/pelican_comment_system/Readme.md
new file mode 100644
index 0000000..6681187
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/Readme.md
@@ -0,0 +1,45 @@
+# Pelican Comment System
+
+Pelican Comment System allows you to add static comments to your articles.
+
+Comments are stored in files in formats that can be processed by Pelican (e.g., Markdown, reStructuredText). Each comment resides in its own file.
+
+### Features
+
+ - Static comments for each article
+ - Replies to comments
+ - Avatars and [Identicons](https://en.wikipedia.org/wiki/Identicon)
+ - Comment Atom feed for each article
+ - Easy styleable via themes
+ - Python 2 and 3 support
+
+
+See it in action here: [bernhard.scheirle.de](http://bernhard.scheirle.de/posts/2014/March/29/static-comments-via-email/)
+
+Author             | Website                       | Github
+-------------------|-------------------------------|------------------------------
+Bernhard Scheirle  | <http://bernhard.scheirle.de> | <https://github.com/Scheirle>
+
+## Instructions
+
+ - [Quickstart Guide](doc/quickstart.md)
+ - [Installation and basic usage](doc/installation.md)
+ - [Import existing comments](doc/import.md)
+ - [Avatars and identicons](doc/avatars.md)
+ - [Comment Atom feed](doc/feed.md)
+ 
+## Requirements
+
+Pelican 3.4 or newer is required.
+
+To create identicons, the Python Image Library is needed. Therefore you either need PIL **or** Pillow (recommended).
+
+**Install Pillow via:**
+
+    pip install Pillow
+
+If you don't want avatars or identicons, this plugin works fine without PIL/Pillow. You will, however, see a warning that identicons are deactivated (as expected).
+
+## Change Log
+
+The change log can be found in the [CHANGELOG.md](CHANGELOG.md) file.
diff --git a/pelican-plugins/pelican_comment_system/__init__.py b/pelican-plugins/pelican_comment_system/__init__.py
new file mode 100644
index 0000000..4c8a3ca
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/__init__.py
@@ -0,0 +1 @@
+from .pelican_comment_system import *
diff --git a/pelican-plugins/pelican_comment_system/avatars.py b/pelican-plugins/pelican_comment_system/avatars.py
new file mode 100644
index 0000000..faa3ce3
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/avatars.py
@@ -0,0 +1,105 @@
+# -*- coding: utf-8 -*-
+"""
+Author: Bernhard Scheirle
+"""
+
+from __future__ import unicode_literals
+
+import logging
+import os
+
+import hashlib
+
+
+logger = logging.getLogger(__name__)
+_log = "pelican_comment_system: avatars: "
+try:
+    from . identicon import identicon
+    _identiconImported = True
+except ImportError as e:
+    logger.warning(_log + "identicon deactivated: " + str(e))
+    _identiconImported = False
+
+# Global Variables
+_identicon_save_path = None
+_identicon_output_path = None
+_identicon_data = None
+_identicon_size = None
+_initialized = False
+_authors = None
+_missingAvatars = []
+
+
+def _ready():
+    if not _initialized:
+        logger.warning(_log + "Module not initialized. use init")
+    if not _identicon_data:
+        logger.debug(_log + "No identicon data set")
+    return _identiconImported and _initialized and _identicon_data
+
+
+def init(pelican_output_path, identicon_output_path, identicon_data,
+         identicon_size, authors):
+    global _identicon_save_path
+    global _identicon_output_path
+    global _identicon_data
+    global _identicon_size
+    global _initialized
+    global _authors
+    global _missingAvatars
+
+    _identicon_save_path = os.path.join(pelican_output_path,
+                                        identicon_output_path)
+    _identicon_output_path = identicon_output_path
+    _identicon_data = identicon_data
+    _identicon_size = identicon_size
+    _authors = authors
+    _missingAvatars = []
+    _initialized = True
+
+
+def _createIdenticonOutputFolder():
+    if not _ready():
+        return
+
+    if not os.path.exists(_identicon_save_path):
+        os.makedirs(_identicon_save_path)
+
+
+def getAvatarPath(comment_id, metadata):
+    if not _ready():
+        return ''
+
+    md5 = hashlib.md5()
+    author = tuple()
+    for data in _identicon_data:
+        if data in metadata:
+            string = "{}".format(metadata[data])
+            md5.update(string.encode('utf-8'))
+            author += tuple([string])
+        else:
+            logger.warning(_log + data +
+                           " is missing in comment: " + comment_id)
+
+    if author in _authors:
+        return _authors[author]
+
+    global _missingAvatars
+
+    code = md5.hexdigest()
+
+    if not code in _missingAvatars:
+        _missingAvatars.append(code)
+
+    return os.path.join(_identicon_output_path, '%s.png' % code)
+
+
+def generateAndSaveMissingAvatars():
+    _createIdenticonOutputFolder()
+    global _missingAvatars
+    for code in _missingAvatars:
+        avatar_path = '%s.png' % code
+        avatar = identicon.render_identicon(int(code, 16), _identicon_size)
+        avatar_save_path = os.path.join(_identicon_save_path, avatar_path)
+        avatar.save(avatar_save_path, 'PNG')
+    _missingAvatars = []
diff --git a/pelican-plugins/pelican_comment_system/comment.py b/pelican-plugins/pelican_comment_system/comment.py
new file mode 100644
index 0000000..66c2131
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/comment.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+"""
+Author: Bernhard Scheirle
+"""
+from __future__ import unicode_literals
+import os
+
+from pelican.contents import Content
+from pelican.utils import slugify
+
+from . import avatars
+
+
+class Comment(Content):
+    mandatory_properties = ('author', 'date')
+    default_template = 'None'
+
+    article = None
+
+    def __init__(self, content, metadata, settings, source_path, context):
+        # Strip the path off the full filename.
+        name = os.path.split(source_path)[1]
+
+        if not hasattr(self, 'slug'):
+            # compute the slug before initializing the base Content object, so
+            # it doesn't get set there
+            # This is required because we need a slug containing the file
+            # extension.
+            self.slug = slugify(name, settings.get('SLUG_SUBSTITUTIONS', ()))
+
+        super(Comment, self).__init__(content, metadata, settings, source_path,
+                                      context)
+
+        self.replies = []
+
+        # Strip the extension from the filename.
+        name = os.path.splitext(name)[0]
+        self.avatar = avatars.getAvatarPath(name, metadata)
+        self.title = "Posted by:  {}".format(metadata['author'])
+
+    def addReply(self, comment):
+        self.replies.append(comment)
+
+    def getReply(self, slug):
+        for reply in self.replies:
+            if reply.slug == slug:
+                return reply
+            else:
+                deepReply = reply.getReply(slug)
+                if deepReply is not None:
+                    return deepReply
+        return None
+
+    def __lt__(self, other):
+        return self.date < other.date
+
+    def sortReplies(self):
+        for r in self.replies:
+            r.sortReplies()
+        self.replies = sorted(self.replies)
+
+    def countReplies(self):
+        amount = 0
+        for r in self.replies:
+            amount += r.countReplies()
+        return amount + len(self.replies)
diff --git a/pelican-plugins/pelican_comment_system/doc/avatars.md b/pelican-plugins/pelican_comment_system/doc/avatars.md
new file mode 100644
index 0000000..7344114
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/doc/avatars.md
@@ -0,0 +1,35 @@
+# Avatars and Identicons
+To activate the avatars and [identicons](https://en.wikipedia.org/wiki/Identicon) you have to set `PELICAN_COMMENT_SYSTEM_IDENTICON_DATA`.
+
+##### Example
+```python
+PELICAN_COMMENT_SYSTEM_IDENTICON_DATA = ('author',)
+```
+Now every comment with the same author tag will be treated as if written from the same person. And therefore have the same avatar/identicon. Of cause you can modify this tuple so other metadata are checked.
+
+## Specific Avatars
+To set a specific avatar for a author you have to add them to the `PELICAN_COMMENT_SYSTEM_AUTHORS` dictionary.
+
+The `key` of the dictionary has to be a tuple of the form of `PELICAN_COMMENT_SYSTEM_IDENTICON_DATA`, so in our case only the author's name.
+
+The `value` of the dictionary is the path to the specific avatar.
+
+##### Example
+```python
+PELICAN_COMMENT_SYSTEM_AUTHORS = {
+	('John',): "images/authors/john.png",
+	('Tom',): "images/authors/tom.png",
+}
+```
+
+## Theme
+To display the avatars and identicons simply add the following in the "comment for loop" in your theme:
+
+```html
+<img src="{{ SITEURL }}/{{ comment.avatar }}"
+		alt="Avatar"
+		height="{{ PELICAN_COMMENT_SYSTEM_IDENTICON_SIZE }}"
+		width="{{ PELICAN_COMMENT_SYSTEM_IDENTICON_SIZE }}">
+```
+
+Of cause the `height` and `width` are optional, but they make sure that everything has the same size (in particular  specific avatars).
diff --git a/pelican-plugins/pelican_comment_system/doc/feed.md b/pelican-plugins/pelican_comment_system/doc/feed.md
new file mode 100644
index 0000000..8893963
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/doc/feed.md
@@ -0,0 +1,33 @@
+# Comment Atom Feed
+## Custom comment url
+Be sure that the id of the html tag containing the comment matches `COMMENT_URL`.
+
+##### pelicanconf.py
+```python
+COMMENT_URL = "#my_own_comment_id_{slug}"
+```
+
+##### Theme
+```html
+{% for comment in article.comments recursive %}
+	...
+	<article id="my_own_comment_id_{{comment.slug}}">{{ comment.content }}</article>
+	...
+{% endfor %}
+```
+## Theme
+#### Link
+To display a link to the article feed simply add the following to your theme:
+
+```html
+{% if article %}
+	<a href="{{ FEED_DOMAIN }}/{{ PELICAN_COMMENT_SYSTEM_FEED|format(article.slug) }}">Comment Atom Feed</a>
+{% endif %}
+```
+
+Link to the all comment feed:
+
+```html
+<a href="{{ FEED_DOMAIN }}/{{ PELICAN_COMMENT_SYSTEM_FEED_ALL }}">Comment All Atom Feed</a>
+```
+
diff --git a/pelican-plugins/pelican_comment_system/doc/import.md b/pelican-plugins/pelican_comment_system/doc/import.md
new file mode 100644
index 0000000..0263fda
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/doc/import.md
@@ -0,0 +1,47 @@
+# Importing Comments
+
+**Note**: Contributions to this section are welcomed!
+
+When moving to Pelican and the Pelican Comment System, it may be desirable to move over your comments as well.
+
+The scripts to support this are found in the `import` directory.
+
+## Blogger
+
+Blogger is good in that it will give you an export of everything, but the bad news is it's one giant XML file. XML is great if you're a computer, but a bit of a pain if you're a human. 
+
+The code I used to export my comments from Blogger is found at [blogger_comment_export.py](../import/blogger_comment_export.py).
+
+To use it
+yourself, you will need to first adjust the constants at the beginning of the 
+script (lines 26-33) to point to your Blogger XML export and where you want
+the comments to be exported to. You will also need to install `untangle`
+(available through pip -- `pip install untangle`).
+
+Comments will be exported into folders matching
+the Blogger slug of the post. The email for all authors will be `noreply@blogger.com`. The other file created will be `authors.txt`
+which lists the various comment authors, and a link to the profile
+picture used on Blogger. These pictures will need to be manually downloaded
+and then configured using the `PELICAN_COMMENT_SYSTEM_AUTHORS` setting.
+In my case, that looked like this:
+
+```python
+# in pelicanconf.py
+PELICAN_COMMENT_SYSTEM_AUTHORS = {
+    ('PROTIK KHAN', 'noreply@blogger.com'): "images/authors/rabiul_karim.webp",
+    ('Matthew Hartzell', 'noreply@blogger.com'): "images/authors/matthew_hartzell.webp",
+    ('Jens-Peter Labus', 'noreply@blogger.com'): "images/authors/jens-peter_labus.png",
+    ('Bridget', 'noreply@blogger.com'): "images/authors/bridget.jpg",
+    ('melissaclee', 'noreply@blogger.com'): "images/authors/melissa_lee.jpg",
+    ('Melissa', 'noreply@blogger.com'): "images/authors/melissa_lee.jpg"
+}
+```
+
+The script was developed for Python 3.6, but should work on Python 3.4+
+without modification.
+
+For more information on this script on, you can read my
+[blog post](http://blog.minchin.ca/2016/12/blogger-comments-exported.html)
+where I introduced it.
+
+-- Wm. Minchin (@MinchinWeb), January 10, 2017
diff --git a/pelican-plugins/pelican_comment_system/doc/installation.md b/pelican-plugins/pelican_comment_system/doc/installation.md
new file mode 100644
index 0000000..56869b4
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/doc/installation.md
@@ -0,0 +1,117 @@
+# Installation
+
+Activate the plugin by adding it to your `pelicanconf.py`: (See also [How to use plugins](https://github.com/getpelican/pelican-plugins/tree/master/#how-to-use-plugins))
+
+	PELICAN_COMMENT_SYSTEM = True
+
+Then, modify your `article.html` theme as follows below.
+
+## Settings
+
+Name                                           | Type      | Default                      | Description
+-----------------------------------------------|-----------|------------------------------|-------
+`PELICAN_COMMENT_SYSTEM`                       | `boolean` | `False`                      | Activates or deactivates the comment system
+`PELICAN_COMMENT_SYSTEM_DIR`                   | `string`  | `comments`                   | Folder where the comments are stored, relative to `PATH`
+`PELICAN_COMMENT_SYSTEM_IDENTICON_OUTPUT_PATH` | `string`  | `images/identicon`           | Relative URL to the output folder where the identicons are stored
+`PELICAN_COMMENT_SYSTEM_IDENTICON_DATA`        | `tuple`   | `()`                         | Contains all Metadata tags, which in combination identifies a comment author (like `('author', 'email')`)
+`PELICAN_COMMENT_SYSTEM_IDENTICON_SIZE`        | `int`     | `72`                         | Width and height of the identicons. Has to be a multiple of 3.
+`PELICAN_COMMENT_SYSTEM_AUTHORS`               | `dict`    | `{}`                         | Comment authors, which should have a specific avatar. More info [here](avatars.md)
+`PELICAN_COMMENT_SYSTEM_FEED`                  | `string`  |`feeds/comment.%s.atom.xml`   | Relative URL to output the Atom feed for each article.`%s` gets replaced with the slug of the article. More info [here](http://docs.getpelican.com/en/latest/settings.html#feed-settings)
+`PELICAN_COMMENT_SYSTEM_FEED_ALL`              | `string`  |`feeds/comments.all.atom.xml` | Relative URL to output the Atom feed which contains all comments of all articles. More info [here](http://docs.getpelican.com/en/latest/settings.html#feed-settings)
+`COMMENT_URL`                                  | `string`  | `#comment-{slug}`            | `{slug}` gets replaced with the slug of the comment. More info [here](feed.md)
+
+## Folder structure
+
+Every comment file has to be stored in a sub-folder of `PELICAN_COMMENT_SYSTEM_DIR`.
+
+Sub-folders are named after the `slug` of the articles.
+
+So the comments to your `foo-bar` article are stored in `comments/foo-bar/`
+
+The filenames of the comment files are up to you. But the filename is the identifier of the comment (**with** extension).
+
+##### Example folder structure
+
+	.
+	└── comments
+		└── foo-bar
+		│   ├── 1.md
+		│   └── 0.md
+		└── some-other-slug
+			├── random-Name.md
+			├── 1.md
+			└── 0.md
+
+
+## Comment file
+
+### Meta information
+
+Tag           | Required  | Description
+--------------|-----------|----------------
+`date`        | yes       | Date when the comment was posted
+`author`      | yes       | Name of the comment author
+`slug`        | no        | Slug of the comment. If not present it will be computed from the file name (including the extension)
+`replyto`     | no        | Slug of the parent comment
+
+Every other (custom) tag gets parsed as well and will be available through the theme.
+
+##### Example of a comment file
+
+	date: 2014-3-21 15:02
+	author: Author of the comment
+	website: http://authors.website.com
+	replyto: 1md
+	anothermetatag: some random tag
+
+	Content of the comment.
+
+## Theme
+
+In the `article.html` template file, there are now two additional variables available.
+
+Variables                | Description
+-------------------------|--------------------------
+`article.comments_count` | Number of total comments for this article (including replies to comments)
+`article.comments`       | Array containing the top-level comments for this article (no replies to comments)
+
+### Comment object
+
+The comment object is a [content](https://github.com/getpelican/pelican/blob/master/pelican/contents.py#L34) object, so all common attributes are available (author, content, date, local_date, slug, metadata, etc.).
+
+The additional following attributes are also available:
+
+Attribute  | Description
+-----------|--------------------------
+`replies`  | Array containing the top level replies for this comment
+`avatar`   | Path to the avatar or identicon of the comment author
+
+##### Example article.html template
+
+(only the comment section is shown here)
+
+```html
+{% if article.comments %}
+	{% for comment in article.comments recursive %}
+		{% if loop.depth0 == 0 %}
+			{% set marginLeft = 0 %}
+		{% else %}
+			{% set marginLeft = 50 %}
+		{% endif %}
+			<article id="comment-{{comment.slug}}" style="border: 1px solid #DDDDDD; padding: 5px 0px 0px 5px; margin: 0px -1px 5px {{marginLeft}}px;">
+				<a href="{{ SITEURL }}/{{ article.url }}#comment-{{comment.slug}}" rel="bookmark" title="Permalink to this comment">Permalink</a>
+				<h4>{{ comment.author }}</h4>
+				<p>Posted on <abbr class="published" title="{{ comment.date.isoformat() }}">{{ comment.locale_date }}</abbr></p>
+				{{ comment.metadata['my_custom_metadata'] }}
+				{{ comment.content }}
+				{% if comment.replies %}
+					{{ loop(comment.replies) }}
+				{% endif %}
+			</article>
+	{% endfor %}
+{% else %}
+	<p>There are no comments yet.<p>
+{% endif %}
+```
+
+For a more complex / extensive example have a look at [theme/templates/pcs/comments.html](../theme/templates/pcs/comments.html)
\ No newline at end of file
diff --git a/pelican-plugins/pelican_comment_system/doc/quickstart.md b/pelican-plugins/pelican_comment_system/doc/quickstart.md
new file mode 100644
index 0000000..3ef675b
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/doc/quickstart.md
@@ -0,0 +1,32 @@
+# Quickstart Guide (with Comment form)
+
+This guide shows you how to setup the plugin for basic usage.
+The default theme has an comment form included.
+This form allows your visitors to easily write comments and send them to you via email [1].
+
+1. Merge the `./theme` folder with your own theme folder, or copy the files manually
+	```
+	mkdir -p [yourtheme]/templates/pcs
+	mkdir -p [yourtheme]/static/js
+	cp ./theme/templates/pcs/comments.html [yourtheme]/templates/pcs/comments.html
+	cp ./theme/static/js/comments.js      [yourtheme]/static/js/comments.html
+	```
+
+2. Modify your `article.html` template:
+	1. Add `{% import 'pcs/comments.html' as pcs with context %}` to the top
+	2. Add `{{ pcs.comments_quickstart("emailuser", "example.com") }}` where you want your comments (e.g. below `{{ article.content }}`)  
+	"emailuser@example.com" will be the e-mail address used for the `mailto:` link [1]
+
+3. Enable the plugin: `pelicanconf.py` (See also [How to use plugins](https://github.com/getpelican/pelican-plugins/tree/master/#how-to-use-plugins))
+	```
+	PELICAN_COMMENT_SYSTEM = True
+	PELICAN_COMMENT_SYSTEM_IDENTICON_DATA = ('author',)
+	```
+
+## Notes
+ * Instead of using `pcs.comments_quickstart` you can also use the other macros available in `comments.html`.
+   They are a bit more flexible and may generate "better" html output e.g.:
+    * Don't force load jQuery
+    * No inline css
+
+[1] The comment form generates a `mailto:` link on submisson. The resulting email contains a valid Markdown block. Now you only have to copy this block to a new file, obviating the need to gather the metadata (such as date, author, replyto) yourself.
\ No newline at end of file
diff --git a/pelican-plugins/pelican_comment_system/identicon/LICENSE b/pelican-plugins/pelican_comment_system/identicon/LICENSE
new file mode 100755
index 0000000..e6e964f
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/identicon/LICENSE
@@ -0,0 +1,11 @@
+identicon.py is Licesensed under FreeBSD License.
+(http://www.freebsd.org/copyright/freebsd-license.html)
+
+Copyright 1994-2009 Shin Adachi. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/pelican-plugins/pelican_comment_system/identicon/README.md b/pelican-plugins/pelican_comment_system/identicon/README.md
new file mode 100755
index 0000000..1aa768c
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/identicon/README.md
@@ -0,0 +1,17 @@
+identicon.py: identicon python implementation.
+==============================================
+:Author:Shin Adachi <shn@glucose.jp>
+
+## usage
+
+### commandline
+
+    python identicon.py [code]
+
+### python
+
+    import identicon
+    identicon.render_identicon(code, size)
+
+Return a PIL Image class instance which have generated identicon image.
+`size` specifies patch size. Generated image size is 3 * `size`.
\ No newline at end of file
diff --git a/pelican-plugins/pelican_comment_system/identicon/__init__.py b/pelican-plugins/pelican_comment_system/identicon/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/pelican_comment_system/identicon/identicon.py b/pelican-plugins/pelican_comment_system/identicon/identicon.py
new file mode 100755
index 0000000..a8f9c5c
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/identicon/identicon.py
@@ -0,0 +1,259 @@
+#!/usr/bin/env python
+# -*- coding:utf-8 -*-
+"""
+identicon.py
+identicon python implementation.
+by Shin Adachi <shn@glucose.jp>
+
+= usage =
+
+== commandline ==
+>>> python identicon.py [code]
+
+== python ==
+>>> import identicon
+>>> identicon.render_identicon(code, size)
+
+Return a PIL Image class instance which have generated identicon image.
+```size``` specifies `patch size`. Generated image size is 3 * ```size```.
+"""
+# g
+# PIL Modules
+from PIL import Image, ImageDraw, ImagePath, ImageColor
+
+
+__all__ = ['render_identicon', 'IdenticonRendererBase']
+
+
+class Matrix2D(list):
+
+    """Matrix for Patch rotation"""
+
+    def __init__(self, initial=[0.] * 9):
+        assert isinstance(initial, list) and len(initial) == 9
+        list.__init__(self, initial)
+
+    def clear(self):
+        for i in range(9):
+            self[i] = 0.
+
+    def set_identity(self):
+        self.clear()
+        for i in range(3):
+            self[i] = 1.
+
+    def __str__(self):
+        return '[%s]' % ', '.join('%3.2f' % v for v in self)
+
+    def __mul__(self, other):
+        r = []
+        if isinstance(other, Matrix2D):
+            for y in range(3):
+                for x in range(3):
+                    v = 0.0
+                    for i in range(3):
+                        v += (self[i * 3 + x] * other[y * 3 + i])
+                    r.append(v)
+        else:
+            raise NotImplementedError
+        return Matrix2D(r)
+
+    def for_PIL(self):
+        return self[0:6]
+
+    @classmethod
+    def translate(kls, x, y):
+        return kls([1.0, 0.0, float(x),
+                    0.0, 1.0, float(y),
+                    0.0, 0.0, 1.0])
+
+    @classmethod
+    def scale(kls, x, y):
+        return kls([float(x), 0.0, 0.0,
+                    0.0, float(y), 0.0,
+                    0.0, 0.0, 1.0])
+
+    """
+    # need `import math`
+    @classmethod
+    def rotate(kls, theta, pivot=None):
+        c = math.cos(theta)
+        s = math.sin(theta)
+
+        matR = kls([c, -s, 0., s, c, 0., 0., 0., 1.])
+        if not pivot:
+            return matR
+        return kls.translate(-pivot[0], -pivot[1]) * matR *
+            kls.translate(*pivot)
+    """
+
+    @classmethod
+    def rotateSquare(kls, theta, pivot=None):
+        theta = theta % 4
+        c = [1., 0., -1., 0.][theta]
+        s = [0., 1., 0., -1.][theta]
+
+        matR = kls([c, -s, 0., s, c, 0., 0., 0., 1.])
+        if not pivot:
+            return matR
+        return kls.translate(-pivot[0], -pivot[1]) * matR * \
+            kls.translate(*pivot)
+
+
+class IdenticonRendererBase(object):
+    PATH_SET = []
+
+    def __init__(self, code):
+        """
+        @param code code for icon
+        """
+        if not isinstance(code, int):
+            code = int(code)
+        self.code = code
+
+    def render(self, size):
+        """
+        render identicon to PIL.Image
+
+        @param size identicon patchsize. (image size is 3 * [size])
+        @return PIL.Image
+        """
+
+        # decode the code
+        middle, corner, side, foreColor, backColor = self.decode(self.code)
+        size = int(size)
+        # make image
+        image = Image.new("RGB", (size * 3, size * 3))
+        draw = ImageDraw.Draw(image)
+
+        # fill background
+        draw.rectangle((0, 0, image.size[0], image.size[1]), fill=0)
+
+        kwds = {
+            'draw': draw,
+            'size': size,
+            'foreColor': foreColor,
+            'backColor': backColor}
+        # middle patch
+        self.drawPatch((1, 1), middle[2], middle[1], middle[0], **kwds)
+
+        # side patch
+        kwds['type'] = side[0]
+        for i in range(4):
+            pos = [(1, 0), (2, 1), (1, 2), (0, 1)][i]
+            self.drawPatch(pos, side[2] + 1 + i, side[1], **kwds)
+
+        # corner patch
+        kwds['type'] = corner[0]
+        for i in range(4):
+            pos = [(0, 0), (2, 0), (2, 2), (0, 2)][i]
+            self.drawPatch(pos, corner[2] + 1 + i, corner[1], **kwds)
+
+        return image
+
+    def drawPatch(self, pos, turn, invert, type, draw, size, foreColor,
+                  backColor):
+        """
+        @param size patch size
+        """
+        path = self.PATH_SET[type]
+        if not path:
+            # blank patch
+            invert = not invert
+            path = [(0., 0.), (1., 0.), (1., 1.), (0., 1.), (0., 0.)]
+        patch = ImagePath.Path(path)
+        if invert:
+            foreColor, backColor = backColor, foreColor
+
+        mat = Matrix2D.rotateSquare(turn, pivot=(0.5, 0.5)) *\
+            Matrix2D.translate(*pos) *\
+            Matrix2D.scale(size, size)
+
+        patch.transform(mat.for_PIL())
+        draw.rectangle((pos[0] * size, pos[1] * size, (pos[0] + 1) * size,
+                        (pos[1] + 1) * size), fill=backColor)
+        draw.polygon(patch, fill=foreColor, outline=foreColor)
+
+    # virtual functions
+    def decode(self, code):
+        raise NotImplementedError
+
+
+class DonRenderer(IdenticonRendererBase):
+
+    """
+    Don Park's implementation of identicon
+    see : http://www.docuverse.com/blog/donpark/2007/01/19/identicon-updated-and-source-released
+    """
+
+    PATH_SET = [
+        [(0, 0), (4, 0), (4, 4), (0, 4)],   # 0
+        [(0, 0), (4, 0), (0, 4)],
+        [(2, 0), (4, 4), (0, 4)],
+        [(0, 0), (2, 0), (2, 4), (0, 4)],
+        [(2, 0), (4, 2), (2, 4), (0, 2)],   # 4
+        [(0, 0), (4, 2), (4, 4), (2, 4)],
+        [(2, 0), (4, 4), (2, 4), (3, 2), (1, 2), (2, 4), (0, 4)],
+        [(0, 0), (4, 2), (2, 4)],
+        [(1, 1), (3, 1), (3, 3), (1, 3)],   # 8
+        [(2, 0), (4, 0), (0, 4), (0, 2), (2, 2)],
+        [(0, 0), (2, 0), (2, 2), (0, 2)],
+        [(0, 2), (4, 2), (2, 4)],
+        [(2, 2), (4, 4), (0, 4)],
+        [(2, 0), (2, 2), (0, 2)],
+        [(0, 0), (2, 0), (0, 2)],
+        []]                                 # 15
+    MIDDLE_PATCH_SET = [0, 4, 8, 15]
+
+    # modify path set
+    for idx in range(len(PATH_SET)):
+        if PATH_SET[idx]:
+            p = map(lambda vec: (vec[0] / 4.0, vec[1] / 4.0), PATH_SET[idx])
+            p = list(p)
+            PATH_SET[idx] = p + p[:1]
+
+    def decode(self, code):
+        # decode the code
+        middleType = self.MIDDLE_PATCH_SET[code & 0x03]
+        middleInvert = (code >> 2) & 0x01
+        cornerType = (code >> 3) & 0x0F
+        cornerInvert = (code >> 7) & 0x01
+        cornerTurn = (code >> 8) & 0x03
+        sideType = (code >> 10) & 0x0F
+        sideInvert = (code >> 14) & 0x01
+        sideTurn = (code >> 15) & 0x03
+        blue = (code >> 16) & 0x1F
+        green = (code >> 21) & 0x1F
+        red = (code >> 27) & 0x1F
+
+        foreColor = (red << 3, green << 3, blue << 3)
+
+        return (middleType, middleInvert, 0),\
+               (cornerType, cornerInvert, cornerTurn),\
+               (sideType, sideInvert, sideTurn),\
+            foreColor, ImageColor.getrgb('white')
+
+
+def render_identicon(code, size, renderer=None):
+    if not renderer:
+        renderer = DonRenderer
+    return renderer(code).render(size)
+
+
+if __name__ == '__main__':
+    import sys
+
+    if len(sys.argv) < 2:
+        print('usage: python identicon.py [CODE]....')
+        raise SystemExit
+
+    for code in sys.argv[1:]:
+        if code.startswith('0x') or code.startswith('0X'):
+            code = int(code[2:], 16)
+        elif code.startswith('0'):
+            code = int(code[1:], 8)
+        else:
+            code = int(code)
+
+        icon = render_identicon(code, 24)
+        icon.save('%08x.png' % code, 'PNG')
diff --git a/pelican-plugins/pelican_comment_system/import/__init__.py b/pelican-plugins/pelican_comment_system/import/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/pelican_comment_system/import/blogger_comment_export.py b/pelican-plugins/pelican_comment_system/import/blogger_comment_export.py
new file mode 100644
index 0000000..fa4bb08
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/import/blogger_comment_export.py
@@ -0,0 +1,165 @@
+#! python3.6
+"""
+Export Comments from BLogger XML
+
+Takes in a Blogger export XML file and spits out each comment in a seperate
+file, such that can be used with the [Pelican Comment System]
+(https://bernhard.scheirle.de/posts/2014/March/29/static-comments-via-email/).
+
+May be simple to extend to export posts as well.
+
+For a more detailed desciption, read my blog post at
+    http://blog.minchin.ca/2016/12/blogger-comments-exported.html
+
+Author: Wm. Minchin -- minchinweb@gmail.com
+License: MIT
+Changes:
+
+ - 2016.12.29 -- initial release
+ - 2017.01.10 -- clean-up for addition in Pelican Comment System repo
+"""
+
+from pathlib import Path
+
+import untangle
+
+###############################################################################
+# Constants                                                                   #
+###############################################################################
+
+BLOGGER_EXPORT = r'c:\tmp\blog.xml'
+COMMENTS_DIR = 'comments'
+COMMENT_EXT = '.md'
+AUTHORS_FILENAME = 'authors.txt'
+
+###############################################################################
+# Main Code Body                                                              #
+###############################################################################
+
+authors_and_pics = []
+
+
+def main():
+    obj = untangle.parse(BLOGGER_EXPORT)
+
+    templates = 0
+    posts = 0
+    comments = 0
+    settings = 0
+    others = 0
+
+    for entry in obj.feed.entry:
+        try:
+            full_type = entry.category['term']
+        except TypeError:
+            # if a post is under multiple categories
+            for my_category in entry.category:
+                full_type = my_category['term']
+                # str.find() uses a return of `-1` to denote failure
+                if full_type.find('#') != -1:
+                    break
+            else:
+                others += 1
+
+        simple_type = full_type[full_type.find('#')+1:]
+
+        if 'settings' == simple_type:
+            settings += 1
+        elif 'post' == simple_type:
+            posts += 1
+            # process posts here
+        elif 'comment' == simple_type:
+            comments += 1
+            process_comment(entry, obj)
+        elif 'template' == simple_type:
+            templates += 1
+        else:
+            others += 1
+
+    export_authors()
+
+    print('''
+            {} template
+            {} posts (including drafts)
+            {} comments
+            {} settings
+            {} other entries'''.format(templates,
+                                       posts,
+                                       comments,
+                                       settings,
+                                       others))
+
+
+def process_comment(entry, obj):
+    # e.g. "tag:blogger.com,1999:blog-26967745.post-4115122471434984978"
+    comment_id = entry.id.cdata
+    # in ISO 8601 format, usable as is
+    comment_published = entry.published.cdata
+    comment_body = entry.content.cdata
+    comment_post_id = entry.thr_in_reply_to['ref']
+    comment_author = entry.author.name.cdata
+    comment_author_pic = entry.author.gd_image['src']
+    comment_author_email = entry.author.email.cdata
+
+    # add author and pic to global list
+    global authors_and_pics
+    authors_and_pics.append((comment_author, comment_author_pic))
+
+    # use this for a filename for the comment
+    # e.g. "4115122471434984978"
+    comment_short_id = comment_id[comment_id.find('post-')+5:]
+
+    comment_text = "date: {}\nauthor: {}\nemail: {}\n\n{}\n"\
+                        .format(comment_published,
+                                comment_author,
+                                comment_author_email,
+                                comment_body)
+
+    # article
+    for entry in obj.feed.entry:
+        entry_id = entry.id.cdata
+        if entry_id == comment_post_id:
+            article_entry = entry
+            break
+    else:
+        print("No matching article for comment", comment_id, comment_post_id)
+        # don't process comment further
+        return
+
+    # article slug
+    for link in article_entry.link:
+        if link['rel'] == 'alternate':
+            article_link = link['href']
+            break
+    else:
+        article_title = article_entry.title.cdata
+        print('Could not find slug for', article_title)
+        article_link = article_title.lower().replace(' ', '-')
+
+    article_slug = article_link[article_link.rfind('/')+1:
+                                                    article_link.find('.html')]
+
+    comment_filename = Path(COMMENTS_DIR).resolve()
+    # folder; if it doesn't exist, create it
+    comment_filename = comment_filename / article_slug
+    comment_filename.mkdir(parents=True, exist_ok=True)
+    # write the comment file
+    comment_filename = comment_filename / (comment_short_id + COMMENT_EXT)
+    comment_filename.write_text(comment_text)
+
+
+def export_authors():
+    to_export = set(authors_and_pics)
+    to_export = list(to_export)
+    to_export.sort()
+
+    str_export = ''
+    for i in to_export:
+        str_export += (i[0] + '\t\t' + i[1] + '\n')
+
+    authors_filename = Path(COMMENTS_DIR).resolve() / AUTHORS_FILENAME
+    authors_filename.write_text(str_export)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/pelican-plugins/pelican_comment_system/pelican_comment_system.py b/pelican-plugins/pelican_comment_system/pelican_comment_system.py
new file mode 100644
index 0000000..9d7f3b2
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/pelican_comment_system.py
@@ -0,0 +1,240 @@
+# -*- coding: utf-8 -*-
+"""
+Pelican Comment System
+======================
+
+A Pelican plugin, which allows you to add comments to your articles.
+
+Author: Bernhard Scheirle
+"""
+from __future__ import unicode_literals
+import logging
+import os
+import copy
+
+logger = logging.getLogger(__name__)
+
+from itertools import chain
+from pelican import signals
+from pelican.readers import Readers
+from pelican.writers import Writer
+
+from . comment import Comment
+from . import avatars
+
+
+__version__ = "1.3.0"
+
+
+_all_comments = []
+_pelican_writer = None
+_pelican_obj = None
+
+def setdefault(pelican, settings):
+    from pelican.settings import DEFAULT_CONFIG
+    for key, value in settings:
+        DEFAULT_CONFIG.setdefault(key, value)
+
+    if not pelican:
+        return
+
+    for key, value in settings:
+        pelican.settings.setdefault(key, value)
+
+
+def pelican_initialized(pelican):
+    from pelican.settings import DEFAULT_CONFIG
+    settings = [
+        ('PELICAN_COMMENT_SYSTEM', False),
+        ('PELICAN_COMMENT_SYSTEM_DIR', 'comments'),
+        ('PELICAN_COMMENT_SYSTEM_IDENTICON_OUTPUT_PATH', 'images/identicon'),
+        ('PELICAN_COMMENT_SYSTEM_IDENTICON_DATA', ()),
+        ('PELICAN_COMMENT_SYSTEM_IDENTICON_SIZE', 72),
+        ('PELICAN_COMMENT_SYSTEM_AUTHORS', {}),
+        ('PELICAN_COMMENT_SYSTEM_FEED', os.path.join('feeds', 'comment.%s.atom.xml')),
+        ('PELICAN_COMMENT_SYSTEM_FEED_ALL', os.path.join('feeds', 'comments.all.atom.xml')),
+        ('COMMENT_URL', '#comment-{slug}')
+    ]
+
+    setdefault(pelican, settings)
+
+    DEFAULT_CONFIG['PAGE_EXCLUDES'].append(
+        DEFAULT_CONFIG['PELICAN_COMMENT_SYSTEM_DIR'])
+    DEFAULT_CONFIG['ARTICLE_EXCLUDES'].append(
+        DEFAULT_CONFIG['PELICAN_COMMENT_SYSTEM_DIR'])
+    pelican.settings['PAGE_EXCLUDES'].append(
+        pelican.settings['PELICAN_COMMENT_SYSTEM_DIR'])
+    pelican.settings['ARTICLE_EXCLUDES'].append(
+        pelican.settings['PELICAN_COMMENT_SYSTEM_DIR'])
+
+    global _pelican_obj
+    _pelican_obj = pelican
+
+
+def initialize(article_generator):
+    avatars.init(
+        article_generator.settings['OUTPUT_PATH'],
+        article_generator.settings[
+            'PELICAN_COMMENT_SYSTEM_IDENTICON_OUTPUT_PATH'],
+        article_generator.settings['PELICAN_COMMENT_SYSTEM_IDENTICON_DATA'],
+        article_generator.settings[
+            'PELICAN_COMMENT_SYSTEM_IDENTICON_SIZE'] / 3,
+        article_generator.settings['PELICAN_COMMENT_SYSTEM_AUTHORS'],
+    )
+
+    # Reset old states (autoreload mode)
+    global _all_comments
+    global _pelican_writer
+    _pelican_writer = _pelican_obj._get_writer()
+    _all_comments = []
+
+def warn_on_slug_collision(items):
+    slugs = {}
+    for comment in items:
+        if not comment.slug in slugs:
+            slugs[comment.slug] = [comment]
+        else:
+            slugs[comment.slug].append(comment)
+
+    for slug, itemList in slugs.items():
+        len_ = len(itemList)
+        if len_ > 1:
+            logger.warning('There are %s comments with the same slug: %s', len_, slug)
+            for x in itemList:
+                logger.warning('    %s', x.source_path)
+
+
+def write_feed_all(gen, writer):
+    if gen.settings['PELICAN_COMMENT_SYSTEM'] is not True:
+        return
+    if gen.settings['PELICAN_COMMENT_SYSTEM_FEED_ALL'] is None:
+        return
+
+    context = copy.copy(gen.context)
+    context['SITENAME'] += " - All Comments"
+    context['SITESUBTITLE'] = ""
+    path = gen.settings['PELICAN_COMMENT_SYSTEM_FEED_ALL']
+
+    global _all_comments
+    _all_comments = sorted(_all_comments)
+    _all_comments.reverse()
+
+    for com in _all_comments:
+        com.title = com.article.title + " - " + com.title
+        com.override_url = com.article.url + com.url
+
+    writer.write_feed(_all_comments, context, path)
+
+
+def write_feed(gen, items, context, slug):
+    if gen.settings['PELICAN_COMMENT_SYSTEM_FEED'] is None:
+        return
+
+    path = gen.settings['PELICAN_COMMENT_SYSTEM_FEED'] % slug
+    _pelican_writer.write_feed(items, context, path)
+
+
+def process_comments(article_generator):
+    for article in article_generator.articles:
+        add_static_comments(article_generator, article)
+
+def mirror_to_translations(article):
+    for translation in article.translations:
+        translation.comments_count = article.comments_count
+        translation.comments = article.comments
+
+def add_static_comments(gen, content):
+    if gen.settings['PELICAN_COMMENT_SYSTEM'] is not True:
+        return
+
+    global _all_comments
+
+    content.comments_count = 0
+    content.comments = []
+    mirror_to_translations(content)
+
+    # Modify the local context, so we get proper values for the feed
+    context = copy.copy(gen.context)
+    context['SITEURL'] += "/" + content.url
+    context['SITENAME'] += " - Comments: " + content.title
+    context['SITESUBTITLE'] = ""
+
+    folder = os.path.join(
+        gen.settings['PATH'],
+        gen.settings['PELICAN_COMMENT_SYSTEM_DIR'],
+        content.slug
+    )
+
+    if not os.path.isdir(folder):
+        logger.debug("No comments found for: %s", content.slug)
+        write_feed(gen, [], context, content.slug)
+        return
+
+    reader = Readers(gen.settings)
+    comments = []
+    replies = []
+
+    for file in os.listdir(folder):
+        name, extension = os.path.splitext(file)
+        if extension[1:].lower() in reader.extensions:
+            com = reader.read_file(
+                base_path=folder, path=file,
+                content_class=Comment, context=context)
+
+            com.article = content
+            _all_comments.append(com)
+
+            if hasattr(com, 'replyto'):
+                replies.append(com)
+            else:
+                comments.append(com)
+
+    feed_items = sorted(comments + replies)
+    feed_items.reverse()
+    warn_on_slug_collision(feed_items)
+
+    write_feed(gen, feed_items, context, content.slug)
+
+    # TODO: Fix this O(n²) loop
+    for reply in replies:
+        found_parent = False
+        for comment in chain(comments, replies):
+            if comment.slug == reply.replyto:
+                comment.addReply(reply)
+                found_parent = True
+                break
+        if not found_parent:
+            logger.warning('Comment "%s/%s" is a reply to non-existent comment "%s". '
+                'Make sure the replyto attribute is set correctly.',
+                content.slug, reply.slug, reply.replyto)
+
+    count = 0
+    for comment in comments:
+        comment.sortReplies()
+        count += comment.countReplies()
+
+    comments = sorted(comments)
+
+    content.comments_count = len(comments) + count
+    content.comments = comments
+    mirror_to_translations(content)
+
+
+def writeIdenticonsToDisk(gen, writer):
+    avatars.generateAndSaveMissingAvatars()
+
+
+def pelican_finalized(pelican):
+    if pelican.settings['PELICAN_COMMENT_SYSTEM'] is not True:
+        return
+    global _all_comments
+    print('Processed %s comment(s)' % len(_all_comments))
+
+
+def register():
+    signals.initialized.connect(pelican_initialized)
+    signals.article_generator_init.connect(initialize)
+    signals.article_generator_finalized.connect(process_comments)
+    signals.article_writer_finalized.connect(writeIdenticonsToDisk)
+    signals.article_writer_finalized.connect(write_feed_all)
+    signals.finalized.connect(pelican_finalized)
diff --git a/pelican-plugins/pelican_comment_system/theme/static/js/comments.js b/pelican-plugins/pelican_comment_system/theme/static/js/comments.js
new file mode 100644
index 0000000..2625428
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/theme/static/js/comments.js
@@ -0,0 +1,76 @@
+//requires jquery
+var CommentSystem = {
+	email_user:   "not set",
+	email_domain: "not set",
+	display_replyto_html: function(comment_content, article_slug, author) {return ''},
+
+	cancelReply: function() {
+		$('#pcs-comment-form-input-replyto').val("");
+		$('#pcs-comment-form-display-replyto').hide();
+	},
+
+	setReply: function(slug, author) {
+		slug   = decodeURIComponent(slug);
+		author = decodeURIComponent(author);
+
+		$('html, body').animate({ scrollTop: $("#pcs-comment-form").offset().top }, 1000);
+
+		$('#pcs-comment-form-input-replyto').val(slug);
+
+		var jquery_escaped_id = slug.replace('.', '\\.')
+		var commentContent = $('#comment-' + jquery_escaped_id + ' .pcs-comment-content:first').text().trim()
+
+		$('#pcs-comment-form-display-replyto').html(this.display_replyto_html(commentContent, slug, author));
+		$('#pcs-comment-form-display-replyto').show();
+	},
+
+	getMailtoLink: function(slug) {
+		var subject = 'Comment for \'' + slug + '\'' ;
+
+		var now = new Date();
+		tzo = -now.getTimezoneOffset(),
+		dif = tzo >= 0 ? '+' : '-',
+		pad = function(num) {
+			norm = Math.abs(Math.floor(num));
+			return (norm < 10 ? '0' : '') + norm;
+		};
+		var body = ''
+			+ 'Hey,\nI posted a new comment on ' + document.URL + '\n\nGreetings ' + $("#pcs-comment-form-input-name").val() + '\n\n\n'
+			+ 'Raw comment data:\n'
+			+ '----------------------------------------\n'
+			+ 'email: \n' // just that I don't forget to write it down
+			+ 'date: ' + now.getFullYear()
+					+ '-' + pad(now.getMonth()+1)
+					+ '-' + pad(now.getDate())
+					+ 'T' + pad(now.getHours())
+					+ ':' + pad(now.getMinutes())
+					+ dif + pad(tzo / 60)
+					+ ':' + pad(tzo % 60) +'\n'
+			+ 'author: ' + $("#pcs-comment-form-input-name").val() + '\n';
+
+		var replyto = $('#pcs-comment-form-input-replyto').val();
+		if (replyto.length != 0)
+		{
+			body += 'replyto: ' + replyto + '\n'
+		}
+
+		var url = $("#pcs-comment-form-input-website").val();
+		if (url.length != 0)
+		{
+			if(url.substr(0,7) != 'http://' && url.substr(0,8) != 'https://'){
+				url = 'http://' + url;
+			}
+			body += 'website: ' + url + '\n';
+		}
+		body += '\n'
+			+ $("#pcs-comment-form-input-textarea").val() + '\n'
+			+ '----------------------------------------\n';
+
+		var link = 'mailto:' + this.email_user + '@' + this.email_domain + '?subject='
+			+ encodeURIComponent(subject)
+			+ "&body="
+			+ encodeURIComponent(body.replace(/\r?\n/g, "\r\n"));
+		console.log(link)
+		return link;
+	}
+}
diff --git a/pelican-plugins/pelican_comment_system/theme/templates/pcs/comments.html b/pelican-plugins/pelican_comment_system/theme/templates/pcs/comments.html
new file mode 100644
index 0000000..7dcb2b0
--- /dev/null
+++ b/pelican-plugins/pelican_comment_system/theme/templates/pcs/comments.html
@@ -0,0 +1,162 @@
+{% macro comments_styles() %}
+{% if PELICAN_COMMENT_SYSTEM %}
+{# NOTE:
+ # Instead of using this macro copy these styles in your main css file
+ # This marco is only here to allow a quickstart with nice styles
+ #}
+<style>
+#pcs-comment-form input,
+#pcs-comment-form textarea {
+	width: 100%;
+}
+#pcs-comment-form-display-replyto {
+	border: solid 1px black;
+	padding: 2px;
+}
+#pcs-comment-form-display-replyto p {
+	margin-top: 0.5em;
+	margin-bottom: 0.5em;
+}
+#pcs-comments ul {
+	list-style: none;
+}
+#pcs-comments .comment-left {
+	display: table-cell;
+	padding-right: 10px;
+}
+#pcs-comments .comment-body {
+	display: table-cell;
+	vertical-align: top;
+	width: 100%;
+}
+</style>
+{% endif %}
+{% endmacro %}
+
+{% macro comments_form() %}
+{% if PELICAN_COMMENT_SYSTEM %}
+<section>
+	<form id="pcs-comment-form" action="#">
+		<legend>Add a Comment</legend>
+		<input type="hidden" id="pcs-comment-form-input-replyto">
+		<fieldset>
+			<label for="pcs-comment-form-input-name">Name</label>
+			<input  id="pcs-comment-form-input-name" type="text" placeholder="Enter your name or nickname" />
+		</fieldset>
+		<fieldset>
+			<label for="pcs-comment-form-input-website">Website</label>
+			<input  id="pcs-comment-form-input-website" type="text" placeholder="Enter your website (optional)" />
+		</fieldset>
+		<fieldset>
+			<label   for="pcs-comment-form-input-textarea">Your Comment</label>
+			<textarea id="pcs-comment-form-input-textarea" rows="5" style="resize:vertical;" placeholder="Your comment"></textarea>
+			<p>You can use the <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> syntax to format your comment.</p>
+			<div style="display: none; " id="pcs-comment-form-display-replyto"></div>
+		</fieldset>
+
+		<button type="submit"
+				id="pcs-comment-form-button-submit"
+				{# Piwik Track click on comment button
+				onclick="javascript:_paq.push(['trackEvent', 'comment', '{{ article.title }}', document.getElementById('pcs-comment-form-input-textarea').value]);" #}
+				>Post via email</button>
+
+		{% if PELICAN_COMMENT_SYSTEM_FEED and article %}
+			<a href="{{ SITEURL }}/{{ PELICAN_COMMENT_SYSTEM_FEED|format(article.slug) }}">
+				Comment Atom Feed
+			</a>
+		{% endif %}
+	</form>
+</section>
+{% endif %}
+{% endmacro %}
+
+{% macro comments_with_form() %}
+{% if PELICAN_COMMENT_SYSTEM %}
+<section id="pcs-comments">
+	<header>
+		<h2>Comments</h2>
+		<hr/>
+	</header>
+	{% if article.comments %}
+		<ul>
+		{% for comment in article.comments recursive %}
+			<li id="comment-{{comment.slug}}">
+				<div class="comment-left">
+					<img    src="{{ SITEURL }}/{{ comment.avatar }}"
+							alt="Avatar"
+							height="{{ PELICAN_COMMENT_SYSTEM_IDENTICON_SIZE }}"
+							width="{{ PELICAN_COMMENT_SYSTEM_IDENTICON_SIZE }}">
+				</div>
+				<div class="comment-body">
+					<div style="float:right;">
+						<a role="button" href="{{ SITEURL }}/{{ article.url }}#comment-{{comment.slug}}" rel="bookmark" title="Permalink to this comment">Permalink</a>
+						<button onclick="CommentSystem.setReply('{{comment.slug | urlencode}}', '{{comment.author | urlencode}}');">Reply</button>
+					</div>
+					<h4>
+						{% if comment.metadata['website'] %}
+							<a href="{{comment.metadata['website']}}">{{ comment.author }}</a>
+						{% else %}
+							{{ comment.author }}
+						{% endif %}
+					</h4>
+					<p>
+						Posted on
+						<time datetime="{{ comment.date.isoformat() }}" title="{{ comment.date.isoformat() }}">{{ comment.locale_date }}</time>
+					</p>
+					<div class="pcs-comment-content" {# class used as id in comments.js#}>
+						{{ comment.content }}
+					</div>
+					{% if comment.replies %}
+						<hr>
+						<ul>
+							{{ loop(comment.replies) }}
+						</ul>
+					{% endif %}
+				</div>
+			</li>
+		{% endfor %}
+		</ul>
+	{% else %}
+		<p>There are no comments yet.</p>
+	{% endif %}
+	{{ comments_form() }}
+</section>
+{% endif %}
+{% endmacro %}
+
+
+{% macro comments_js(user, domain, includeJquery=True) %}
+{% if PELICAN_COMMENT_SYSTEM %}
+	{% if includeJquery %}
+		<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
+	{% endif %}
+	<script type="text/javascript" src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/js/comments.js"></script>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			CommentSystem.email_user   = "{{ user }}";
+			CommentSystem.email_domain = "{{ domain }}";
+			CommentSystem.display_replyto_html = function(comment_content, article_slug, author) { 
+				return ''
+					+ '<button style="float:right;" onclick="CommentSystem.cancelReply(); return false;" title="Cancel the reply">'
+					+ 	'×'
+					+ '</button>'
+					+ '<p>This comment will be posted as a reply to \'<a title="'+comment_content+'" href="#comment-'+article_slug+'">'+author+'</a>\'</p>';
+			};
+
+			$('#pcs-comment-form').on("submit",
+				function( event )
+				{
+					event.preventDefault();
+					$(location).attr('href', CommentSystem.getMailtoLink("{{ article.slug }}"));
+				}
+			);
+		});
+	</script>
+{% endif %}
+{% endmacro %}
+
+{% macro comments_quickstart(user, domain) %}
+	{{ comments_styles() }}
+	{{ comments_with_form() }}
+	{{ comments_js(user, domain) }}
+{% endmacro %}
diff --git a/pelican-plugins/pelican_unity_webgl/LICENSE.txt b/pelican-plugins/pelican_unity_webgl/LICENSE.txt
new file mode 100644
index 0000000..63a216a
--- /dev/null
+++ b/pelican-plugins/pelican_unity_webgl/LICENSE.txt
@@ -0,0 +1,18 @@
+Copyright (c) 2017 Mr.Page
+Permission is hereby granted, free of charge, to any person obtaininga 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.
\ No newline at end of file
diff --git a/pelican-plugins/pelican_unity_webgl/README.rst b/pelican-plugins/pelican_unity_webgl/README.rst
new file mode 100644
index 0000000..2d7e1dc
--- /dev/null
+++ b/pelican-plugins/pelican_unity_webgl/README.rst
@@ -0,0 +1,81 @@
+===================
+Pelican Unity WebGL
+===================
+
+Compatibility
+=============
+
+Unity >= 5.6 (Tested on 5.6)
+
+Usage
+=====
+
+Basic directive
+---------------
+
+.. code-block:: rst
+
+	.. unitywebgl GAME_ID
+
+**GAME_ID** is the required parameter. This is name of the directory, that contains your webgl build. This directory should be place in path, specified in config.py file, or with :gameroot: parameter.
+
+Optional parameters
+-------------------
+
+.. code-block:: rst
+
+	.. unitywebgl GAME_ID
+		:gameroot: /games/new/
+		:template: /games/templates/newtemplate
+		:width: 640
+		:height: 480
+
++-------------------+------------------+---------------------------------------------------------+
+| Parameter         | default value    |                                                         |
++===================+==================+=========================================================+
+| gameroot          | /games           | path to directory with games                            |
++-------------------+------------------+---------------------------------------------------------+
+| templatepath      | /games/utemplate | path to template                                        |
++-------------------+------------------+---------------------------------------------------------+
+| width             |                                                                            |
++-------------------+ Player resolution                                                          |
+| height            |                                                                            |
++-------------------+------------------+---------------------------------------------------------+
+
+.. note::
+	Test pelican project can be found in *pelican_demo.zip* archive `here <https://github.com/mrpeidz/Unity-WebGL-RST-directive>`_
+
+Configuration
+=============
+
+You can change default root directory, template path and player resolution in the *config.py* file.
+
+Modifying html output template
+------------------------------
+
+You can modify the *template.txt* file to change html output.
+
+Template parameters explanation:
+
++-------------------+-------------------------------+
+| Parameter         | default value                 |
++===================+===============================+
+| 0                 | game directory name           |
++-------------------+-------------------------------+
+| 1                 | directory, where games placed |
++-------------------+-------------------------------+
+| 2                 | template directory            |
++-------------------+-------------------------------+
+| 3                 | width                         |
++-------------------+-------------------------------+
+| 4                 | height                        |
++-------------------+-------------------------------+
+
+About
+=======
+
+License: `MIT <https://opensource.org/licenses/MIT>`_
+
+`Unity WebGL RST Directive github page <https://github.com/mrpeidz/Unity-WebGL-RST-directive>`_
+
+**Mr.Page (c) 2017**
\ No newline at end of file
diff --git a/pelican-plugins/pelican_unity_webgl/UnityGameDirective.py b/pelican-plugins/pelican_unity_webgl/UnityGameDirective.py
new file mode 100644
index 0000000..dac0c94
--- /dev/null
+++ b/pelican-plugins/pelican_unity_webgl/UnityGameDirective.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 Mr.Page
+# Permission is hereby granted, free of charge, to any person obtaininga 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.
+
+from __future__ import unicode_literals
+
+from docutils import nodes
+from docutils.parsers.rst import directives, Directive
+
+from . import config
+
+import os
+
+
+class UnityWebgl(Directive):
+    required_arguments = 1
+    optional_arguments = 4
+
+    option_spec = {
+        'width': directives.positive_int,
+        'height': directives.positive_int,
+        'gameroot': directives.unchanged_required,
+        'template': directives.unchanged_required,
+    }
+
+    final_argument_whitespace = False
+    has_content = False
+
+    def load_template(self, game, gamesroot, templatepath, width, height):
+        basepath = os.path.dirname(__file__)
+        filepath = os.path.abspath(os.path.join(basepath, 'template.txt'))
+        with open(filepath, 'r') as template:
+            data = template.read()
+            return data.format(game, gamesroot, templatepath, width, height)
+
+    def run(self):
+
+        # load config
+
+        game = self.arguments[0].strip()
+        games_path = config.GAMES_ROOT_DIR
+        template_path = config.TEMPLATE_PATH
+        width = config.DEFAULT_WIDTH
+        height = config.DEFAULT_HEIGHT
+
+        # get params
+
+        if 'width' in self.options:
+            width = self.options['width']
+        if 'height' in self.options:
+            height = self.options['height']
+        if 'gameroot' in self.options:
+            games_path = self.options['gameroot']
+        if 'template' in self.options:
+            template_path = self.options['template']
+
+        # remove slashes
+
+        games_path = games_path.rstrip('/')
+        template_path = template_path.rstrip('/')
+
+        html = self.load_template(game, games_path, template_path, width, height)
+
+        return [
+            nodes.raw('', html, format='html')]
+
+
+def register():
+    directives.register_directive('unitywebgl', UnityWebgl)
diff --git a/pelican-plugins/pelican_unity_webgl/__init__.py b/pelican-plugins/pelican_unity_webgl/__init__.py
new file mode 100644
index 0000000..716856d
--- /dev/null
+++ b/pelican-plugins/pelican_unity_webgl/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from .UnityGameDirective import register
diff --git a/pelican-plugins/pelican_unity_webgl/config.py b/pelican-plugins/pelican_unity_webgl/config.py
new file mode 100644
index 0000000..d593bd4
--- /dev/null
+++ b/pelican-plugins/pelican_unity_webgl/config.py
@@ -0,0 +1,10 @@
+# unity webgl options
+
+DEFAULT_WIDTH = 960
+DEFAULT_HEIGHT = 600
+DEFAULT_ALIGN = 'center'
+
+# paths
+
+GAMES_ROOT_DIR = '/games'  # directory with games
+TEMPLATE_PATH = '/games/utemplate'  # template path
diff --git a/pelican-plugins/pelican_unity_webgl/template.txt b/pelican-plugins/pelican_unity_webgl/template.txt
new file mode 100644
index 0000000..de31d77
--- /dev/null
+++ b/pelican-plugins/pelican_unity_webgl/template.txt
@@ -0,0 +1,9 @@
+<!-- Begin Unity webgl app -->
+    <link rel="stylesheet" href="{2}/style.css">
+    <script src="{2}/UnityProgress.js"></script>
+    <script src="{1}/{0}/Build/UnityLoader.js"></script>
+    <script>
+        var gameInstance = UnityLoader.instantiate("gameContainer", "{1}/{0}/Build/{0}.json", {{onProgress: UnityProgress}});
+    </script>
+    <div id="gameContainer" style="width: {3}px; height: {4}px; left: 50%; transform: translateX(-50%);"></div>
+<!-- End Unity webgl app -->
\ No newline at end of file
diff --git a/pelican-plugins/pelican_unity_webgl/test_unitywebgl.py b/pelican-plugins/pelican_unity_webgl/test_unitywebgl.py
new file mode 100644
index 0000000..739fd75
--- /dev/null
+++ b/pelican-plugins/pelican_unity_webgl/test_unitywebgl.py
@@ -0,0 +1,70 @@
+from unittest import TestCase
+from docutils.core import publish_string
+from docutils.parsers.rst import directives
+
+from pelican_unity_webgl import config
+from pelican_unity_webgl.UnityGameDirective import UnityWebgl
+
+
+class TestUnityWebgl(TestCase):
+
+    def test_directive_basic(self):
+
+        # test directive html output with default template
+        # and settings
+
+        directives.register_directive('unitywebgl', UnityWebgl)
+
+        config.GAMES_ROOT_DIR = '/test_games_root'
+        config.TEMPLATE_PATH = '/test_template_path/template'
+        config.DEFAULT_WIDTH = 960
+        config.DEFAULT_HEIGHT = 600
+
+        html =['<link rel="stylesheet" href="/test_template_path/template/style.css">',
+        '<script src="/test_template_path/template/UnityProgress.js">',
+        '<script src="/test_games_root/testgame/Build/UnityLoader.js">',
+        '<script>\n        var gameInstance = UnityLoader.instantiate("gameContainer", "/test_games_root/testgame/Build/testgame.json", {onProgress: UnityProgress});\n    </script>',
+        '<div id="gameContainer" style="width: 960px; height: 600px; left: 50%; transform: translateX(-50%);"></div>']
+
+        res = publish_string('.. unitywebgl:: testgame', writer_name='html', settings_overrides={'output_encoding': 'unicode'})
+
+        passed = True
+
+        for line in html:
+            if line not in res:
+                passed = False
+                break
+
+        assert passed
+
+
+    def test_directive_with_params(self):
+
+        # test directive html output with all optional parameters,
+        # default template and settings
+
+        directives.register_directive('unitywebgl', UnityWebgl)
+
+        config.GAMES_ROOT_DIR = 'test_games_root'
+        config.TEMPLATE_PATH = 'test_template_path'
+        config.DEFAULT_WIDTH = 960
+        config.DEFAULT_HEIGHT = 600
+
+        html =['<link rel="stylesheet" href="/games2/template2/style.css">',
+        '<script src="/games2/template2/UnityProgress.js">',
+        '<script src="/games2/testgame/Build/UnityLoader.js">',
+        '<script>\n        var gameInstance = UnityLoader.instantiate("gameContainer", "/games2/testgame/Build/testgame.json", {onProgress: UnityProgress});\n    </script>',
+        '<div id="gameContainer" style="width: 640px; height: 480px; left: 50%; transform: translateX(-50%);"></div>']
+
+        d = '.. unitywebgl:: testgame\n\t:gameroot: /games2\n\t:template: /games2/template2\n\t:width: 640\n\t:height: 480'
+
+        res = publish_string(d, writer_name='html', settings_overrides={'output_encoding': 'unicode'})
+
+        passed = True
+
+        for line in html:
+            if line not in res:
+                passed = False
+                break
+
+        assert passed
\ No newline at end of file
diff --git a/pelican-plugins/permalinks/README.md b/pelican-plugins/permalinks/README.md
new file mode 100644
index 0000000..ae00154
--- /dev/null
+++ b/pelican-plugins/permalinks/README.md
@@ -0,0 +1,25 @@
+permalink
+=========
+
+This plugin enables a kind of permalink which can be used to refer to a piece
+of content which is resistant to the file being moved or renamed.
+
+It does this by creating additional output html in `PERMALINK_PATH`
+(default permalinks/) which include redirect code to point user at original
+page.
+
+To work each page has to have an additional piece of metadata with the key
+`permalink_id` (configurable with `PERMALINK_ID_METADATA_KEY`
+which should remain static even through renames and should also
+be unique on the site.
+
+This can be generated automatically with the filetime_from_git module and
+the `GIT_FILETIME_GENERATE_PERMALINK` option. 
+This should always be used with `GIT_FILETIME_FOLLOW` to ensure this
+persists across renames.
+
+
+Hacky redirects
+---------------
+To make this work with things like github.io I'm forced to use HTML and
+Javascript redirects rather than HTTP redirects which is obviously suboptimal.
diff --git a/pelican-plugins/permalinks/__init__.py b/pelican-plugins/permalinks/__init__.py
new file mode 100644
index 0000000..f4ede4e
--- /dev/null
+++ b/pelican-plugins/permalinks/__init__.py
@@ -0,0 +1 @@
+from .permalinks import register
diff --git a/pelican-plugins/permalinks/permalinks.py b/pelican-plugins/permalinks/permalinks.py
new file mode 100644
index 0000000..fec838d
--- /dev/null
+++ b/pelican-plugins/permalinks/permalinks.py
@@ -0,0 +1,156 @@
+# -*- coding: utf-8 -*-
+"""
+This plugin enables a kind of permalink which can be used to refer to a piece
+of content which is resistant to the file being moved or renamed.
+"""
+import itertools
+import logging
+import os
+import os.path
+
+from pelican import signals
+from pelican.generators import Generator
+from pelican.utils import clean_output_dir
+from pelican.utils import mkdir_p
+
+logger = logging.getLogger(__name__)
+
+
+def article_url(content):
+    '''
+    Get the URL for an item of content
+    '''
+    return '{content.settings[SITEURL]}/{content.url}'.format(
+        content=content)
+
+
+REDIRECT_STRING = '''
+<!DOCTYPE HTML>
+<html lang="en-US">
+    <head>
+        <meta charset="UTF-8">
+        <meta http-equiv="refresh" content="0;url={url}">
+        <script type="text/javascript">
+            window.location.href = "{url}"
+        </script>
+        <title>Page Redirection to {title}</title>
+    </head>
+    <body>
+        If you are not redirected automatically, follow the
+        <a href='{url}'>link to {title}</a>
+    </body>
+</html>
+'''
+
+
+class PermalinkGenerator(Generator):
+    '''
+    Generate a redirect page for every item of content with a
+    permalink_id metadata
+    '''
+    def generate_context(self):
+        '''
+        Setup context
+        '''
+        self.permalink_output_path = os.path.join(
+            self.output_path, self.settings['PERMALINK_PATH'])
+        self.permalink_id_metadata_key = (
+            self.settings['PERMALINK_ID_METADATA_KEY'])
+
+    def generate_output(self, writer=None):
+        '''
+        Generate redirect files
+        '''
+        logger.info(
+            'Generating permalink files in %r', self.permalink_output_path)
+
+        clean_output_dir(self.permalink_output_path, [])
+        mkdir_p(self.permalink_output_path)
+        for content in itertools.chain(
+                self.context['articles'], self.context['pages']):
+
+            for permalink_id in content.get_permalink_ids_iter():
+                permalink_path = os.path.join(
+                    self.permalink_output_path, permalink_id) + '.html'
+
+                redirect_string = REDIRECT_STRING.format(
+                    url=article_url(content),
+                    title=content.title)
+                open(permalink_path, 'w').write(redirect_string)
+
+
+def get_permalink_ids_iter(self):
+    '''
+    Method to get permalink ids from content. To be bound to the class last
+    thing.
+    '''
+    permalink_id_key = self.settings['PERMALINK_ID_METADATA_KEY']
+    permalink_ids = self.metadata.get(permalink_id_key, '')
+
+    for permalink_id in permalink_ids.split(','):
+        if permalink_id:
+            yield permalink_id.strip()
+
+
+def get_permalink_ids(self):
+    '''
+    Method to get permalink ids from content. To be bound to the class last
+    thing.
+    '''
+    return list(self.get_permalink_ids_iter())
+
+
+def get_permalink_path(self):
+    """Get just path component of permalink."""
+    try:
+        first_permalink_id = next(self.get_permalink_ids_iter())
+    except StopIteration:
+        return None
+
+    return '/{settings[PERMALINK_PATH]}/{first_permalink}.html'.format(
+        settings=self.settings, first_permalink=first_permalink_id)
+
+
+def get_permalink_url(self):
+    '''
+    Get a permalink URL
+    '''
+    return "/".join((self.settings['SITEURL'], self.get_permalink_path()))
+
+
+PERMALINK_METHODS = (
+    get_permalink_ids_iter,
+    get_permalink_ids,
+    get_permalink_url,
+    get_permalink_path,
+)
+
+
+def add_permalink_methods(content_inst):
+    '''
+    Add permalink methods to object
+    '''
+    for permalink_method in PERMALINK_METHODS:
+        setattr(
+            content_inst,
+            permalink_method.__name__,
+            permalink_method.__get__(content_inst, content_inst.__class__))
+
+
+def add_permalink_option_defaults(pelicon_inst):
+    '''
+    Add perlican defaults
+    '''
+    pelicon_inst.settings.setdefault('PERMALINK_PATH', 'permalinks')
+    pelicon_inst.settings.setdefault(
+        'PERMALINK_ID_METADATA_KEY', 'permalink_id')
+
+
+def get_generators(_pelican_object):
+    return PermalinkGenerator
+
+
+def register():
+    signals.get_generators.connect(get_generators)
+    signals.content_object_init.connect(add_permalink_methods)
+    signals.initialized.connect(add_permalink_option_defaults)
diff --git a/pelican-plugins/photos/README.md b/pelican-plugins/photos/README.md
new file mode 100644
index 0000000..323dd6c
--- /dev/null
+++ b/pelican-plugins/photos/README.md
@@ -0,0 +1,296 @@
+# Photos
+
+**NOTE:** [This plugin has been moved to its own repository](https://github.com/pelican-plugins/photos).
+Please file any issues/PRs there. Once all plugins have been migrated to the
+[new Pelican Plugins organization](https://github.com/pelican-plugins>),
+this monolithic repository will be archived.
+
+Use Photos to add a photo or a gallery of photos to an article, or to include photos in the body text. Photos are kept separately, as an organized library of high resolution photos, and resized as needed.
+
+## How to install and configure
+
+The plug-in requires `Pillow`: the Python Imaging Library and optionally `Piexif`, whose installation are outside the scope of this document.
+
+The plug-in resizes the referred photos, and generates thumbnails for galleries and associated photos, based on the following configuration and default values:
+
+`PHOTO_LIBRARY = "~/Pictures"`
+:	Absolute path to the folder where the original photos are kept, organized in sub-folders.
+
+`PHOTO_GALLERY = (1024, 768, 80)`
+:	For photos in galleries, maximum width and height, plus JPEG quality as a percentage. This would typically be the size of the photo displayed when the reader clicks a thumbnail.
+
+`PHOTO_ARTICLE = (760, 506, 80)`
+:	For photos associated with articles, maximum width, height, and quality. The maximum size would typically depend on the needs of the theme. 760px is suitable for the theme `notmyidea`.
+
+`PHOTO_THUMB = (192, 144, 60)`
+:	For thumbnails, maximum width, height, and quality.
+
+`PHOTO_SQUARE_THUMB = False`
+:	Crops thumbnails to make them square.
+
+`PHOTO_RESIZE_JOBS = 5`
+: Number of parallel resize jobs to be run. Defaults to 1.
+
+`PHOTO_WATERMARK = True`
+: Adds a watermark to all photos in articles and pages. Defaults to using your site name.
+
+`PHOTO_WATERMARK_TEXT' = SITENAME`
+: Allow the user to change the watermark text or remove it completely. By default it uses [SourceCodePro-Bold](http://www.adobe.com/products/type/font-information/source-code-pro-readme.html) as the font.
+
+`PHOTO_WATERMARK_IMG = ''`
+: Allows the user to add an image in addition to or as the only watermark. Set the variable to the location.
+
+**The following features require the piexif library**
+`PHOTO_EXIF_KEEP = True`
+: Keeps the exif of the input photo.
+
+`PHOTO_EXIF_REMOVE_GPS = True`
+: Removes any GPS information from the files exif data.
+
+`PHOTO_EXIF_COPYRIGHT = 'COPYRIGHT'`
+: Attaches an author and a license to the file. Choices include:
+	- `COPYRIGHT`: Copyright
+	- `CC0`: Public Domain
+	- `CC-BY-NC-ND`: Creative Commons Attribution-NonCommercial-NoDerivatives
+	- `CC-BY-NC-SA`: Creative Commons Attribution-NonCommercial-ShareAlike
+	- `CC-BY`: Creative Commons Attribution
+	- `CC-BY-SA`: Creative Commons Attribution-ShareAlike
+	- `CC-BY-NC`: Creative Commons Attribution-NonCommercial
+	- `CC-BY-ND`: Creative Commons Attribution-NoDerivatives
+
+`PHOTO_EXIF_COPYRIGHT_AUTHOR = 'Your Name Here'`
+: Adds an author name to the photo's exif and copyright statement. Defaults to `AUTHOR` value from the `pelicanconf.py`
+
+The plug-in automatically resizes the photos and publishes them to the following output folder:
+
+    ./output/photos
+
+**WARNING:** The plug-in can take hours to resize 40,000 photos, therefore, photos and thumbnails are only generated once. Clean the output folders to regenerate the resized photos again.
+
+## How to use
+
+Maintain an organized library of high resolution photos somewhere on disk, using folders to group related images. The default path `~/Pictures` is convenient for Mac OS X users.
+
+* To create a gallery of photos, add the metadata field `gallery: {photo}folder` to an article. To simplify the transition from the plug-in Gallery, the syntax `gallery: {filename}folder` is also accepted.
+* You can now have multiple galleries. The galleries need to be seperated by a comma in the metadata field. The syntax is gallery: `{photo}folder, {photo}folder2`. You can also add titles to your galleries. The syntax is: `{photo}folder, {photo}folder2{This is a title}`. Using the following example the first gallery would have the title of the folder location and the second would have the title `This is a tile.`
+* To use an image in the body of the text, just use the syntax `{photo}folder/image.jpg` instead of the usual `{filename}/images/image.jpg`.
+* To use an image in the body of the text, which can be used with [Lightbox](http://lokeshdhakar.com/projects/lightbox2/) just use the syntax `{lightbox}folder/image.jpg`. For use with other implementations, the gallery and caption attribute names can be set with `PHOTO_LIGHTBOX_GALLERY_ATTR` and `PHOTO_LIGHTBOX_CAPTION_ATTR`.
+* To associate an image with an article, add the metadata field `image: {photo}folder/image.jpg` to an article. Use associated images to improve navigation. For compatibility, the syntax `image: {filename}/images/image.jpg` is also accepted.
+
+### Exif, Captions, and Blacklists
+Folders of photos may optionally have three text files, where each line describes one photo. You can use the `#` to comment out a line. Generating these optional files is left as an exercise for the reader (but consider using Phil Harvey's [exiftool](http://www.sno.phy.queensu.ca/~phil/exiftool/)). See below for one method of extracting exif data.
+
+`exif.txt`
+:	Associates compact technical information with photos, typically the camera settings. For example:
+
+	best.jpg: Canon EOS 5D Mark II - 20mm f/8 1/250s ISO 100
+	night.jpg: Canon EOS 5D Mark II - 47mm f/8 5s ISO 100
+	# new.jpg: Canon EOS 5D Mark II - 47mm f/8 5s ISO 100
+
+`captions.txt`
+:	Associates comments with photos. For example:
+
+	best.jpg: My best photo ever! How lucky of me!
+	night.jpg: Twilight over the dam.
+	# new.jpg: My new photo blog entry is not quite ready.
+
+`blacklist.txt`
+: Skips photos the user does not want to include. For example:
+
+	this-file-will-be-skipped.jpg
+	this-one-will-be-skipped-too.jpg
+	# but-this-file-will-NOT-be-skipped.jpg
+	this-one-will-be-also-skipped.jpg
+
+
+Here is an example Markdown article that shows the four use cases:
+
+	title: My Article
+	gallery: {photo}favorite
+	image: {photo}favorite/best.jpg
+
+	Here are my best photos, taken with my favorite camera:
+	![]({photo}mybag/camera.jpg).
+	![]({lightbox}mybag/flash.jpg).
+
+The default behavior of the Photos plugin removes the exif information from the file. If you would like to keep the exif information, you can install the `piexif` library for python and add the following settings to keep some or all of the exif information. This feature is not a replacement for the `exif.txt` feature but in addition to that feature. This feature currently only works with jpeg input files.
+
+## How to change the Jinja templates
+
+The plugin provides the following variables to your templates:
+
+`article.photo_image`
+:	For articles with an associated photo, a tuple with the following information:
+
+* The filename of the original photo.
+* The output path to the generated photo.
+* The output path to the generated thumbnail.
+
+For example, modify the template `article.html` as shown below to display the associated image before the article content:
+
+```html
+<div class="entry-content">
+	{% if article.photo_image %}<img src="{{ SITEURL }}/{{ article.photo_image[1] }}" />{% endif %}
+	{% include 'article_infos.html' %}
+	{{ article.content }}
+</div><!-- /.entry-content -->
+```
+
+`article.photo_gallery`
+:	For articles with a gallery, a list of the photos in the gallery. Each item in the list is a tuple with five elements:
+
+* The title of the gallery
+* The filename of the original photo.
+* The output path to the generated photo.
+* The output path to the generated thumbnail.
+* The EXIF information of the photo, as read from the file `exif.txt`.
+* The caption of the photo, as read from `captions.txt`.
+
+For example, add the following to the template `article.html` to add the gallery as the end of the article:
+
+```html
+{% if article.photo_gallery %}
+<div class="gallery">
+		{% for title, gallery in article.photo_gallery %}
+			<h1>{{ title }}</h1>
+				{% for name, photo, thumb, exif, caption in gallery %}
+						<a href="{{ SITEURL }}/{{ photo }}" title="{{ name }}" exif="{{ exif }}" caption="{{ caption }}"><img src="{{ SITEURL }}/{{ thumb }}"></a>
+				{% endfor %}
+		{% endfor %}
+</div>
+{% endif %}
+```
+
+For example, add the following to the template `index.html`, inside the `entry-content`, to display the thumbnail with a link to the article:
+
+```html
+{% if article.photo_image %}<a href="{{ SITEURL }}/{{ article.url }}"><img src="{{ SITEURL }}/{{ article.photo_image[2] }}"
+	style="display: inline; float: right; margin: 2px 0 2ex 4ex;" /></a>
+{% endif %}
+```
+
+## How to make the gallery lightbox
+
+There are several JavaScript libraries that display a list of images as a lightbox. The example below uses [Magnific Popup](http://dimsemenov.com/plugins/magnific-popup/), which allows the more complex initialization needed to display both the filename, the compact technical information, and the caption. The solution would be simpler if photos did not show any extra information.
+
+Copy the files `magnific-popup.css` and `magnific-popup.js` to the root of your Pelican template.
+
+Add the following to the template `base.html`, inside the HTML `head` tags:
+
+```html
+{% if (article and article.photo_gallery) or (articles_page and articles_page.object_list[0].photo_gallery) %}
+	<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/magnific-popup.css">
+{% endif %}
+```
+
+Add the following to the template `base.html`, before the closing HTML `</body>` tag:
+
+```JavaScript
+{% if (article and article.photo_gallery) or (articles_page and articles_page.object_list[0].photo_gallery) %}
+<!-- jQuery 1.7.2+ or Zepto.js 1.0+ -->
+<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+
+<!-- Magnific Popup core JS file -->
+<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/magnific-popup.js"></script>
+<script>
+$('.gallery').magnificPopup({
+	delegate: 'a',
+	type: 'image',
+	gallery: {
+		enabled: true,
+		navigateByImgClick: true,
+		preload: [1,2]
+	},
+	image: {
+		titleSrc: function(item) {
+			if (item.el.attr('caption') && item.el.attr('exif')) {
+				return (item.el.attr('caption').replace(/\\n/g, '<br />') +
+					'<small>' + item.el.attr('title') + ' - ' + item.el.attr('exif') + '</small>');
+			}
+		return item.el.attr('title') + '<small>' + item.el.attr('exif') + '</small>';
+	} }
+});
+</script>
+{% endif %}
+```
+
+## How to make a Bootstrap Carousel
+
+If you are using bootstrap, the following code is an example of how one could create a carousel.
+
+```html
+{% if article.photo_gallery %}
+  {% for title, gallery in article.photo_gallery %}
+    <h1>{{ title }}</h1>
+    <div id="carousel-{{ loop.index }}" class="carousel slide">
+      <ol class="carousel-indicators">
+          {% for i in range(0, gallery|length) %}
+          <li data-target="#carousel-{{ loop.index }}" data-slide-to="{{ i }}" {% if i==0 %} class="active" {% endif %}></li>
+          {% endfor %}
+      </ol>
+      <div class="carousel-inner">
+        {% for name, photo, thumb, exif, caption in gallery %}
+          {% if loop.first %}
+            <div class="item active">
+          {% else %}
+            <div class="item">
+          {% endif %}
+          <img src="{{ SITEURL }}/{{ photo }}" exif="{{ exif }}" alt="{{ caption }}">
+          <div class="carousel-caption">
+              <h5>{{ caption }}</h5>
+          </div> <!-- carousel-caption -->
+        </div> <!-- item -->
+        {% endfor %}
+      </div> <!-- carousel-inner -->
+      <a class="left carousel-control" href="#carousel-{{ loop.index }}" data-slide="prev">
+        <span class="glyphicon glyphicon-chevron-left"></span>
+      </a>
+      <a class="right carousel-control" href="#carousel-{{ loop.index }}" data-slide="next">
+        <span class="glyphicon glyphicon-chevron-right"></span>
+      </a>
+    </div> <!-- closes carousel-{{ loop.index }} -->
+    {% endfor %}
+{% endif %}
+```
+
+## Exiftool example
+
+You can add the following stanza to your fab file if you are using `fabric` to generate the appropriate text files for your galleries. You need to set the location of `Exiftool` control files.
+
+```Python
+def photo_gallery_gen(location):
+    """Create gallery metadata files."""
+    local_path = os.getcwd() + 'LOCATION OF YOUR EXIF CONTROL FILES'
+    with lcd(location):
+        local("exiftool -p {fmt_path}/exif.fmt . > exif.txt".format(
+            fmt_path=local_path))
+        local("exiftool -p {fmt_path}/captions.fmt . > captions.txt".format(
+            fmt_path=local_path))
+
+```
+
+`captions.fmt` example file
+
+```
+$FileName: $Description
+```
+
+`exif.fmt` example file
+
+```
+$FileName: $CreateDate - $Make $Model Stats:(f/$Aperture, ${ShutterSpeed}s, ISO $ISO Flash: $Flash) GPS:($GPSPosition $GPSAltitude)
+```
+
+## Known use cases
+
+[pxquim.pt](http://pxquim.pt/) uses Photos and the plug-in Sub-parts to publish 600 photo galleries with 40,000 photos. Photos keeps the high-resolution photos separate from the site articles.
+
+[pxquim.com](http://pxquim.com/) uses sub-parts to cover conferences, where it makes sense to have a sub-part for each speaker.
+
+## Alternatives
+
+Gallery
+:	Galleries are distinct entities, without the organizational capabilities of articles. Photos must be resized separately, and must be kept with the source of the blog. Gallery was the initial inspiration for Photos.
+
+Image_process
+:	Resize and process images in the article body in a more flexible way (based on the CSS class of the image), but without the ability to create galleries. The source photos must be kept with the source of the blog.
diff --git a/pelican-plugins/photos/SourceCodePro-Bold.otf b/pelican-plugins/photos/SourceCodePro-Bold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..f4e576cecf78b07861673cb351f9fdeb1cf9865e
GIT binary patch
literal 143932
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
aYub$G1@&FJPimPr?RJ?e!!qzD<NpJzzs|(~

literal 0
HcmV?d00001

diff --git a/pelican-plugins/photos/SourceCodePro-Regular.otf b/pelican-plugins/photos/SourceCodePro-Regular.otf
new file mode 100644
index 0000000000000000000000000000000000000000..4e3b9d0bcd92851958b3919e84565d9cf0cc91d1
GIT binary patch
literal 140088
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
R;nJmcnB45yX7*B^{|~|z2W9{O

literal 0
HcmV?d00001

diff --git a/pelican-plugins/photos/__init__.py b/pelican-plugins/photos/__init__.py
new file mode 100644
index 0000000..9832420
--- /dev/null
+++ b/pelican-plugins/photos/__init__.py
@@ -0,0 +1 @@
+from .photos import *
diff --git a/pelican-plugins/photos/licenses.json b/pelican-plugins/photos/licenses.json
new file mode 100644
index 0000000..c727e21
--- /dev/null
+++ b/pelican-plugins/photos/licenses.json
@@ -0,0 +1,30 @@
+{
+	"CC-BY-NC-ND": {
+		"URL": "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode",
+		"Text": "Copyleft license, {Author} {Year}. Content licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License, except where indicated otherwise. See {URL} for more information."
+	},
+	"CC-BY-NC-SA": {
+		"URL": "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode",
+		"Text": "Copyleft license, {Author} {Year}. Content licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License, except where indicated otherwise. See {URL} for more information."
+	},
+	"CC-BY": {
+		"URL": "https://creativecommons.org/licenses/by/4.0/legalcode",
+		"Text": "Copyleft license, {Author} {Year}. Content licensed under a Creative Commons Attribution 4.0 International License, except where indicated otherwise. See {URL} for more information."
+	},
+	"CC-BY-SA": {
+		"URL": "https://creativecommons.org/licenses/by-sa/4.0/legalcode",
+		"Text": "Copyleft license, {Author} {Year}. Content licensed under a Creative Commons Attribution-ShareAlike 4.0 International License, except where indicated otherwise. See {URL} for more information."
+	},
+	"CC0": {
+		"URL": "https://creativecommons.org/publicdomain/zero/1.0/",
+		"Text": "CC0 Copyleft license, {Author} {Year}. To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty. See {URL} for more information."
+	},
+	"CC-BY-NC": {
+		"URL": "https://creativecommons.org/licenses/by-nc/4.0/legalcode",
+		"Text": "Copyleft license, {Author} {Year}. Content licensed under a Creative Commons Attribution-NonCommercial 4.0 International License, except where indicated otherwise. See {URL} for more information."
+	},
+	"CC-BY-ND": {
+		"URL": "https://creativecommons.org/licenses/by-nd/4.0/legalcode",
+		"Text": "Copyleft license, {Author} {Year}. Content licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License, except where indicated otherwise. See {URL} for more information."
+	}
+}
diff --git a/pelican-plugins/photos/photos.py b/pelican-plugins/photos/photos.py
new file mode 100644
index 0000000..d0c1af1
--- /dev/null
+++ b/pelican-plugins/photos/photos.py
@@ -0,0 +1,589 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import datetime
+import itertools
+import json
+import logging
+import multiprocessing
+import os
+import pprint
+import re
+import sys
+
+from pelican.generators import ArticlesGenerator
+from pelican.generators import PagesGenerator
+from pelican.settings import DEFAULT_CONFIG
+from pelican import signals
+from pelican.utils import pelican_open
+
+logger = logging.getLogger(__name__)
+
+try:
+    from PIL import Image
+    from PIL import ImageDraw
+    from PIL import ImageEnhance
+    from PIL import ImageFont
+    from PIL import ImageOps
+except ImportError:
+    logger.error('PIL/Pillow not found')
+
+try:
+    import piexif
+except ImportError:
+    ispiexif = False
+    logger.warning('piexif not found! Cannot use exif manipulation features')
+else:
+    ispiexif = True
+    logger.debug('piexif found.')
+
+
+def initialized(pelican):
+    p = os.path.expanduser('~/Pictures')
+
+    DEFAULT_CONFIG.setdefault('PHOTO_LIBRARY', p)
+    DEFAULT_CONFIG.setdefault('PHOTO_GALLERY', (1024, 768, 80))
+    DEFAULT_CONFIG.setdefault('PHOTO_ARTICLE', (760, 506, 80))
+    DEFAULT_CONFIG.setdefault('PHOTO_THUMB', (192, 144, 60))
+    DEFAULT_CONFIG.setdefault('PHOTO_SQUARE_THUMB', False)
+    DEFAULT_CONFIG.setdefault('PHOTO_GALLERY_TITLE', '')
+    DEFAULT_CONFIG.setdefault('PHOTO_ALPHA_BACKGROUND_COLOR', (255, 255, 255))
+    DEFAULT_CONFIG.setdefault('PHOTO_WATERMARK', False)
+    DEFAULT_CONFIG.setdefault('PHOTO_WATERMARK_THUMB', False)
+    DEFAULT_CONFIG.setdefault('PHOTO_WATERMARK_TEXT', DEFAULT_CONFIG['SITENAME'])
+    DEFAULT_CONFIG.setdefault('PHOTO_WATERMARK_TEXT_COLOR', (255, 255, 255))
+    DEFAULT_CONFIG.setdefault('PHOTO_WATERMARK_IMG', '')
+    DEFAULT_CONFIG.setdefault('PHOTO_WATERMARK_IMG_SIZE', False)
+    DEFAULT_CONFIG.setdefault('PHOTO_RESIZE_JOBS', 1)
+    DEFAULT_CONFIG.setdefault('PHOTO_EXIF_KEEP', False)
+    DEFAULT_CONFIG.setdefault('PHOTO_EXIF_REMOVE_GPS', False)
+    DEFAULT_CONFIG.setdefault('PHOTO_EXIF_AUTOROTATE', True)
+    DEFAULT_CONFIG.setdefault('PHOTO_EXIF_COPYRIGHT', False)
+    DEFAULT_CONFIG.setdefault('PHOTO_EXIF_COPYRIGHT_AUTHOR', DEFAULT_CONFIG['SITENAME'])
+    DEFAULT_CONFIG.setdefault('PHOTO_LIGHTBOX_GALLERY_ATTR', 'data-lightbox')
+    DEFAULT_CONFIG.setdefault('PHOTO_LIGHTBOX_CAPTION_ATTR', 'data-title')
+
+    DEFAULT_CONFIG['queue_resize'] = {}
+    DEFAULT_CONFIG['created_galleries'] = {}
+    DEFAULT_CONFIG['plugin_dir'] = os.path.dirname(os.path.realpath(__file__))
+
+    if pelican:
+        pelican.settings.setdefault('PHOTO_LIBRARY', p)
+        pelican.settings.setdefault('PHOTO_GALLERY', (1024, 768, 80))
+        pelican.settings.setdefault('PHOTO_ARTICLE', (760, 506, 80))
+        pelican.settings.setdefault('PHOTO_THUMB', (192, 144, 60))
+        pelican.settings.setdefault('PHOTO_SQUARE_THUMB', False)
+        pelican.settings.setdefault('PHOTO_GALLERY_TITLE', '')
+        pelican.settings.setdefault('PHOTO_ALPHA_BACKGROUND_COLOR', (255, 255, 255))
+        pelican.settings.setdefault('PHOTO_WATERMARK', False)
+        pelican.settings.setdefault('PHOTO_WATERMARK_THUMB', False)
+        pelican.settings.setdefault('PHOTO_WATERMARK_TEXT', pelican.settings['SITENAME'])
+        pelican.settings.setdefault('PHOTO_WATERMARK_TEXT_COLOR', (255, 255, 255))
+        pelican.settings.setdefault('PHOTO_WATERMARK_IMG', '')
+        pelican.settings.setdefault('PHOTO_WATERMARK_IMG_SIZE', False)
+        pelican.settings.setdefault('PHOTO_RESIZE_JOBS', 1)
+        pelican.settings.setdefault('PHOTO_EXIF_KEEP', False)
+        pelican.settings.setdefault('PHOTO_EXIF_REMOVE_GPS', False)
+        pelican.settings.setdefault('PHOTO_EXIF_AUTOROTATE', True)
+        pelican.settings.setdefault('PHOTO_EXIF_COPYRIGHT', False)
+        pelican.settings.setdefault('PHOTO_EXIF_COPYRIGHT_AUTHOR', pelican.settings['AUTHOR'])
+        pelican.settings.setdefault('PHOTO_LIGHTBOX_GALLERY_ATTR', 'data-lightbox')
+        pelican.settings.setdefault('PHOTO_LIGHTBOX_CAPTION_ATTR', 'data-title')
+
+
+def read_notes(filename, msg=None):
+    notes = {}
+    try:
+        with pelican_open(filename) as text:
+            for line in text.splitlines():
+                if line.startswith('#'):
+                    continue
+                m = line.split(':', 1)
+                if len(m) > 1:
+                    pic = m[0].strip()
+                    note = m[1].strip()
+                    if pic and note:
+                        notes[pic] = note
+                else:
+                    notes[line] = ''
+    except Exception as e:
+        if msg:
+            logger.info('{} at file {}'.format(msg, filename))
+        logger.debug('read_notes issue: {} at file {}. Debug message:{}'.format(msg, filename, e))
+    return notes
+
+
+def enqueue_resize(orig, resized, spec=(640, 480, 80)):
+    if resized not in DEFAULT_CONFIG['queue_resize']:
+        DEFAULT_CONFIG['queue_resize'][resized] = (orig, spec)
+    elif DEFAULT_CONFIG['queue_resize'][resized] != (orig, spec):
+        logger.error('photos: resize conflict for {}, {}-{} is not {}-{}'.format(resized, DEFAULT_CONFIG['queue_resize'][resized][0], DEFAULT_CONFIG['queue_resize'][resized][1], orig, spec))
+
+
+def isalpha(img):
+    return True if img.mode in ('RGBA', 'LA') or (img.mode == 'P' and 'transparency' in img.info) else False
+
+
+def remove_alpha(img, bg_color):
+    background = Image.new("RGB", img.size, bg_color)
+    background.paste(img, mask=img.split()[3])  # 3 is the alpha channel
+    return background
+
+
+def ReduceOpacity(im, opacity):
+    """Reduces Opacity.
+
+    Returns an image with reduced opacity.
+    Taken from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/362879
+    """
+    assert opacity >= 0 and opacity <= 1
+    if isalpha(im):
+        im = im.copy()
+    else:
+        im = im.convert('RGBA')
+
+    alpha = im.split()[3]
+    alpha = ImageEnhance.Brightness(alpha).enhance(opacity)
+    im.putalpha(alpha)
+    return im
+
+
+def watermark_photo(image, settings):
+    margin = [10, 10]
+    opacity = 0.6
+
+    watermark_layer = Image.new("RGBA", image.size, (0, 0, 0, 0))
+    draw_watermark = ImageDraw.Draw(watermark_layer)
+    text_reducer = 32
+    image_reducer = 8
+    text_size = [0, 0]
+    mark_size = [0, 0]
+    text_position = [0, 0]
+
+    if settings['PHOTO_WATERMARK_TEXT']:
+        font_name = 'SourceCodePro-Bold.otf'
+        default_font = os.path.join(DEFAULT_CONFIG['plugin_dir'], font_name)
+        font = ImageFont.FreeTypeFont(default_font, watermark_layer.size[0] // text_reducer)
+        text_size = draw_watermark.textsize(settings['PHOTO_WATERMARK_TEXT'], font)
+        text_position = [image.size[i] - text_size[i] - margin[i] for i in [0, 1]]
+        draw_watermark.text(text_position, settings['PHOTO_WATERMARK_TEXT'], settings['PHOTO_WATERMARK_TEXT_COLOR'], font=font)
+
+    if settings['PHOTO_WATERMARK_IMG']:
+        mark_image = Image.open(settings['PHOTO_WATERMARK_IMG'])
+        mark_image_size = [watermark_layer.size[0] // image_reducer for size in mark_size]
+        mark_image_size = settings['PHOTO_WATERMARK_IMG_SIZE'] if settings['PHOTO_WATERMARK_IMG_SIZE'] else mark_image_size
+        mark_image.thumbnail(mark_image_size, Image.ANTIALIAS)
+        mark_position = [watermark_layer.size[i] - mark_image.size[i] - margin[i] for i in [0, 1]]
+        mark_position = tuple([mark_position[0] - (text_size[0] // 2) + (mark_image_size[0] // 2), mark_position[1] - text_size[1]])
+
+        if not isalpha(mark_image):
+            mark_image = mark_image.convert('RGBA')
+
+        watermark_layer.paste(mark_image, mark_position, mark_image)
+
+    watermark_layer = ReduceOpacity(watermark_layer, opacity)
+    image.paste(watermark_layer, (0, 0), watermark_layer)
+
+    return image
+
+
+def rotate_image(img, exif_dict):
+    if "exif" in img.info and piexif.ImageIFD.Orientation in exif_dict["0th"]:
+        orientation = exif_dict["0th"].pop(piexif.ImageIFD.Orientation)
+        if orientation == 2:
+            img = img.transpose(Image.FLIP_LEFT_RIGHT)
+        elif orientation == 3:
+            img = img.rotate(180)
+        elif orientation == 4:
+            img = img.rotate(180).transpose(Image.FLIP_LEFT_RIGHT)
+        elif orientation == 5:
+            img = img.rotate(-90).transpose(Image.FLIP_LEFT_RIGHT)
+        elif orientation == 6:
+            img = img.rotate(-90, expand=True)
+        elif orientation == 7:
+            img = img.rotate(90).transpose(Image.FLIP_LEFT_RIGHT)
+        elif orientation == 8:
+            img = img.rotate(90)
+
+    return (img, exif_dict)
+
+
+def build_license(license, author):
+    year = datetime.datetime.now().year
+    license_file = os.path.join(DEFAULT_CONFIG['plugin_dir'], 'licenses.json')
+
+    with open(license_file) as data_file:
+        licenses = json.load(data_file)
+
+    if any(license in k for k in licenses):
+        return licenses[license]['Text'].format(Author=author, Year=year, URL=licenses[license]['URL'])
+    else:
+        return 'Copyright {Year} {Author}, All Rights Reserved'.format(Author=author, Year=year)
+
+
+def manipulate_exif(img, settings):
+    try:
+        exif = piexif.load(img.info['exif'])
+    except Exception:
+        logger.debug('EXIF information not found')
+        exif = {}
+
+    if settings['PHOTO_EXIF_AUTOROTATE']:
+        img, exif = rotate_image(img, exif)
+
+    if settings['PHOTO_EXIF_REMOVE_GPS']:
+        exif.pop('GPS')
+
+    if settings['PHOTO_EXIF_COPYRIGHT']:
+
+        # We want to be minimally destructive to any preset exif author or copyright information.
+        # If there is copyright or author information prefer that over everything else.
+        if not exif['0th'].get(piexif.ImageIFD.Artist):
+            exif['0th'][piexif.ImageIFD.Artist] = settings['PHOTO_EXIF_COPYRIGHT_AUTHOR']
+            author = settings['PHOTO_EXIF_COPYRIGHT_AUTHOR']
+
+        if not exif['0th'].get(piexif.ImageIFD.Copyright):
+            license = build_license(settings['PHOTO_EXIF_COPYRIGHT'], author)
+            exif['0th'][piexif.ImageIFD.Copyright] = license
+
+    return (img, piexif.dump(exif))
+
+
+def resize_worker(orig, resized, spec, settings):
+    logger.info('photos: make photo {} -> {}'.format(orig, resized))
+    im = Image.open(orig)
+
+    if ispiexif and settings['PHOTO_EXIF_KEEP'] and im.format == 'JPEG':  # Only works with JPEG exif for sure.
+        try:
+            im, exif_copy = manipulate_exif(im, settings)
+        except:
+            logger.info('photos: no EXIF or EXIF error in {}'.format(orig))
+            exif_copy = b''
+    else:
+        exif_copy = b''
+
+    icc_profile = im.info.get("icc_profile", None)
+
+    if settings['PHOTO_SQUARE_THUMB'] and spec == settings['PHOTO_THUMB']:
+        im = ImageOps.fit(im, (spec[0], spec[1]), Image.ANTIALIAS)
+
+    im.thumbnail((spec[0], spec[1]), Image.ANTIALIAS)
+    directory = os.path.split(resized)[0]
+
+    if isalpha(im):
+        im = remove_alpha(im, settings['PHOTO_ALPHA_BACKGROUND_COLOR'])
+
+    if not os.path.exists(directory):
+        try:
+            os.makedirs(directory)
+        except Exception:
+            logger.exception('Could not create {}'.format(directory))
+    else:
+        logger.debug('Directory already exists at {}'.format(os.path.split(resized)[0]))
+
+    if settings['PHOTO_WATERMARK']:
+        isthumb = True if spec == settings['PHOTO_THUMB'] else False
+        if not isthumb or (isthumb and settings['PHOTO_WATERMARK_THUMB']):
+            im = watermark_photo(im, settings)
+
+    im.save(resized, 'JPEG', quality=spec[2], icc_profile=icc_profile, exif=exif_copy)
+
+
+def resize_photos(generator, writer):
+    if generator.settings['PHOTO_RESIZE_JOBS'] == -1:
+        debug = True
+        generator.settings['PHOTO_RESIZE_JOBS'] = 1
+    else:
+        debug = False
+
+    pool = multiprocessing.Pool(generator.settings['PHOTO_RESIZE_JOBS'])
+    logger.debug('Debug Status: {}'.format(debug))
+    for resized, what in DEFAULT_CONFIG['queue_resize'].items():
+        resized = os.path.join(generator.output_path, resized)
+        orig, spec = what
+        if (not os.path.isfile(resized) or os.path.getmtime(orig) > os.path.getmtime(resized)):
+            if debug:
+                resize_worker(orig, resized, spec, generator.settings)
+            else:
+                pool.apply_async(resize_worker, (orig, resized, spec, generator.settings))
+
+    pool.close()
+    pool.join()
+
+
+def detect_content(content):
+    hrefs = None
+
+    def replacer(m):
+        what = m.group('what')
+        value = m.group('value')
+        tag = m.group('tag')
+        output = m.group(0)
+
+        if what in ('photo', 'lightbox'):
+            if value.startswith('/'):
+                value = value[1:]
+
+            path = os.path.join(
+                os.path.expanduser(settings['PHOTO_LIBRARY']),
+                value
+            )
+
+            if os.path.isfile(path):
+                photo_prefix = os.path.splitext(value)[0].lower()
+
+                if what == 'photo':
+                    photo_article = photo_prefix + 'a.jpg'
+                    enqueue_resize(
+                        path,
+                        os.path.join('photos', photo_article),
+                        settings['PHOTO_ARTICLE']
+                    )
+
+                    output = ''.join((
+                        '<',
+                        m.group('tag'),
+                        m.group('attrs_before'),
+                        m.group('src'),
+                        '=',
+                        m.group('quote'),
+                        os.path.join(settings['SITEURL'], 'photos', photo_article),
+                        m.group('quote'),
+                        m.group('attrs_after'),
+                    ))
+
+                elif what == 'lightbox' and tag == 'img':
+                    photo_gallery = photo_prefix + '.jpg'
+                    enqueue_resize(
+                        path,
+                        os.path.join('photos', photo_gallery),
+                        settings['PHOTO_GALLERY']
+                    )
+
+                    photo_thumb = photo_prefix + 't.jpg'
+                    enqueue_resize(
+                        path,
+                        os.path.join('photos', photo_thumb),
+                        settings['PHOTO_THUMB']
+                    )
+
+                    lightbox_attr_list = ['']
+
+                    gallery_name = value.split('/')[0]
+                    lightbox_attr_list.append('{}="{}"'.format(
+                        settings['PHOTO_LIGHTBOX_GALLERY_ATTR'],
+                        gallery_name
+                    ))
+
+                    captions = read_notes(
+                        os.path.join(os.path.dirname(path), 'captions.txt'),
+                        msg = 'photos: No captions for gallery'
+                    )
+                    caption = captions.get(os.path.basename(path)) if captions else None
+                    if caption:
+                        lightbox_attr_list.append('{}="{}"'.format(
+                            settings['PHOTO_LIGHTBOX_CAPTION_ATTR'],
+                            caption
+                        ))
+
+                    lightbox_attrs = ' '.join(lightbox_attr_list)
+
+                    output = ''.join((
+                        '<a href=',
+                        m.group('quote'),
+                        os.path.join(settings['SITEURL'], 'photos', photo_gallery),
+                        m.group('quote'),
+                        lightbox_attrs,
+                        '><img',
+                        m.group('attrs_before'),
+                        'src=',
+                        m.group('quote'),
+                        os.path.join(settings['SITEURL'], 'photos', photo_thumb),
+                        m.group('quote'),
+                        m.group('attrs_after'),
+                        '</a>'
+                    ))
+
+            else:
+                logger.error('photos: No photo %s', path)
+
+        return output
+
+    if hrefs is None:
+        regex = r"""
+            <\s*
+            (?P<tag>[^\s\>]+)  # detect the tag
+            (?P<attrs_before>[^\>]*)
+            (?P<src>href|src)  # match tag with src and href attr
+            \s*=
+            (?P<quote>["\'])  # require value to be quoted
+            (?P<path>{0}(?P<value>.*?))  # the url value
+            (?P=quote)
+            (?P<attrs_after>[^\>]*>)
+        """.format(
+            content.settings['INTRASITE_LINK_REGEX']
+        )
+        hrefs = re.compile(regex, re.X)
+
+    if content._content and ('{photo}' in content._content or '{lightbox}' in content._content):
+        settings = content.settings
+        content._content = hrefs.sub(replacer, content._content)
+
+
+def galleries_string_decompose(gallery_string):
+    splitter_regex = re.compile(r'[\s,]*?({photo}|{filename})')
+    title_regex = re.compile(r'{(.+)}')
+    galleries = map(unicode.strip if sys.version_info.major == 2 else str.strip, filter(None, splitter_regex.split(gallery_string)))
+    galleries = [gallery[1:] if gallery.startswith('/') else gallery for gallery in galleries]
+    if len(galleries) % 2 == 0 and ' ' not in galleries:
+        galleries = zip(zip(['type'] * len(galleries[0::2]), galleries[0::2]), zip(['location'] * len(galleries[0::2]), galleries[1::2]))
+        galleries = [dict(gallery) for gallery in galleries]
+        for gallery in galleries:
+            title = re.search(title_regex, gallery['location'])
+            if title:
+                gallery['title'] = title.group(1)
+                gallery['location'] = re.sub(title_regex, '', gallery['location']).strip()
+            else:
+                gallery['title'] = DEFAULT_CONFIG['PHOTO_GALLERY_TITLE']
+        return galleries
+    else:
+        logger.error('Unexpected gallery location format! \n{}'.format(pprint.pformat(galleries)))
+
+
+def process_gallery(generator, content, location):
+    content.photo_gallery = []
+
+    galleries = galleries_string_decompose(location)
+
+    for gallery in galleries:
+
+        if gallery['location'] in DEFAULT_CONFIG['created_galleries']:
+            content.photo_gallery.append((gallery['location'], DEFAULT_CONFIG['created_galleries'][gallery]))
+            continue
+
+        if gallery['type'] == '{photo}':
+            dir_gallery = os.path.join(os.path.expanduser(generator.settings['PHOTO_LIBRARY']), gallery['location'])
+            rel_gallery = gallery['location']
+        elif gallery['type'] == '{filename}':
+            base_path = os.path.join(generator.path, content.relative_dir)
+            dir_gallery = os.path.join(base_path, gallery['location'])
+            rel_gallery = os.path.join(content.relative_dir, gallery['location'])
+
+        if os.path.isdir(dir_gallery):
+            logger.info('photos: Gallery detected: {}'.format(rel_gallery))
+            dir_photo = os.path.join('photos', rel_gallery.lower())
+            dir_thumb = os.path.join('photos', rel_gallery.lower())
+            exifs = read_notes(os.path.join(dir_gallery, 'exif.txt'),
+                               msg='photos: No EXIF for gallery')
+            captions = read_notes(os.path.join(dir_gallery, 'captions.txt'), msg='photos: No captions for gallery')
+            blacklist = read_notes(os.path.join(dir_gallery, 'blacklist.txt'), msg='photos: No blacklist for gallery')
+            content_gallery = []
+
+            title = gallery['title']
+            for pic in sorted(os.listdir(dir_gallery)):
+                if pic.startswith('.'):
+                    continue
+                if pic.endswith('.txt'):
+                    continue
+                if pic in blacklist:
+                    continue
+                photo = os.path.splitext(pic)[0].lower() + '.jpg'
+                thumb = os.path.splitext(pic)[0].lower() + 't.jpg'
+                content_gallery.append((
+                    pic,
+                    os.path.join(dir_photo, photo),
+                    os.path.join(dir_thumb, thumb),
+                    exifs.get(pic, ''),
+                    captions.get(pic, '')))
+
+                enqueue_resize(
+                    os.path.join(dir_gallery, pic),
+                    os.path.join(dir_photo, photo),
+                    generator.settings['PHOTO_GALLERY'])
+                enqueue_resize(
+                    os.path.join(dir_gallery, pic),
+                    os.path.join(dir_thumb, thumb),
+                    generator.settings['PHOTO_THUMB'])
+
+            content.photo_gallery.append((title, content_gallery))
+            logger.debug('Gallery Data: '.format(pprint.pformat(content.photo_gallery)))
+            DEFAULT_CONFIG['created_galleries']['gallery'] = content_gallery
+        else:
+            logger.error('photos: Gallery does not exist: {} at {}'.format(gallery['location'], dir_gallery))
+
+
+def detect_gallery(generator, content):
+    if 'gallery' in content.metadata:
+        gallery = content.metadata.get('gallery')
+        if gallery.startswith('{photo}') or gallery.startswith('{filename}'):
+            process_gallery(generator, content, gallery)
+        elif gallery:
+            logger.error('photos: Gallery tag not recognized: {}'.format(gallery))
+
+
+def image_clipper(x):
+    return x[8:] if x[8] == '/' else x[7:]
+
+
+def file_clipper(x):
+    return x[11:] if x[10] == '/' else x[10:]
+
+
+def process_image(generator, content, image):
+    if image.startswith('{photo}'):
+        path = os.path.join(os.path.expanduser(generator.settings['PHOTO_LIBRARY']), image_clipper(image))
+        image = image_clipper(image)
+    elif image.startswith('{filename}'):
+        path = os.path.join(generator.path, content.relative_dir, file_clipper(image))
+        image = file_clipper(image)
+
+    if os.path.isfile(path):
+        photo = os.path.splitext(image)[0].lower() + 'a.jpg'
+        thumb = os.path.splitext(image)[0].lower() + 't.jpg'
+        content.photo_image = (
+            os.path.basename(image).lower(),
+            os.path.join('photos', photo),
+            os.path.join('photos', thumb))
+        enqueue_resize(
+            path,
+            os.path.join('photos', photo),
+            generator.settings['PHOTO_ARTICLE'])
+        enqueue_resize(
+            path,
+            os.path.join('photos', thumb),
+            generator.settings['PHOTO_THUMB'])
+    else:
+        logger.error('photo: No photo for {} at {}'.format(content.source_path, path))
+
+
+def detect_image(generator, content):
+    image = content.metadata.get('image', None)
+    if image:
+        if image.startswith('{photo}') or image.startswith('{filename}'):
+            process_image(generator, content, image)
+        else:
+            logger.error('photos: Image tag not recognized: {}'.format(image))
+
+
+def detect_images_and_galleries(generators):
+    """Runs generator on both pages and articles."""
+    for generator in generators:
+        if isinstance(generator, ArticlesGenerator):
+            for article in itertools.chain(generator.articles, generator.translations, generator.drafts):
+                detect_image(generator, article)
+                detect_gallery(generator, article)
+        elif isinstance(generator, PagesGenerator):
+            for page in itertools.chain(generator.pages, generator.translations, generator.hidden_pages):
+                detect_image(generator, page)
+                detect_gallery(generator, page)
+
+
+def register():
+    """Uses the new style of registration based on GitHub Pelican issue #314."""
+    signals.initialized.connect(initialized)
+    try:
+        signals.content_object_init.connect(detect_content)
+        signals.all_generators_finalized.connect(detect_images_and_galleries)
+        signals.article_writer_finalized.connect(resize_photos)
+    except Exception as e:
+        logger.exception('Plugin failed to execute: {}'.format(pprint.pformat(e)))
diff --git a/pelican-plugins/photos/requirements.txt b/pelican-plugins/photos/requirements.txt
new file mode 100644
index 0000000..294cfab
--- /dev/null
+++ b/pelican-plugins/photos/requirements.txt
@@ -0,0 +1,2 @@
+Pillow
+piexif>=1.0.5
diff --git a/pelican-plugins/photos/test_data/agallery/best.jpg b/pelican-plugins/photos/test_data/agallery/best.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2a8d2bfd540bb3bacbaeef27fc4348b574364a3d
GIT binary patch
literal 68284
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%0An0tHJ#JFx{dIn8ox-{aYI7G^KPGG^NR>Et
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

literal 0
HcmV?d00001

diff --git a/pelican-plugins/photos/test_data/agallery/captions.txt b/pelican-plugins/photos/test_data/agallery/captions.txt
new file mode 100644
index 0000000..70012b4
--- /dev/null
+++ b/pelican-plugins/photos/test_data/agallery/captions.txt
@@ -0,0 +1 @@
+best.jpg: Caption-best
diff --git a/pelican-plugins/photos/test_data/agallery/exif.txt b/pelican-plugins/photos/test_data/agallery/exif.txt
new file mode 100644
index 0000000..fe6da98
--- /dev/null
+++ b/pelican-plugins/photos/test_data/agallery/exif.txt
@@ -0,0 +1,2 @@
+best.jpg: EXIF-best
+night.png: EXIF-night
diff --git a/pelican-plugins/photos/test_data/agallery/night.png b/pelican-plugins/photos/test_data/agallery/night.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6e770bcb464a2d454de275fc403d1c0217c413b
GIT binary patch
literal 82619
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%0DhKfxRck{E6~DQK
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%0A%j#7p
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

literal 0
HcmV?d00001

diff --git a/pelican-plugins/photos/test_data/filename.md b/pelican-plugins/photos/test_data/filename.md
new file mode 100644
index 0000000..23e19d4
--- /dev/null
+++ b/pelican-plugins/photos/test_data/filename.md
@@ -0,0 +1,7 @@
+title: Test filename
+gallery: {filename}agallery
+image: {filename}agallery/best.jpg
+
+Here is my best photo, again.
+
+![]({filename}agallery/best.jpg).
diff --git a/pelican-plugins/photos/test_data/photo.md b/pelican-plugins/photos/test_data/photo.md
new file mode 100644
index 0000000..10f132c
--- /dev/null
+++ b/pelican-plugins/photos/test_data/photo.md
@@ -0,0 +1,7 @@
+title: Test photo
+gallery: {photo}agallery
+image: {photo}agallery/best.jpg
+
+Here is my best photo, again.
+
+![]({photo}agallery/best.jpg).
diff --git a/pelican-plugins/photos/test_photos.py b/pelican-plugins/photos/test_photos.py
new file mode 100644
index 0000000..b5ca73d
--- /dev/null
+++ b/pelican-plugins/photos/test_photos.py
@@ -0,0 +1,129 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os
+from pelican.generators import ArticlesGenerator
+from pelican.tests.support import unittest, get_settings
+from tempfile import mkdtemp
+from shutil import rmtree
+import photos
+
+CUR_DIR = os.path.dirname(__file__)
+
+
+class TestPhotos(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.temp_path = mkdtemp(prefix='pelicantests.')
+        cls.settings = get_settings(filenames={})
+        cls.settings['PATH'] = os.path.join(CUR_DIR, 'test_data')
+        cls.settings['PHOTO_LIBRARY'] = os.path.join(CUR_DIR, 'test_data')
+        cls.settings['DEFAULT_DATE'] = (1970, 1, 1)
+        cls.settings['FILENAME_METADATA'] = '(?P<slug>[^.]+)'
+        cls.settings['PLUGINS'] = [photos]
+        cls.settings['CACHE_CONTENT'] = False
+        cls.settings['OUTPUT_PATH'] = cls.temp_path
+        cls.settings['SITEURL'] = 'http://getpelican.com/sub'
+        cls.settings['AUTHOR'] = 'Bob Anonymous'
+        photos.initialized(cls)
+        context = cls.settings.copy()
+        context['generated_content'] = dict()
+        context['static_links'] = set()
+        cls.generator = ArticlesGenerator(
+            context=context, settings=cls.settings,
+            path=cls.settings['PATH'], theme=cls.settings['THEME'],
+            output_path=cls.settings['OUTPUT_PATH'])
+        photos.register()
+        cls.generator.generate_context()
+        for article in cls.generator.articles:
+            photos.detect_image(cls.generator, article)
+            photos.detect_gallery(cls.generator, article)
+
+    @classmethod
+    def tearDownClass(cls):
+        rmtree(cls.temp_path)
+
+    def test_image(self):
+        for a in self.generator.articles:
+            if 'image' in a.metadata:
+                self.assertTrue(
+                    hasattr(a, 'photo_image'),
+                    msg="{} not recognized.".format(a.metadata['image']))
+
+    def test_gallery(self):
+        for a in self.generator.articles:
+            if 'gallety' in a.metadata:
+                self.assertTrue(
+                    hasattr(a, 'photo_gallery'),
+                    msg="{} not recognized.".format(a.metadata['gallery']))
+
+    def get_article(self, slug):
+        for a in self.generator.articles:
+            if slug == a.slug:
+                return a
+        return None
+
+    def test_photo_article_image(self):
+        self.assertEqual(self.get_article('photo').photo_image,
+                         ('best.jpg',
+                          'photos/agallery/besta.jpg',
+                          'photos/agallery/bestt.jpg'))
+
+    def test_photo_article_gallery(self):
+        photo_gallery = self.get_article('filename').photo_gallery[0][1]
+        self.assertEqual(photo_gallery[0],
+                         ('best.jpg',
+                          'photos/agallery/best.jpg',
+                          'photos/agallery/bestt.jpg',
+                          'EXIF-best', 'Caption-best'))
+        self.assertEqual(photo_gallery[1],
+                         ('night.png',
+                          'photos/agallery/night.jpg',
+                          'photos/agallery/nightt.jpg',
+                          'EXIF-night', ''))
+
+    def test_photo_article_body(self):
+        expected = ('<p>Here is my best photo, again.</p>\n'
+                    '<p><img alt="" src="http://getpelican.com/sub/photos/agallery/besta.jpg">.</p>')
+        self.assertEqual(expected, self.get_article('photo').content)
+
+    def test_filename_article_image(self):
+        self.assertEqual(
+            ('best.jpg', 'photos/agallery/besta.jpg', 'photos/agallery/bestt.jpg'),
+            self.get_article('filename').photo_image)
+
+    def test_filename_article_gallery(self):
+        photo_gallery = self.get_article('filename').photo_gallery[0][1]
+        self.assertEqual(photo_gallery[0],
+                         ('best.jpg',
+                          'photos/agallery/best.jpg',
+                          'photos/agallery/bestt.jpg',
+                          'EXIF-best', 'Caption-best'))
+        self.assertEqual(photo_gallery[1],
+                         ('night.png',
+                          'photos/agallery/night.jpg',
+                          'photos/agallery/nightt.jpg',
+                          'EXIF-night', ''))
+
+    def test_filename_article_body(self):
+        expected = ('<p>Here is my best photo, again.</p>\n'
+                    '<p><img alt="" src="{filename}agallery/best.jpg">.</p>')
+        self.assertEqual(expected, self.get_article('filename').content)
+
+    def test_queue_resize(self):
+        expected = [
+            ('photos/agallery/best.jpg',
+                (self.settings['PATH'] + '/agallery/best.jpg', (1024, 768, 80))),
+            ('photos/agallery/besta.jpg',
+                (self.settings['PATH'] + '/agallery/best.jpg', (760, 506, 80))),
+            ('photos/agallery/bestt.jpg',
+                (self.settings['PATH'] + '/agallery/best.jpg', (192, 144, 60))),
+            ('photos/agallery/night.jpg',
+                (self.settings['PATH'] + '/agallery/night.png', (1024, 768, 80))),
+            ('photos/agallery/nightt.jpg',
+                (self.settings['PATH'] + '/agallery/night.png', (192, 144, 60)))]
+        self.assertEqual(sorted(expected), sorted(photos.DEFAULT_CONFIG['queue_resize'].items()))
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/pelican-plugins/plantuml/Readme.rst b/pelican-plugins/plantuml/Readme.rst
new file mode 100644
index 0000000..a94e2bd
--- /dev/null
+++ b/pelican-plugins/plantuml/Readme.rst
@@ -0,0 +1,216 @@
+================================================
+PlantUML plugin for Pelican rst and md documents
+================================================
+
+This plugin allows you to define UML diagrams directly into rst or md documents using the great PlantUML_ tool.
+
+It gets the content of ``uml`` directive, passes it to the external program PlantUML_ and then links the generated image to the document.
+
+.. contents::
+
+Installation
+============
+
+You need to install PlantUML_ (see the site for details) and Graphviz_ 2.26.3 or later. The plugin expects a program ``plantuml`` in the classpath. If not installed by your package manager, you can create a shell script and place it somewhere in the classpath. For example, save te following into ``/usr/local/bin/plantuml`` (supposing PlantUML_ installed into ``/opt/plantuml``):
+
+.. code-block:: bash
+
+    #!/bin/bash
+    java -jar /opt/plantuml/plantuml.jar ${@}
+
+For Gentoo_ there is an ebuild at http://gpo.zugaina.org/dev-util/plantuml/RDep: you can download the ebuild and the ``files`` subfolder or you can add the ``zugaina`` repository with _layman (reccomended).
+
+Usage
+=====
+
+Add ``plantuml`` to plugin list in ``pelicanconf.py``. For example:
+
+.. code-block:: ptyhon
+
+    PLUGINS = [ "sitemap", "plantuml" ]
+
+One loaded the plugin register also the Pyhton-Markdown_ extension. 
+
+RST usage
+---------
+Use the ``uml`` directive to start UML diagram description. It is not necessary to enclose diagram body between ``@startuml`` and ``@enduml`` directives: they are added automatically  before calling ``plantuml``.
+
+In addition to ``class`` and ``alt`` options common to all images, you can use the ``format`` option to select what kind of image must be produced. At the moment only ``png`` and ``svg`` are supported; the default is ``png``.
+
+Please note that the ``format`` option in not recognized by the ``plantuml`` extension of ``rst2pdf`` utility (call it with ``-e plantuml.py``) so if you use it you can get errors from that program.
+
+MD usage
+--------
+For use with the Pyhton-Markdown_ syntax, the UML block must be enclose with ``::uml::``:
+
+.. code-block:: markdown
+
+    ::uml:: [format=...] [classes=...] [alt=...]
+       PlantUML script
+    ::end-uml::
+
+Please keep a blank line before ``::uml::`` and after ``::end-uml::`` to be sure that the UML code will be correctly recognized. See Examples_ for more details.
+
+With MD syntax options must be specified in the same line as the opening ``:uml::``, with the order ``format``, ``classes`` anmd ``alt``. The general syntax for option is
+
+.. code-block:: text
+
+    option="value"
+
+Option can be enclosed with single or double quotes, as you like. Options defaults are the same as for the rst plugin.
+
+For pandoc_reader plugin users
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The plugin ``pandoc_reader`` sends the Markdown body to the pandoc_ tool which has it's own Markdown parser, written in Haskell_ language: Python_ plugins manipulating Markdown posts (such this) are not used because the entire body id passed to pandoc_ without any iteraction by Pelican_.
+
+For those who are using the ``pandoc_reader`` plugin and wants to include PlantUML_ diagrams, use the ``pandoc-plantuml`` script (only *nix, sorry): it is a wrapper for filtering the code blocks parsed by pandoc_ before
+writing out the converted file. It is an adaption of the great work by Kurt Bonne for his `pandoc-plantuml-filter <https://github.com/kbonne/pandoc-plantuml-filter.git>`_.
+
+To use it, copy the ``pandoc-plantuml`` file in a subdirectory of your pelican project (for example `pandoc_extensions`) and make sure it is executable (``chmod +x pandoc-plantuml``).
+
+In the ``pelicanconf.py`` configure the needed plugins:
+
+.. code-block:: python
+
+    PLUGINS = ['pandoc_reader'] // Yes, plantuml plugin non necessary
+    PANDOC_ARGS = ['--filter=pandoc_extensions/pandoc-plantuml']
+
+In Markdown posts use the following syntax to include PlantUML_ diagrams:
+
+.. code-block:: markdown
+
+    ```plantuml
+    @startuml
+      Alice -> Bob: Authentication Request
+      Bob --> Alice: Authentication Response
+
+      Alice -> Bob: Another authentication Request
+      Alice <-- Bob: another authentication Response
+    @enduml
+    ```
+
+Rendered images will bu put in the output/images folder.
+
+**NOTE:** ``pandoc-plantuml`` is broken from pandoc 1.16 cause an API change in pandoc ``Image`` function. I'm working on a fix but in the meanwhile use a version of pandoc prior to ``1.16`` .
+
+Debugging
+---------
+The plugin can produce debugging informations to help to locate errors. To enable debugging execute ``pelican`` in debug mode:
+
+ .. code-block:: console
+
+     make DEBUG=1 html
+
+  
+Examples
+========
+
+Sequence diagram (from PlantUML_ site):
+
+.. code-block:: rst
+
+  .. uml::
+    :alt: Sample sequence diagram
+
+    participant User
+
+    User -> A: DoWork
+    activate A #FFBBBB
+
+    A -> A: Internal call
+    activate A #DarkSalmon
+
+    A -> B: << createRequest >>
+    activate B
+
+    B --> A: RequestCreated
+    deactivate B
+    deactivate A
+    A -> User: Done
+    deactivate A
+
+Output:
+
+.. image:: http://plantuml.sourceforge.net/imgp/sequence_022.png
+   :alt: Sample sequence diagram
+
+
+Same diagram with Python-Markdown_ syntax:
+
+.. code-block:: markdown
+
+    ::uml:: format="png" alt="Sample sequence diagram"
+      participant User
+
+      User -> A: DoWork
+      activate A #FFBBBB
+
+      A -> A: Internal call
+      activate A #DarkSalmon
+
+      A -> B: << createRequest >>
+      activate B
+
+      B --> A: RequestCreated
+      deactivate B
+      deactivate A
+      A -> User: Done
+      deactivate A
+    ::end-uml::
+
+Another example from PlantUML_ site (activity diagram):
+
+.. code-block:: rst
+
+  .. uml::
+
+    start
+    :ClickServlet.handleRequest();
+    :new page;
+    if (Page.onSecurityCheck) then (true)
+      :Page.onInit();
+      if (isForward?) then (no)
+	:Process controls;
+	if (continue processing?) then (no)
+	  stop
+	endif
+	
+	if (isPost?) then (yes)
+	  :Page.onPost();
+	else (no)
+	  :Page.onGet();
+	endif
+	:Page.onRender();
+      endif
+    else (false)
+    endif
+
+    if (do redirect?) then (yes)
+      :redirect process;
+    else
+      if (do forward?) then (yes)
+	:Forward request;
+      else (no)
+	:Render page template;
+      endif
+    endif
+
+    stop
+
+Generated image:
+
+.. image:: http://plantuml.sourceforge.net/imgp/activity2_009.png
+   :alt: Sample activity diagram
+
+
+
+.. _PlantUML: http://plantuml.sourceforge.net
+.. _Sabayon: http://www.sabayon.org
+.. _Gentoo: http://www.gentoo.org
+.. _layman: http://wiki.gentoo.org/wiki/Layman
+.. _Graphviz: http://www.graphviz.org
+.. _Pyhton-Markdown: http://pythonhosted.org/Markdown
+.. _pandoc: http://johnmacfarlane.net/pandoc
+.. _Haskell: http://www.haskell.org/haskellwiki/Haskell
+.. _Python:: http://www.python.org
+.. _Pelican: http://docs.getpelican.com/en
diff --git a/pelican-plugins/plantuml/__init__.py b/pelican-plugins/plantuml/__init__.py
new file mode 100644
index 0000000..f883239
--- /dev/null
+++ b/pelican-plugins/plantuml/__init__.py
@@ -0,0 +1 @@
+from .plantuml_rst import *
diff --git a/pelican-plugins/plantuml/generateUmlDiagram.py b/pelican-plugins/plantuml/generateUmlDiagram.py
new file mode 100644
index 0000000..65c2679
--- /dev/null
+++ b/pelican-plugins/plantuml/generateUmlDiagram.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+import logging
+import os
+import tempfile
+from zlib import adler32
+from subprocess import Popen, PIPE
+from pelican import logger
+
+
+def generate_uml_image(path, plantuml_code, imgformat):
+    tf = tempfile.NamedTemporaryFile(delete=False)
+    tf.write('@startuml\n'.encode('utf8'))
+    tf.write(plantuml_code.encode('utf8'))
+    tf.write('\n@enduml'.encode('utf8'))
+    tf.flush()
+
+    logger.debug("[plantuml] Temporary PlantUML source at "+(tf.name))
+
+    if imgformat == 'png':
+        imgext = ".png"
+        outopt = "-tpng"
+    elif imgformat == 'svg':
+        imgext = ".svg"
+        outopt = "-tsvg"
+    else:
+        logger.error("Bad uml image format '"+imgformat+"', using png")
+        imgext = ".png"
+        outopt = "-tpng"
+
+    # make a name
+    name = tf.name+imgext
+    # build cmd line
+    cmdline = ['plantuml', '-o', path, outopt, tf.name]
+
+    try:
+        logger.debug("[plantuml] About to execute "+" ".join(cmdline))
+        p = Popen(cmdline, stdout=PIPE, stderr=PIPE)
+        out, err = p.communicate()
+    except Exception as exc:
+        raise Exception('Failed to run plantuml: %s' % exc)
+    else:
+        if p.returncode == 0:
+            # diagram was correctly generated, we can remove the temporary file (if not debugging)
+            if not logger.isEnabledFor(logging.DEBUG):
+                os.remove(tf.name)
+            # renaming output image using an hash code, just to not pollute
+            # output directory with a growing number of images
+            name = os.path.join(path, os.path.basename(name))
+            newname = os.path.join(path, "%08x" % (adler32(plantuml_code.encode()) & 0xffffffff))+imgext
+
+            if os.path.exists(newname):
+                os.remove(newname)
+
+            os.rename(name, newname)
+            return os.path.basename(newname)
+        else:
+            # the temporary file is still available as aid understanding errors
+            raise RuntimeError('Error calling plantuml: %s' % err)
diff --git a/pelican-plugins/plantuml/pandoc-plantuml b/pelican-plugins/plantuml/pandoc-plantuml
new file mode 100755
index 0000000..abc5a30
--- /dev/null
+++ b/pelican-plugins/plantuml/pandoc-plantuml
@@ -0,0 +1,89 @@
+#!/usr/bin/runhaskell
+{-|
+
+  Script adapted from pandoc-plantuml-filter by Kurt Bonne
+  Original source at https://github.com/kbonne/pandoc-plantuml-filter.git
+
+  This script is meant to be run by pandoc executed by the pandoc_reader pelican plugin.
+  I've changed output paths to be compatibile with pelican output structure.
+
+  If using the pandoc_reader pelican plugin with this script, the plantuml plugin is not necessary.
+
+  Installation:
+  -------------
+    This script requires Haskell, but if you are using pandoc, it's already installed :-)
+    Copy this file in your pelican project, in the same directory of pelicanconf.py, and make sure it is executable.
+
+    In the pelicanconf.py configure the need plugins:
+
+      PLUGINS = ['pandoc_reader']
+      PANDOC_ARGS = ['--filter=pandoc-plantuml']
+
+    If this script will be putted in a different location, adapt the PANDOC_ARGS value.
+
+  Usage:
+  ------
+    In Markdown posts use the following syntax to include PlantUML diagrams:
+
+    ```plantuml
+    @startuml
+       Alice -> Bob: Authentication Request
+       Bob --> Alice: Authentication Response
+
+       Alice -> Bob: Another authentication Request
+       Alice <-- Bob: another authentication Response
+    @enduml
+    ```
+
+    Rendered images will bu put in the output/images folder.
+-}
+
+import Text.Pandoc.JSON
+import Data.ByteString.Lazy (hGetContents, hPut)
+import Data.ByteString.Lazy.UTF8 (fromString)
+import Data.Digest.Pure.SHA (sha1, showDigest)
+import System.IO (hClose, hPutStr, IOMode(..), openBinaryFile, hPutStrLn, stderr)
+import System.Process
+import System.Directory
+
+processBlocks :: Block -> IO Block
+processBlocks b =
+  case b of
+    CodeBlock (_ , ["plantuml"], _) content -> plantUMLToImg content
+    _ -> return b
+
+plantUMLToImg :: String -> IO Block
+plantUMLToImg content =  do
+  path <- renderImage content
+  
+  --hPutStrLn stderr "dopo renderImage"
+
+  return $ Para [Image [] (path, "")]
+
+renderImage :: String -> IO String
+renderImage content = do
+  createDirectoryIfMissing (True) "output/images"
+  let path = uniqueName content ++ ".png"
+  (Just hIn, Just hOut, _, _) <-
+    createProcess (proc "plantuml" ["-pipe", "-tepg"]){ std_in = CreatePipe,
+                                                        std_out = CreatePipe }
+  hPutStr hIn content
+  hClose hIn
+
+  let outPath = "output/images/" ++ path
+  hFile <- openBinaryFile outPath WriteMode
+  img <- hGetContents hOut
+  hPut hFile img
+
+  hClose hFile
+  hClose hOut
+
+  let imgPath = "images/" ++ path
+
+  return imgPath
+
+uniqueName :: String -> String
+uniqueName = showDigest . sha1 . fromString
+
+main :: IO ()
+main = toJSONFilter processBlocks
diff --git a/pelican-plugins/plantuml/plantuml_md.py b/pelican-plugins/plantuml/plantuml_md.py
new file mode 100644
index 0000000..0fddd8b
--- /dev/null
+++ b/pelican-plugins/plantuml/plantuml_md.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+"""
+   PlantUML_ Extension for Python-Markdown_
+   ========================================
+
+   Syntax:
+
+       ::uml:: [format="png|svg"] [classes="class1 class2 ..."] [alt="text for alt"]
+          PlantUML script diagram
+       ::end-uml::
+
+   Example:
+
+       ::uml:: format="png" classes="uml myDiagram" alt="My super diagram"
+          Goofy ->  MickeyMouse: calls
+          Goofy <-- MickeyMouse: responds
+       ::end-uml::
+
+   Options are optional, but if present must be specified in the order format, classes, alt.
+   The option value may be enclosed in single or double quotes.
+
+.. _Python-Markdown: http://pythonhosted.org/Markdown/
+.. _PlantUML: http://plantuml.sourceforge.net/
+"""
+import os
+import re
+import markdown
+from markdown.util import etree
+from .generateUmlDiagram import generate_uml_image
+
+# For details see https://pythonhosted.org/Markdown/extensions/api.html#blockparser
+class PlantUMLBlockProcessor(markdown.blockprocessors.BlockProcessor):
+    # Regular expression inspired by the codehilite Markdown plugin
+    RE = re.compile(r'''::uml::
+                        \s*(format=(?P<quot>"|')(?P<format>\w+)(?P=quot))?
+                        \s*(classes=(?P<quot1>"|')(?P<classes>[\w\s]+)(?P=quot1))?
+                        \s*(alt=(?P<quot2>"|')(?P<alt>[\w\s"']+)(?P=quot2))?
+                    ''', re.VERBOSE)
+    # Regular expression for identify end of UML script
+    RE_END = re.compile(r'::end-uml::\s*$')
+
+    def test(self, parent, block):
+        return self.RE.search(block)
+
+    def run(self, parent, blocks):
+        block = blocks.pop(0)
+        text = block
+
+        # Parse configuration params
+        m = self.RE.search(block)
+        format  = m.group('format')  if m.group('format')  else self.config['format']
+        classes = m.group('classes') if m.group('classes') else self.config['classes']
+        alt     = m.group('alt')     if m.group('alt')     else self.config['alt']
+
+        # Read blocks until end marker found
+        while blocks and not self.RE_END.search(block):
+            block = blocks.pop(0)
+            text = text + '\n' + block
+        else:
+            if not blocks:
+                raise RuntimeError("[plantuml] UML block not closed, text is:\n"+text)
+
+        # Remove block header and footer
+        text = re.sub(self.RE, "", re.sub(self.RE_END, "", text))
+
+        path = os.path.abspath(os.path.join('output', 'images'))
+        if not os.path.exists(path):
+            os.makedirs(path)
+
+        # Generate image from PlantUML script
+        imageurl = self.config['siteurl']+'/images/'+generate_uml_image(path, text, format)
+        # Create image tag and append to the document
+        etree.SubElement(parent, "img", src=imageurl, alt=alt, attrib={'class':classes})
+
+
+# For details see https://pythonhosted.org/Markdown/extensions/api.html#extendmarkdown
+class PlantUMLMarkdownExtension(markdown.Extension):
+    # For details see https://pythonhosted.org/Markdown/extensions/api.html#configsettings
+    def __init__(self, *args, **kwargs):
+        self.config = {
+            'classes': ["uml","Space separated list of classes for the generated image. Default uml."],
+            'alt'    : ["uml diagram", "Text to show when image is not available."],
+            'format' : ["png", "Format of image to generate (png or svg). Default png."],
+            'siteurl': ["", "URL of document, used as a prefix for the image diagram."]
+        }
+
+        super(PlantUMLMarkdownExtension, self).__init__(*args, **kwargs)
+
+    def extendMarkdown(self, md, md_globals):
+        blockprocessor = PlantUMLBlockProcessor(md.parser)
+        blockprocessor.config = self.getConfigs()
+        md.parser.blockprocessors.add('plantuml', blockprocessor, '>code')
+
+def makeExtension(**kwargs):
+    return PlantUMLMarkdownExtension(**kwargs)
diff --git a/pelican-plugins/plantuml/plantuml_rst.py b/pelican-plugins/plantuml/plantuml_rst.py
new file mode 100644
index 0000000..d753f34
--- /dev/null
+++ b/pelican-plugins/plantuml/plantuml_rst.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+"""Custom reST_ directive for plantuml_ integration.
+   Adapted from ditaa_rst plugin.
+
+.. _reST: http://docutils.sourceforge.net/rst.html
+.. _plantuml: http://plantuml.sourceforge.net/
+"""
+
+import sys
+import os
+
+from docutils.nodes import image, literal_block
+from docutils.parsers.rst import Directive, directives
+from pelican import signals, logger
+
+from .generateUmlDiagram import generate_uml_image
+
+
+global_siteurl = "" # URL of the site, filled on plugin initialization
+
+
+class PlantUML_rst(Directive):
+    """ reST directive for PlantUML """
+    required_arguments = 0
+    optional_arguments = 0
+    has_content = True
+
+    global global_siteurl
+
+    option_spec = {
+        'class' : directives.class_option,
+        'alt'   : directives.unchanged,
+        'format': directives.unchanged,
+    }
+
+    def run(self):
+        path = os.path.abspath(os.path.join('output', 'images'))
+        if not os.path.exists(path):
+            os.makedirs(path)
+
+        nodes = []
+        body = '\n'.join(self.content)
+
+        try:
+            uml_format = self.options.get('format', 'png')
+            url = global_siteurl+'/images/'+generate_uml_image(path, body, uml_format)
+        except Exception as exc:
+            error = self.state_machine.reporter.error(
+                'Failed to run plantuml: %s' % exc,
+                literal_block(self.block_text, self.block_text),
+                line=self.lineno)
+            nodes.append(error)
+        else:
+            alt = self.options.get('alt', 'uml diagram')
+            classes = self.options.pop('class', ['uml'])
+            imgnode = image(uri=url, classes=classes, alt=alt)
+            nodes.append(imgnode)
+
+        return nodes
+
+def pelican_init(pelicanobj):
+
+    global global_siteurl
+    global_siteurl = pelicanobj.settings['SITEURL']
+
+    """ Prepare configurations for the MD plugin """
+    try:
+        import markdown
+        from .plantuml_md import PlantUMLMarkdownExtension
+    except:
+        # Markdown not available
+        logger.debug("[plantuml] Markdown support not available")
+        return
+
+    # Register the Markdown plugin
+    config = { 'siteurl': pelicanobj.settings['SITEURL'] }
+
+    try:
+        if 'MD_EXTENSIONS' in pelicanobj.settings.keys(): # pre pelican 3.7.0
+            pelicanobj.settings['MD_EXTENSIONS'].append(PlantUMLMarkdownExtension(config))
+        elif 'MARKDOWN' in pelicanobj.settings.keys() and \
+             not ('extension_configs' in pelicanobj.settings['MARKDOWN']['extension_configs']):  # from pelican 3.7.0
+            pelicanobj.settings['MARKDOWN']['extension_configs']['plantuml.plantuml_md'] = config
+    except:
+        logger.error("[plantuml] Unable to configure plantuml markdown extension")
+
+
+def register():
+    """Plugin registration."""
+    signals.initialized.connect(pelican_init)
+    directives.register_directive('uml', PlantUML_rst)
diff --git a/pelican-plugins/plantuml/test_data/sequence.uml b/pelican-plugins/plantuml/test_data/sequence.uml
new file mode 100755
index 0000000..d0f7d79
--- /dev/null
+++ b/pelican-plugins/plantuml/test_data/sequence.uml
@@ -0,0 +1,7 @@
+@startuml
+Alice -> Bob: Authentication Request
+Bob --> Alice: Authentication Response
+
+Alice -> Bob: Another authentication Request
+Alice <-- Bob: another authentication Response
+@enduml
\ No newline at end of file
diff --git a/pelican-plugins/plantuml/test_plantuml.py b/pelican-plugins/plantuml/test_plantuml.py
new file mode 100644
index 0000000..26aa8ab
--- /dev/null
+++ b/pelican-plugins/plantuml/test_plantuml.py
@@ -0,0 +1,18 @@
+import os
+from os.path import dirname, join
+import unittest
+
+from .generateUmlDiagram import generate_uml_image
+
+
+PARENT_DIR = dirname(__file__)
+
+
+class GenerateUmlDiagramTest(unittest.TestCase):
+    maxDiff = None
+    def test_sequence_diagram(self):
+        with open(join(PARENT_DIR, 'test_data/sequence.uml')) as sequence_file:
+            generated_img_path = join(PARENT_DIR, generate_uml_image(PARENT_DIR, sequence_file.read(), 'svg'))
+        with open(generated_img_path) as actual_svg_file:
+            self.assertIn('<svg ', actual_svg_file.read())
+        os.remove(generated_img_path)
diff --git a/pelican-plugins/post_stats/__init__.py b/pelican-plugins/post_stats/__init__.py
new file mode 100644
index 0000000..2313bd5
--- /dev/null
+++ b/pelican-plugins/post_stats/__init__.py
@@ -0,0 +1 @@
+from .post_stats import *
diff --git a/pelican-plugins/post_stats/post_stats.py b/pelican-plugins/post_stats/post_stats.py
new file mode 100644
index 0000000..80cfdcd
--- /dev/null
+++ b/pelican-plugins/post_stats/post_stats.py
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+"""
+Post Statistics
+========================
+
+This plugin calculates various statistics about a post and stores them in an article.stats dictionary:
+
+wc: how many words
+read_mins: how many minutes to read this article, based on 250 wpm (http://en.wikipedia.org/wiki/Words_per_minute#Reading_and_comprehension)
+word_counts: frquency count of all the words in the article; can be used for tag/word clouds/
+fi: Flesch-kincaid Index/ Reading Ease
+fk: Flesch-kincaid Grade Level
+
+"""
+
+from pelican import signals
+from bs4 import BeautifulSoup
+import re
+from collections import Counter
+
+from .readability import *
+
+
+def calculate_stats(instance):
+
+    if instance._content is not None:
+        stats = {}
+        content = instance._content
+
+        # How fast do average people read?
+        WPM = 250
+
+        # Use BeautifulSoup to get readable/visible text
+        raw_text = BeautifulSoup(content, 'html.parser').getText()
+
+        # Process the text to remove entities
+        entities = r'\&\#?.+?;'
+        raw_text = raw_text.replace('&nbsp;', ' ')
+        raw_text = re.sub(entities, '', raw_text)
+
+        # Flesch-kincaid readbility stats counts sentances,
+        # so save before removing punctuation
+        tmp = raw_text
+
+        # Process the text to remove punctuation
+        drop = u'.,?!@#$%^&*()_+-=\|/[]{}`~:;\'\"‘’—…“”'
+        raw_text = raw_text.translate(dict((ord(c), u'') for c in drop))
+
+        # Count the words in the text
+        words = raw_text.lower().split()
+        word_count = Counter(words)
+
+        # Return the stats
+        stats['word_counts'] = word_count
+        stats['wc'] = sum(word_count.values())
+
+        # Calulate how long it'll take to read, rounding up
+        stats['read_mins'] = (stats['wc'] + WPM - 1) // WPM
+        if stats['read_mins'] == 0:
+            stats['read_mins'] = 1
+
+        # Calculate Flesch-kincaid readbility stats
+        readability_stats = stcs, words, sbls = text_stats(tmp, stats['wc'])
+        stats['fi'] = "{:.2f}".format(flesch_index(readability_stats))
+        stats['fk'] = "{:.2f}".format(flesch_kincaid_level(readability_stats))
+
+        instance.stats = stats
+
+
+def register():
+    signals.content_object_init.connect(calculate_stats)
diff --git a/pelican-plugins/post_stats/readability.py b/pelican-plugins/post_stats/readability.py
new file mode 100644
index 0000000..b267098
--- /dev/null
+++ b/pelican-plugins/post_stats/readability.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+# Adadpted from here: http://acdx.net/calculating-the-flesch-kincaid-level-in-python/
+# See here for details: http://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_test
+
+from __future__ import division
+import re
+
+
+def mean(seq):
+    return sum(seq) / len(seq)
+
+
+def syllables(word):
+    if len(word) <= 3:
+        return 1
+
+    word = re.sub(r"(es|ed|(?<!l)e)$", "", word)
+    return len(re.findall(r"[aeiouy]+", word))
+
+
+def normalize(text):
+    terminators = ".!?:;"
+    term = re.escape(terminators)
+    text = re.sub(r"[^%s\sA-Za-z]+" % term, "", text)
+    text = re.sub(r"\s*([%s]+\s*)+" % term, ". ", text)
+    return re.sub(r"\s+", " ", text)
+
+
+def text_stats(text, wc):
+    text = normalize(text)
+    stcs = [s.split(" ") for s in text.split(". ")]
+    stcs = [s for s in stcs if len(s) >= 2]
+
+    if wc:
+        words = wc
+    else:
+        words = sum(len(s) for s in stcs)
+
+    sbls = sum(syllables(w) for s in stcs for w in s)
+
+    return len(stcs), words, sbls
+
+
+def flesch_index(stats):
+    stcs, words, sbls = stats
+    if stcs == 0 or words == 0:
+        return 0
+    return 206.835 - 1.015 * (words / stcs) - 84.6 * (sbls / words)
+
+
+def flesch_kincaid_level(stats):
+    stcs, words, sbls = stats
+    if stcs == 0 or words == 0:
+        return 0
+    return 0.39 * (words / stcs) + 11.8 * (sbls / words) - 15.59
diff --git a/pelican-plugins/post_stats/readme.rst b/pelican-plugins/post_stats/readme.rst
new file mode 100644
index 0000000..89fc13b
--- /dev/null
+++ b/pelican-plugins/post_stats/readme.rst
@@ -0,0 +1,49 @@
+Post Statistics
+==================
+
+A Pelican plugin to calculate various statistics about a post and store them in an article.stats dictionary:
+
+- ``wc``: how many words
+- ``read_mins``: how many minutes would it take to read this article, based on 250 wpm (http://en.wikipedia.org/wiki/Words_per_minute#Reading_and_comprehension)
+- ``word_counts``: frquency count of all the words in the article; can be used for tag/word clouds
+- ``fi``: Flesch-kincaid Index/ Reading Ease (see: http://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests)
+- ``fk``: Flesch-kincaid Grade Level
+
+Example:
+
+.. code-block:: python
+
+    {
+        'wc': 2760,
+        'fi': '65.94',
+        'fk': '7.65',
+        'word_counts': Counter({u'to': 98, u'a': 90, u'the': 83, u'of': 50, ...}),
+        'read_mins': 12
+    }
+
+This allows you to output these values in your templates, like this, for example:
+
+.. code-block:: html+jinja
+
+	<p title="~{{ article.stats['wc'] }} words">~{{ article.stats['read_mins'] }} min read</p>
+	<ul>
+	    <li>Flesch-kincaid Index/ Reading Ease: {{ article.stats['fi'] }}</li>
+	    <li>Flesch-kincaid Grade Level: {{ article.stats['fk'] }}</li>
+	</ul>
+
+The ``word_counts`` variable is a python ``Counter`` dictionary and looks something like this, with each unique word and it's frequency:
+
+.. code-block:: python
+
+	Counter({u'to': 98, u'a': 90, u'the': 83, u'of': 50, u'karma': 50, .....
+
+and can be used to create a tag/word cloud for a post.
+
+Requirements
+----------------
+
+`post_stats` requires BeautifulSoup.
+
+.. code-block:: console
+
+    $ pip install beautifulsoup4
diff --git a/pelican-plugins/random_article/Readme.md b/pelican-plugins/random_article/Readme.md
new file mode 100644
index 0000000..fcf00a1
--- /dev/null
+++ b/pelican-plugins/random_article/Readme.md
@@ -0,0 +1,19 @@
+Random Article Plugin For Pelican
+========================
+
+This plugin generates a html file which redirect to a random article
+using javascript's `window.location`. The generated html file is 
+saved at `SITEURL`.
+
+Only published articles are listed to redirect.
+
+Usage
+-----
+
+To use it you have to add in your config file the name of the file to use:
+
+    RANDOM = 'random.html'
+
+Then in some template you add:
+
+    <a href="{{ SITEURL }}/{{ RANDOM }}">random article</a>
diff --git a/pelican-plugins/random_article/__init__.py b/pelican-plugins/random_article/__init__.py
new file mode 100644
index 0000000..b59a6a0
--- /dev/null
+++ b/pelican-plugins/random_article/__init__.py
@@ -0,0 +1 @@
+from .random_article import *
diff --git a/pelican-plugins/random_article/random_article.py b/pelican-plugins/random_article/random_article.py
new file mode 100644
index 0000000..61e06d9
--- /dev/null
+++ b/pelican-plugins/random_article/random_article.py
@@ -0,0 +1,91 @@
+# -*- coding: utf-8 -*-
+"""
+Random Article Plugin For Pelican
+========================
+
+This plugin generates a html file which redirect to a random article
+using javascript's window.location. The generated html file is 
+saved at SITEURL.
+"""
+
+from __future__ import unicode_literals
+
+import os.path
+import logging
+
+from codecs import open
+
+from pelican import signals
+
+log = logging.getLogger(__name__)
+
+HTML_TOP = """
+<!DOCTYPE html>
+<head>
+    <title>random</title>
+    <script type="text/javascript">
+        function redirect(){
+            var urls = [
+"""
+
+HTML_BOTTOM = """
+        ""];
+
+        var index = Math.floor(Math.random() * (urls.length-1));
+        window.location = urls[index];
+    }
+</script>
+<body onload="redirect()">
+</body>
+</html>
+"""
+
+ARTICLE_URL = """ "{0}/{1}",
+"""
+
+
+class RandomArticleGenerator(object):
+    """
+        The structure is derived from sitemap plugin
+    """
+
+    def __init__(self, context, settings, path, theme, output_path, *null):
+
+        self.output_path = output_path
+        self.context = context
+        self.siteurl = settings.get('SITEURL')
+        self.randomurl = settings.get('RANDOM')
+
+    def write_url(self, article, fd):
+        if getattr(article, 'status', 'published') != 'published':
+            return
+
+        page_path = os.path.join(self.output_path, article.url)
+        if not os.path.exists(page_path):
+            return
+
+        fd.write(ARTICLE_URL.format(self.siteurl, article.url))
+
+
+    def generate_output(self, writer):
+        path = os.path.join(self.output_path, self.randomurl)
+        articles = self.context['articles']
+        log.info('writing %r', path)
+
+        if len(articles) == 0:
+            return
+
+        with open(path, 'w', encoding='utf-8') as fd:
+            fd.write(HTML_TOP)
+
+            for art in articles:
+                self.write_url(art, fd)
+
+            fd.write(HTML_BOTTOM)
+
+def get_generators(generators):
+    return RandomArticleGenerator
+
+
+def register():
+    signals.get_generators.connect(get_generators)
diff --git a/pelican-plugins/read_more_link/Readme.md b/pelican-plugins/read_more_link/Readme.md
new file mode 100644
index 0000000..12baeec
--- /dev/null
+++ b/pelican-plugins/read_more_link/Readme.md
@@ -0,0 +1,31 @@
+Read More Link
+===
+
+**NOTE:** [This plugin has been moved to its own repository](https://github.com/pelican-plugins/read-more). 
+Please file any issues/PRs there. Once all plugins have been migrated to the 
+[new Pelican Plugins organization](https://github.com/pelican-plugins>), 
+this monolithic repository will be archived.
+
+**Author**: Vuong Nguyen (http://vuongnguyen.com)
+
+This plugin inserts an inline "read more" or "continue" link into the last html element of the object summary.
+
+For more information, please visit: http://vuongnguyen.com/creating-inline-read-more-link-python-pelican-lxml.html
+
+Requirements
+---
+
+    lxml - for parsing html elements
+
+Settings
+---
+    # This settings indicates that you want to create summary at a certain length
+    SUMMARY_MAX_LENGTH = 50
+
+    # This indicates what goes inside the read more link
+    READ_MORE_LINK = None (ex: '<span>continue</span>')
+
+    # This is the format of the read more link
+    READ_MORE_LINK_FORMAT = '<a class="read-more" href="/{url}">{text}</a>'
+
+
diff --git a/pelican-plugins/read_more_link/__init__.py b/pelican-plugins/read_more_link/__init__.py
new file mode 100644
index 0000000..6b3673b
--- /dev/null
+++ b/pelican-plugins/read_more_link/__init__.py
@@ -0,0 +1 @@
+from .read_more_link import *
\ No newline at end of file
diff --git a/pelican-plugins/read_more_link/read_more_link.py b/pelican-plugins/read_more_link/read_more_link.py
new file mode 100644
index 0000000..bcb5c6e
--- /dev/null
+++ b/pelican-plugins/read_more_link/read_more_link.py
@@ -0,0 +1,85 @@
+# -*- coding: utf-8 -*-
+"""
+Read More Link
+===========================
+
+This plugin inserts an inline "read more" or "continue" link into the last html element of the object summary.
+
+For more information, please visit: http://vuongnguyen.com/creating-inline-read-more-link-python-pelican-lxml.html
+
+"""
+
+from pelican import signals, contents
+from pelican.utils import truncate_html_words
+from pelican.generators import ArticlesGenerator
+
+try:
+    from lxml.html import fragment_fromstring, fragments_fromstring, tostring
+    from lxml.etree import ParserError
+except ImportError:
+    raise Exception("Unable to find lxml. To use READ_MORE_LINK, you need lxml")
+
+
+def insert_into_last_element(html, element):
+    """
+    function to insert an html element into another html fragment
+    example:
+        html = '<p>paragraph1</p><p>paragraph2...</p>'
+        element = '<a href="/read-more/">read more</a>'
+        ---> '<p>paragraph1</p><p>paragraph2...<a href="/read-more/">read more</a></p>'
+    """
+    try:
+        item = fragment_fromstring(element)
+    except (ParserError, TypeError) as e:
+        item = fragment_fromstring('<span></span>')
+
+    try:
+        doc = fragments_fromstring(html)
+        doc[-1].append(item)
+
+        return ''.join(tostring(e) for e in doc)
+    except (ParserError, TypeError) as e:
+        return ''
+
+def insert_read_more_link(instance):
+    """
+    Insert an inline "read more" link into the last element of the summary
+    :param instance:
+    :return:
+    """
+
+    # only deals with Article type
+    if type(instance) != contents.Article: return
+
+
+    SUMMARY_MAX_LENGTH = instance.settings.get('SUMMARY_MAX_LENGTH')
+    READ_MORE_LINK = instance.settings.get('READ_MORE_LINK', None)
+    READ_MORE_LINK_FORMAT = instance.settings.get('READ_MORE_LINK_FORMAT',
+                                                  '<a class="read-more" href="/{url}">{text}</a>')
+
+    if not (SUMMARY_MAX_LENGTH and READ_MORE_LINK and READ_MORE_LINK_FORMAT): return
+
+    if hasattr(instance, '_summary') and instance._summary:
+        summary = instance._summary
+    else:
+        summary = truncate_html_words(instance.content, SUMMARY_MAX_LENGTH)
+
+    if summary != instance.content:
+        read_more_link = READ_MORE_LINK_FORMAT.format(url=instance.url, text=READ_MORE_LINK)
+        instance._summary = insert_into_last_element(summary, read_more_link)
+
+
+def run_plugin(generators):
+    for generator in generators:
+        if isinstance(generator, ArticlesGenerator):
+            for article in generator.articles:
+                insert_read_more_link(article)
+
+
+def register():
+    try:
+        signals.all_generators_finalized.connect(run_plugin)
+    except AttributeError:
+        # NOTE: This may result in #314 so shouldn't really be relied on
+        # https://github.com/getpelican/pelican-plugins/issues/314
+        signals.content_object_init.connect(insert_read_more_link)
diff --git a/pelican-plugins/read_more_link/requirements.txt b/pelican-plugins/read_more_link/requirements.txt
new file mode 100644
index 0000000..41aa5f1
--- /dev/null
+++ b/pelican-plugins/read_more_link/requirements.txt
@@ -0,0 +1 @@
+lxml>=3.2.1
\ No newline at end of file
diff --git a/pelican-plugins/readtime/README.md b/pelican-plugins/readtime/README.md
new file mode 100644
index 0000000..e712343
--- /dev/null
+++ b/pelican-plugins/readtime/README.md
@@ -0,0 +1,41 @@
+# 'pelican-readtime' - A Read Time Plugin for Pelican Static Site Generator
+
+An article estimated read time plugin for Pelican static site generator. After Pelican generated the content of each page, the plugin read through the generated HTML content and strip all the tags, count all the word, then utilize average human read speed to calculate the read time of each article. The read time is passed over to the 'content' object of the article so Jinja template can use it to display the read time on wherever appropriate.
+
+
+Demo
+-----
+The plugin can be embedded into your site's template and look like this:<br>
+![Pelican Read Time Demo](demo.png )<br>
+An example can be found in my own blog [here](https://wayofnumbers.github.io/).<br>
+
+Usage
+-----
+
+This plugin only uses standard modules(re, html, math, etc), so no extra module installation like BeautifuSoup. To use it, just add the plugin name to the **pelicanconf.py** file.
+```python
+    PLUGINS=[ ... , 'pelican-readtime']
+```
+Then you can put the following code in whichever template you what, like *article.html*. 
+```html
+    {% if article.readtime %}
+    <div><b>Read in {{article.readtime.minutes}} min.</b></div>
+    {% endif %}
+```
+
+You can also add some styling to it like so:
+```html
+    {% if article.readtime %}
+    <span><p style="text-align:right; color:#aaaaaa; ">&nbsp Estimated read time: {{article.readtime.minutes}} min.</p></span>
+    {% endif %}
+```
+
+Credits
+-----
+This is a revised version of [jmaister's readtime plugin](https://github.com/jmaister/readtime). I added some more comments and tweaked the code so it runs smoothly on Python 3.6
+
+
+Reference
+-----
+[1] Wikipedia - [Words per minute](https://en.wikipedia.org/wiki/Words_per_minute) <br>
+[2] Medium - [Read Time](https://help.medium.com/hc/en-us/articles/214991667-Read-time) <br>
diff --git a/pelican-plugins/readtime/__init__.py b/pelican-plugins/readtime/__init__.py
new file mode 100644
index 0000000..8f75495
--- /dev/null
+++ b/pelican-plugins/readtime/__init__.py
@@ -0,0 +1 @@
+from .readtime import *
diff --git a/pelican-plugins/readtime/demo.png b/pelican-plugins/readtime/demo.png
new file mode 100644
index 0000000000000000000000000000000000000000..a600e4028a137fe2c14d41b83779d7cd91ffd4eb
GIT binary patch
literal 10776
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
A#sB~S

literal 0
HcmV?d00001

diff --git a/pelican-plugins/readtime/readtime.py b/pelican-plugins/readtime/readtime.py
new file mode 100644
index 0000000..9cd2099
--- /dev/null
+++ b/pelican-plugins/readtime/readtime.py
@@ -0,0 +1,55 @@
+import re
+import math
+
+from pelican import signals
+from html.parser import HTMLParser  #use html.parser for Python 3.6
+
+
+# http://en.wikipedia.org/wiki/Words_per_minute
+WPM = 230.0
+
+
+class MLStripper(HTMLParser):
+    def __init__(self):
+        super().__init__()    	# subclassing HTMLParser, also need to calling
+				# super class's '__init__' method
+        self.reset()
+        self.fed = []
+
+    #this method is called whenever a 'data' is encountered.
+    def handle_data(self, d):
+        self.fed.append(d)
+
+    # join all content word into one long sentence for further processing
+    def get_data(self):
+        return ''.join(self.fed)
+
+
+def strip_tags(html):
+    s = MLStripper()
+    s.feed(html)   		# Feed the class with html content, get the fed list
+    return s.get_data()
+
+
+def calculate_readtime(content_object):
+    if content_object._content is not None:
+        content = content_object._content	# get the content html from Pelican
+
+        text = strip_tags(content)		#strip tags and get long sentence
+        words = re.split(r'[^0-9A-Za-z]+', text) # split the long sentence into list of words
+
+        num_words = len(words)  	# count the words
+        minutes = int(math.ceil(num_words / WPM))  #calculate the minutes
+
+	    #set minimum read time to 1 minutes.
+        if minutes == 0:
+            minutes = 1
+
+        content_object.readtime = {
+            "minutes": minutes,
+        }
+
+
+def register():
+    signals.content_object_init.connect(calculate_readtime)   # connect with 'content_object_init' signal.
+
diff --git a/pelican-plugins/reddit_poster/.gitignore b/pelican-plugins/reddit_poster/.gitignore
new file mode 100644
index 0000000..1d17dae
--- /dev/null
+++ b/pelican-plugins/reddit_poster/.gitignore
@@ -0,0 +1 @@
+.venv
diff --git a/pelican-plugins/reddit_poster/Readme.md b/pelican-plugins/reddit_poster/Readme.md
new file mode 100644
index 0000000..bfb63b4
--- /dev/null
+++ b/pelican-plugins/reddit_poster/Readme.md
@@ -0,0 +1,51 @@
+Reddit poster posts articles to reddit
+===================================
+
+You can use the 'subreddit' attribute in you articles to specify which 
+subbreddit the article should be post in aside of your default sub.
+
+We look for the subreddit in the metadata.
+Then try to find a post that has the same title as this article.
+If we can't find a post we create it.
+
+## Usage
+I followed these steps for praw: https://praw.readthedocs.io/en/latest/getting_started/authentication.html#script-application
+Summeraized:
++ Go to https://www.reddit.com/prefs/apps/ 
++ create a script for example named 'reddit-poster'.
++ redirect uri is unused so can be http://localhost:8080
++ about uri is probably some page on your website, not important either I think
+
+This will create an 'application', ie it let's reddit know you have a script by 
+using the secret generated.
+Interesting from this screen is the secret and the app id. copy those over 
+somewhere.
+
+We need 4 pieces of information from you which you must *not* commit to source 
+code. These should all be considered private.
+This script will expect these values to be set in the settings.
+You should store them for real in either an ignored file, environment variables,
+or pass them each time as command line options.
+Also make sure to set your SITEURL, for proper backlinks
+
+https://praw.readthedocs.io/en/latest/code_overview/models/subreddit.html#praw.models.Subreddit.search
+https://praw.readthedocs.io/en/latest/code_overview/models/subreddit.html#praw.models.Subreddit.submit
+
+### Config example
+
+```python
+REDDIT_POSTER_AUTH = {
+    'username': 'blah',
+    'password': 'pass',
+    'client_id': 'client',
+    'client_secret': 'secret',
+    'user_agent': 'python:pelican_redditposter:1 by /u/jappieofficial'
+}
+REDDIT_POSTER_COLLECT_SUB = "jappie"
+```
+## Dependencies
++ praw 5.4
+
+On fedora the praw in yum is too old, however the pip requests doesn't 
+work for some reason, so I installed praw with pip and requests with dnf 
+which seems to work (requests probably needed some sys lib or something)
diff --git a/pelican-plugins/reddit_poster/__init__.py b/pelican-plugins/reddit_poster/__init__.py
new file mode 100644
index 0000000..1f5334e
--- /dev/null
+++ b/pelican-plugins/reddit_poster/__init__.py
@@ -0,0 +1,83 @@
+"""
+Reddit poster posts articles to reddit
+
+You can use the 'subreddit' attribute in you articles to specify which 
+subbreddit the article should be post in aside of your default sub.
+"""
+
+from collections import OrderedDict
+
+from pelican import signals
+from pelican.generators import Generator
+from functools import partial
+import logging
+import praw
+import lxml.html
+
+log = logging.getLogger(__name__)
+
+def cross_post(reddit, submission, subs):
+    subreddits = [] if subs is None else subs.split(' ')
+    log.debug("Posting in marked subs: %s", subreddits)
+    for sub in subreddits:
+        if sub == '':
+            continue
+        log.debug("Posting in %s" % sub)
+        subreddit = reddit.subreddit(sub)
+        subreddit.subscribe() # must be subscribed to crosspost
+        submission.crosspost(subreddit)
+
+def make_posts(generator, metadata, url):
+    """
+    Make posts on reddit if it's not a draft, on whatever subs are specified
+    """
+    reddit = generator.get_reddit()
+    title =  lxml.html.fromstring(metadata['title']).text_content()
+    if reddit is None:
+        log.info("Reddit plugin not enabled")
+        return
+    if metadata.get('status') == "draft": # people don't want to post drafts
+        log.debug("ignoring draft %s" % title)
+        return
+
+    collection = generator.settings['REDDIT_POSTER_COLLECT_SUB']
+    sub = reddit.subreddit(collection)
+    results = sub.search(title)
+    if len([result for result in results]) > 0:
+        log.debug("ignoring %s because it is already on sub %s " % (title, collection))
+        # post already was made to this sub
+        return
+    try:
+        submission = sub.submit(title, url=url, resubmit=False)
+        cross_post(reddit, submission, metadata.get('subreddit'))
+    except praw.exceptions.APIException as e:
+        log.error("got an api exception: %s", e)
+    except AssertionError as e:
+        log.error("Received an assertion error %s", e)
+
+
+def init_reddit(generator):
+    """
+    this is a hack to make sure the reddit object keeps track of a session
+    trough article scanning, speeding up networking as the connection can be 
+    kept alive.
+    """
+    auth_dict = generator.settings.get('REDDIT_POSTER_AUTH')
+    if auth_dict is None:
+        log.info("Could not find REDDIT_POSTER_AUTH key in settings, reddit plugin won't function")
+        generator.get_reddit = lambda: None
+        return
+
+    reddit = praw.Reddit(**auth_dict)
+    generator.get_reddit = lambda: reddit # .. openworld has it's merrits
+
+def content_written(generator, content):
+    """
+    create a url and call make posts (which has less information)
+    """
+    url = "%s/%s" % (generator.settings.get('SITEURL', 'http://localhost:8000'), content.url)
+    make_posts(generator, content.metadata, url)
+
+def register():
+    signals.article_generator_write_article.connect(content_written)
+    signals.article_generator_init.connect(init_reddit)
diff --git a/pelican-plugins/reddit_poster/redditconf.py.example b/pelican-plugins/reddit_poster/redditconf.py.example
new file mode 100644
index 0000000..fe28500
--- /dev/null
+++ b/pelican-plugins/reddit_poster/redditconf.py.example
@@ -0,0 +1,9 @@
+REDDIT_POSTER_AUTH = {
+    'username': 'blah',
+    'password': 'pass',
+    'client_id': 'client',
+    'client_secret': 'secret',
+    'user_agent': 'python:pelican_redditposter:1 by /u/jappieofficial'
+}
+# a sub where all the posts get collected
+REDDIT_POSTER_COLLECT_SUB = "jappie"
\ No newline at end of file
diff --git a/pelican-plugins/reddit_poster/requirements.txt b/pelican-plugins/reddit_poster/requirements.txt
new file mode 100755
index 0000000..9d9d90a
--- /dev/null
+++ b/pelican-plugins/reddit_poster/requirements.txt
@@ -0,0 +1 @@
+praw
\ No newline at end of file
diff --git a/pelican-plugins/related_posts/Readme.rst b/pelican-plugins/related_posts/Readme.rst
new file mode 100644
index 0000000..0edf4bd
--- /dev/null
+++ b/pelican-plugins/related_posts/Readme.rst
@@ -0,0 +1,38 @@
+Related posts
+-------------
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/related-posts>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
+
+-------------------------------------------------------------------------------
+
+This plugin adds the ``related_posts`` variable to the article's context.
+By default, up to 5 articles are listed. You can customize this value by 
+defining ``RELATED_POSTS_MAX`` in your settings file::
+
+    RELATED_POSTS_MAX = 10
+
+You can then use the ``article.related_posts`` variable in your templates.
+For example::
+
+    {% if article.related_posts %}
+        <ul>
+        {% for related_post in article.related_posts %}
+            <li><a href="{{ SITEURL }}/{{ related_post.url }}">{{ related_post.title }}</a></li>
+        {% endfor %}
+        </ul>
+    {% endif %}
+
+
+Your related posts should share a common tag. You can also use ``related_posts:`` in your post's meta data.
+The 'related_posts:' meta data works together with your existing slugs::
+
+    related_posts: slug1, slug2, slug3, ... slugN
+
+``N`` represents the ``RELATED_POSTS_MAX``.
+
+Additionally, you can specify::
+
+    RELATED_POSTS_SKIP_SAME_CATEGORY = True
+
+in your settings file. With this setting, ``article.related_posts`` will
+contain only related posts from categories other than the original article's.
diff --git a/pelican-plugins/related_posts/__init__.py b/pelican-plugins/related_posts/__init__.py
new file mode 100644
index 0000000..057540e
--- /dev/null
+++ b/pelican-plugins/related_posts/__init__.py
@@ -0,0 +1 @@
+from .related_posts import *
diff --git a/pelican-plugins/related_posts/related_posts.py b/pelican-plugins/related_posts/related_posts.py
new file mode 100644
index 0000000..fbb2426
--- /dev/null
+++ b/pelican-plugins/related_posts/related_posts.py
@@ -0,0 +1,56 @@
+"""
+Related posts plugin for Pelican
+================================
+
+Adds related_posts variable to article's context
+"""
+
+from pelican import signals
+from collections import Counter
+from itertools import chain
+
+
+def add_related_posts(generator):
+    # get the max number of entries from settings
+    # or fall back to default (5)
+    numentries = generator.settings.get('RELATED_POSTS_MAX', 5)
+    # Skip all posts in the same category as the article
+    skipcategory = generator.settings.get('RELATED_POSTS_SKIP_SAME_CATEGORY', False)
+    for article in chain(generator.articles, generator.drafts):
+        # set priority in case of forced related posts
+        if hasattr(article,'related_posts'):
+            # split slugs 
+            related_posts = article.related_posts.split(',')
+            posts = [] 
+            # get related articles
+            for slug in related_posts:
+                i = 0
+                slug = slug.strip()
+                for a in generator.articles:
+                    if i >= numentries: # break in case there are max related psots
+                        break
+                    if a.slug == slug:
+                        posts.append(a)
+                        i += 1
+
+            article.related_posts = posts
+        else:
+            # no tag, no relation
+            if not hasattr(article, 'tags'):
+                continue
+
+            # score = number of common tags
+            related = chain(*(generator.tags[tag] for tag in article.tags))
+            if skipcategory:
+                related = (other for other in related
+                                 if other.category != article.category)
+            scores = Counter(related)
+
+            # remove itself
+            scores.pop(article, None)
+
+            article.related_posts = [other for other, count 
+                in scores.most_common(numentries)]
+
+def register():
+    signals.article_generator_finalized.connect(add_related_posts)
diff --git a/pelican-plugins/render_math/Readme.md b/pelican-plugins/render_math/Readme.md
new file mode 100644
index 0000000..7d541aa
--- /dev/null
+++ b/pelican-plugins/render_math/Readme.md
@@ -0,0 +1,167 @@
+Math Render Plugin For Pelican
+==============================
+
+**NOTE: [This plugin has been moved to its own repository](https://github.com/pelican-plugins/render-math). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.**
+
+This plugin gives pelican the ability to render mathematics. It accomplishes
+this by using the [MathJax](http://www.mathjax.org/) javascript engine.
+
+The plugin also ensures that Typogrify and recognized math "play" nicely together, by
+ensuring [Typogrify](https://github.com/mintchaos/typogrify) does not alter math content.
+
+Both Markdown and reStructuredText is supported.
+
+Requirements
+------------
+
+  * Pelican version *3.6* or above is required.
+  * Typogrify version *2.0.7* or higher is needed for Typogrify to play
+    "nicely" with this plugin. If this version is not available, Typogrify
+    will be disabled for the entire site.
+  * BeautifulSoup4 is required to correct summaries. If BeautifulSoup4 is
+    not installed, summary processing will be ignored, even if specified
+    in user settings.
+
+Installation
+------------
+To enable, ensure that `render_math` plugin is accessible.
+Then add the following to settings.py:
+
+    PLUGINS = ["render_math"]
+
+Your site is now capable of rendering math math using the mathjax JavaScript
+engine. No alterations to the template is needed, just use and enjoy!
+
+However, if you wish, you can set the `auto_insert` setting to `False` which
+will disable the mathjax script from being automatically inserted into the
+content. You would only want to do this if you had control over the template
+and wanted to insert the script manually.
+
+### Typogrify
+In the past, using [Typgogrify](https://github.com/mintchaos/typogrify) would
+alter the math contents resulting in math that could not be rendered by MathJax.
+The only option was to ensure that Typogrify was disabled in the settings.
+
+The problem has been rectified in this plugin, but it requires at a minimum
+[Typogrify version 2.0.7](https://pypi.python.org/pypi/typogrify) (or higher).
+If this version is not present, the plugin will disable Typogrify for the entire
+site.
+
+### BeautifulSoup4
+Pelican creates summaries by truncating the contents to a specified user length.
+The truncation process is oblivious to any math and can therefore destroy
+the math output in the summary.
+
+To restore math, [BeautifulSoup4](https://pypi.python.org/pypi/beautifulsoup4/4.4.0)
+is used. If it is not installed, no summary processing will happen.
+
+Usage
+-----
+### Templates
+No alteration is needed to a template for this plugin to work. Just install
+the plugin and start writing your Math. 
+
+### Settings
+Certain MathJax rendering options can be set. These options 
+are in a dictionary variable called `MATH_JAX` in the pelican
+settings file.
+
+The dictionary can be set with the following keys:
+
+ * `align`: [string] controls how displayed math will be aligned. Can be set to either
+`'left'`, `'right'` or `'center'`. **Default Value**: `'center'`.
+ * `auto_insert`: [boolean] will insert the mathjax script into content that it is
+detected to have math in it. Setting it to false is not recommended.
+**Default Value**: `True`
+ * `indent`: [string] if `align` not set to `'center'`, then this controls the indent
+level. **Default Value**: `'0em'`.
+ * `show_menu`: [boolean] controls whether the mathjax contextual menu is shown.
+**Default Value**: `True`
+ * `process_escapes`: [boolean] controls whether mathjax processes escape sequences.
+**Default Value**: `True`
+ * `mathjax_font`: [string] will force mathjax to use the chosen font. Current choices
+for the font is `sanserif`, `typewriter` or `fraktur`. If this is not set, it will
+use the default font settings. **Default Value**: `default`
+ * `latex_preview`: [string] controls the preview message users are shown while mathjax is
+rendering LaTex. If set to `'Tex'`, then the TeX code is used as the preview 
+(which will be visible until it is processed by MathJax). **Default Value**: `'Tex'`
+ * `color`: [string] controls the color of the mathjax rendered font. **Default Value**: `'inherit'`
+ * `linebreak_automatic`: [boolean] If set, Mathjax will try to *intelligently* break up displayed math
+(Note: It will not work for inline math). This is very useful for a responsive site. It
+is turned off by default due to it potentially being CPU expensive. **Default Value**: `False`
+ * `tex_extensions`: [list] a list of [latex extensions](http://docs.mathjax.org/en/latest/tex.html#tex-and-latex-extensions)
+accepted by mathjax. **Default Value**: `[]` (empty list)
+ * `responsive`: [boolean] tries to make displayed math render responsively. It does by determining if the width
+is less than `responsive_break` (see below) and if so, sets `align` to `left`, `indent` to `0em` and `linebreak_automatic` to `True`.
+**Default Value**: `False` (defaults to `False` for backward compatibility)
+ * `responsive_break`: [integer] a number (in pixels) representing the width breakpoint that is used
+when setting `responsive_align` to `True`. **Default Value**: 768
+ * `process_summary`: [boolean] ensures math will render in summaries and fixes math in that were cut off.
+Requires [BeautifulSoup4](http://www.crummy.com/software/BeautifulSoup/bs4/doc/) be installed. **Default Value**: `True`
+ * `message_style`: [string] This value controls the verbosity of the messages in the lower left-hand corner. Set it to `None` to eliminate all messages.
+**Default Value**: normal
+
+#### Settings Examples
+Make math render in blue and displaymath align to the left:
+
+    MATH_JAX = {'color':'blue','align':left}
+
+Use the [color](http://docs.mathjax.org/en/latest/tex.html#color) and
+[mhchem](http://docs.mathjax.org/en/latest/tex.html#mhchem) extensions:
+    
+    MATH_JAX = {'tex_extensions': ['color.js','mhchem.js']}
+
+#### Resulting HTML
+Inlined math is wrapped in `span` tags, while displayed math is wrapped in `div` tags.
+These tags will have a class attribute that is set to `math` which 
+can be used by template designers to alter the display of the math.
+
+Markdown
+--------
+This plugin implements a custom extension for markdown resulting in math
+being a "first class citizen" for Pelican. 
+
+### Inlined Math
+Math between `$`..`$`, for example, `$`x^2`$`, will be rendered inline
+with respect to the current html block. Note: To use inline math, there
+must *not* be any whitespace before the ending `$`. So for example:
+
+ * **Relevant inline math**: `$e=mc^2$`
+ * **Will not render as inline math**: `$40 vs $50`
+
+### Displayed Math
+Math between `$$`..`$$` will be rendered "block style", for example, `$$`x^2`$$`, will be rendered centered in a
+new paragraph.
+
+#### Other Latex  Display Math commands
+The other LaTeX commands which usually invoke display math mode from text mode
+are supported,
+and are automatically treated like `$$`-style displayed math 
+in that they are rendered "block" style on their own lines.
+For example, `\begin{equation}` x^2 `\end{equation}`,
+will be rendered in its own block with a right justified equation number
+at the top of the block. This equation number can be referenced in the document.
+To do this, use a `label` inside of the equation format and then refer to that label
+using `ref`. For example: `\begin{equation}` `\label{eq}` X^2 `\end{equation}`. 
+Now refer to that equation number by `$`\ref{eq}`$`.
+
+reStructuredText
+----------------
+If there is math detected in reStructuredText document, the plugin will automatically
+set the [math_output](http://docutils.sourceforge.net/docs/user/config.html#math-output) configuration setting to `MathJax`.
+
+### Inlined Math
+Inlined math needs to use the [math role](http://docutils.sourceforge.net/docs/ref/rst/roles.html#math):
+
+```
+The area of a circle is :math:`A_\text{c} = (\pi/4) d^2`.
+```
+
+### Displayed Math
+Displayed math uses the [math block](http://docutils.sourceforge.net/docs/ref/rst/directives.html#math):
+
+```
+.. math::
+
+  α_t(i) = P(O_1, O_2, … O_t, q_t = S_i λ)
+```
diff --git a/pelican-plugins/render_math/__init__.py b/pelican-plugins/render_math/__init__.py
new file mode 100644
index 0000000..2ac15dd
--- /dev/null
+++ b/pelican-plugins/render_math/__init__.py
@@ -0,0 +1 @@
+from .math import *
diff --git a/pelican-plugins/render_math/math.py b/pelican-plugins/render_math/math.py
new file mode 100644
index 0000000..165d59e
--- /dev/null
+++ b/pelican-plugins/render_math/math.py
@@ -0,0 +1,367 @@
+# -*- coding: utf-8 -*-
+"""
+Math Render Plugin for Pelican
+==============================
+This plugin allows your site to render Math. It uses
+the MathJax JavaScript engine.
+
+For markdown, the plugin works by creating a Markdown
+extension which is used during the markdown compilation
+stage.  Math therefore gets treated like a "first class
+citizen" in Pelican
+
+For reStructuredText, the plugin instructs the rst engine
+to output Mathjax for all math.
+
+The mathjax script is by default automatically inserted
+into the HTML.
+
+Typogrify Compatibility
+-----------------------
+This plugin now plays nicely with Typogrify, but it
+requires Typogrify version 2.07 or above.
+
+User Settings
+-------------
+Users are also able to pass a dictionary of settings
+in the settings file which will control how the MathJax
+library renders things. This could be very useful for
+template builders that want to adjust the look and feel of
+the math.  See README for more details.
+"""
+
+import os
+import sys
+
+from pelican import signals, generators
+
+try:
+    from bs4 import BeautifulSoup
+except ImportError as e:
+    BeautifulSoup = None
+
+try:
+    from . pelican_mathjax_markdown_extension import PelicanMathJaxExtension
+except ImportError as e:
+    PelicanMathJaxExtension = None
+
+try:
+    string_type = basestring
+except NameError:
+    string_type = str
+
+
+def process_settings(pelicanobj):
+    """Sets user specified MathJax settings (see README for more details)"""
+
+    mathjax_settings = {}
+
+    # NOTE TO FUTURE DEVELOPERS: Look at the README and what is happening in
+    # this function if any additional changes to the mathjax settings need to
+    # be incorporated. Also, please inline comment what the variables
+    # will be used for
+
+    # Default settings
+    mathjax_settings['auto_insert'] = True  # if set to true, it will insert mathjax script automatically into content without needing to alter the template.
+    mathjax_settings['align'] = 'center'  # controls alignment of of displayed equations (values can be: left, right, center)
+    mathjax_settings['indent'] = '0em'  # if above is not set to 'center', then this setting acts as an indent
+    mathjax_settings['show_menu'] = 'true'  # controls whether to attach mathjax contextual menu
+    mathjax_settings['process_escapes'] = 'true'  # controls whether escapes are processed
+    mathjax_settings['latex_preview'] = 'TeX'  # controls what user sees while waiting for LaTex to render
+    mathjax_settings['color'] = 'inherit'  # controls color math is rendered in
+    mathjax_settings['linebreak_automatic'] = 'false'  # Set to false by default for performance reasons (see http://docs.mathjax.org/en/latest/output.html#automatic-line-breaking)
+    mathjax_settings['tex_extensions'] = ''  # latex extensions that can be embedded inside mathjax (see http://docs.mathjax.org/en/latest/tex.html#tex-and-latex-extensions)
+    mathjax_settings['responsive'] = 'false'  # Tries to make displayed math responsive
+    mathjax_settings['responsive_break'] = '768'  # The break point at which it math is responsively aligned (in pixels)
+    mathjax_settings['mathjax_font'] = 'default'  # forces mathjax to use the specified font.
+    mathjax_settings['process_summary'] = BeautifulSoup is not None  # will fix up summaries if math is cut off. Requires beautiful soup
+    mathjax_settings['message_style'] = 'normal'  # This value controls the verbosity of the messages in the lower left-hand corner. Set it to "none" to eliminate all messages
+    mathjax_settings['font_list'] = ['STIX', 'TeX'] # Include in order of preference among TeX, STIX-Web, Asana-Math, Neo-Euler, Gyre-Pagella, Gyre-Termes and Latin-Modern
+    mathjax_settings['equation_numbering'] = 'none' # AMS, auto, none
+
+    # Source for MathJax
+    mathjax_settings['source'] = "'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=TeX-AMS-MML_HTMLorMML'"
+
+    # Get the user specified settings
+    try:
+        settings = pelicanobj.settings['MATH_JAX']
+    except:
+        settings = None
+
+    # If no settings have been specified, then return the defaults
+    if not isinstance(settings, dict):
+        return mathjax_settings
+
+    # The following mathjax settings can be set via the settings dictionary
+    for key, value in ((key, settings[key]) for key in settings):
+        # Iterate over dictionary in a way that is compatible with both version 2
+        # and 3 of python
+
+        if key == 'align':
+            typeVal = isinstance(value, string_type)
+
+            if not typeVal:
+                continue
+
+            if value == 'left' or value == 'right' or value == 'center':
+                mathjax_settings[key] = value
+            else:
+                mathjax_settings[key] = 'center'
+
+        if key == 'indent':
+            mathjax_settings[key] = value
+
+        if key == 'source':
+            mathjax_settings[key] = value
+
+        if key == 'show_menu' and isinstance(value, bool):
+            mathjax_settings[key] = 'true' if value else 'false'
+
+        if key == 'message_style':
+            mathjax_settings[key] = value if value is not None else 'none'
+
+        if key == 'auto_insert' and isinstance(value, bool):
+            mathjax_settings[key] = value
+
+        if key == 'process_escapes' and isinstance(value, bool):
+            mathjax_settings[key] = 'true' if value else 'false'
+
+        if key == 'latex_preview':
+            typeVal = isinstance(value, string_type)
+
+            if not typeVal:
+                continue
+
+            mathjax_settings[key] = value
+
+        if key == 'color':
+            typeVal = isinstance(value, string_type)
+
+            if not typeVal:
+                continue
+
+            mathjax_settings[key] = value
+
+        if key == 'linebreak_automatic' and isinstance(value, bool):
+            mathjax_settings[key] = 'true' if value else 'false'
+
+        if key == 'process_summary' and isinstance(value, bool):
+            if value and BeautifulSoup is None:
+                print("BeautifulSoup4 is needed for summaries to be processed by render_math\nPlease install it")
+                value = False
+
+            mathjax_settings[key] = value
+
+        if key == 'responsive' and isinstance(value, bool):
+            mathjax_settings[key] = 'true' if value else 'false'
+
+        if key == 'responsive_break' and isinstance(value, int):
+            mathjax_settings[key] = str(value)
+
+        if key == 'tex_extensions' and isinstance(value, list):
+            # filter string values, then add '' to them
+            value = filter(lambda string: isinstance(string, string_type), value)
+            value = map(lambda string: "'%s'" % string, value)
+            mathjax_settings[key] = ',' + ','.join(value)
+
+        if key == 'mathjax_font':
+            typeVal = isinstance(value, string_type)
+
+            if not typeVal:
+                continue
+
+            value = value.lower()
+
+            if value == 'sanserif':
+                value = 'SansSerif'
+            elif value == 'fraktur':
+                value = 'Fraktur'
+            elif value == 'typewriter':
+                value = 'Typewriter'
+            else:
+                value = 'default'
+
+            mathjax_settings[key] = value
+
+        if key == 'font_list' and isinstance(value, list):
+            # make an array string from the list
+            value = filter(lambda string: isinstance(string, string_type), value)
+            value = map(lambda string: ",'%s'" % string, value)
+            mathjax_settings[key] = ''.join(value)[1:]
+
+        if key == 'equation_numbering':
+            mathjax_settings[key] = value if value is not None else 'none'
+
+    return mathjax_settings
+
+def process_summary(article):
+    """Ensures summaries are not cut off. Also inserts
+    mathjax script so that math will be rendered"""
+
+    summary = article.summary
+    summary_parsed = BeautifulSoup(summary, 'html.parser')
+    math = summary_parsed.find_all(class_='math')
+
+    if len(math) > 0:
+        last_math_text = math[-1].get_text()
+        if len(last_math_text) > 3 and last_math_text[-3:] == '...':
+            content_parsed = BeautifulSoup(article._content, 'html.parser')
+            full_text = content_parsed.find_all(class_='math')[len(math)-1].get_text()
+            math[-1].string = "%s ..." % full_text
+            summary = summary_parsed.decode()
+
+        # clear memoization cache
+        import functools
+        if isinstance(article.get_summary, functools.partial):
+            memoize_instance = article.get_summary.func.__self__
+            memoize_instance.cache.clear()
+
+        article._summary = "%s<script type='text/javascript'>%s</script>" % (summary, process_summary.mathjax_script)
+
+def configure_typogrify(pelicanobj, mathjax_settings):
+    """Instructs Typogrify to ignore math tags - which allows Typogrify
+    to play nicely with math related content"""
+
+    # If Typogrify is not being used, then just exit
+    if not pelicanobj.settings.get('TYPOGRIFY', False):
+        return
+
+    try:
+        import typogrify
+        from distutils.version import LooseVersion
+
+        if LooseVersion(typogrify.__version__) < LooseVersion('2.0.7'):
+            raise TypeError('Incorrect version of Typogrify')
+
+        from typogrify.filters import typogrify
+
+        # At this point, we are happy to use Typogrify, meaning
+        # it is installed and it is a recent enough version
+        # that can be used to ignore all math
+        # Instantiate markdown extension and append it to the current extensions
+        pelicanobj.settings['TYPOGRIFY_IGNORE_TAGS'].extend(['.math', 'script'])  # ignore math class and script
+
+    except (ImportError, TypeError) as e:
+        pelicanobj.settings['TYPOGRIFY'] = False  # disable Typogrify
+
+        if isinstance(e, ImportError):
+            print("\nTypogrify is not installed, so it is being ignored.\nIf you want to use it, please install via: pip install typogrify\n")
+
+        if isinstance(e, TypeError):
+            print("\nA more recent version of Typogrify is needed for the render_math module.\nPlease upgrade Typogrify to the latest version (anything equal or above version 2.0.7 is okay).\nTypogrify will be turned off due to this reason.\n")
+
+def process_mathjax_script(mathjax_settings):
+    """Load the mathjax script template from file, and render with the settings"""
+
+    # Read the mathjax javascript template from file
+    with open (os.path.dirname(os.path.realpath(__file__))
+            + '/mathjax_script_template', 'r') as mathjax_script_template:
+        mathjax_template = mathjax_script_template.read()
+
+    return mathjax_template.format(**mathjax_settings)
+
+def mathjax_for_markdown(pelicanobj, mathjax_script, mathjax_settings):
+    """Instantiates a customized markdown extension for handling mathjax
+    related content"""
+
+    # Create the configuration for the markdown template
+    config = {}
+    config['mathjax_script'] = mathjax_script
+    config['math_tag_class'] = 'math'
+    config['auto_insert'] = mathjax_settings['auto_insert']
+
+    # Instantiate markdown extension and append it to the current extensions
+    try:
+        if isinstance(pelicanobj.settings.get('MD_EXTENSIONS'), list): # pelican 3.6.3 and earlier
+            pelicanobj.settings['MD_EXTENSIONS'].append(PelicanMathJaxExtension(config))
+        else:
+            pelicanobj.settings['MARKDOWN'].setdefault('extensions', []).append(PelicanMathJaxExtension(config))
+    except:
+        sys.excepthook(*sys.exc_info())
+        sys.stderr.write("\nError - the pelican mathjax markdown extension failed to configure. MathJax is non-functional.\n")
+        sys.stderr.flush()
+
+def mathjax_for_rst(pelicanobj, mathjax_script, mathjax_settings):
+    """Setup math for RST"""
+    docutils_settings = pelicanobj.settings.get('DOCUTILS_SETTINGS', {})
+    docutils_settings.setdefault('math_output', 'MathJax %s' % mathjax_settings['source'])
+    pelicanobj.settings['DOCUTILS_SETTINGS'] = docutils_settings
+    rst_add_mathjax.mathjax_script = mathjax_script
+
+def pelican_init(pelicanobj):
+    """
+    Loads the mathjax script according to the settings.
+    Instantiate the Python markdown extension, passing in the mathjax
+    script as config parameter.
+    """
+
+    # Process settings, and set global var
+    mathjax_settings = process_settings(pelicanobj)
+
+    # Generate mathjax script
+    mathjax_script = process_mathjax_script(mathjax_settings)
+
+    # Configure Typogrify
+    configure_typogrify(pelicanobj, mathjax_settings)
+
+    # Configure Mathjax For Markdown
+    if PelicanMathJaxExtension:
+        mathjax_for_markdown(pelicanobj, mathjax_script, mathjax_settings)
+
+    # Configure Mathjax For RST
+    mathjax_for_rst(pelicanobj, mathjax_script, mathjax_settings)
+
+    # Set process_summary's mathjax_script variable
+    process_summary.mathjax_script = None
+    if mathjax_settings['process_summary']:
+        process_summary.mathjax_script = mathjax_script
+
+def rst_add_mathjax(content):
+    """Adds mathjax script for reStructuredText"""
+
+    # .rst is the only valid extension for reStructuredText files
+    _, ext = os.path.splitext(os.path.basename(content.source_path))
+    if ext != '.rst':
+        return
+
+    # If math class is present in text, add the javascript
+    # note that RST hardwires mathjax to be class "math"
+    if 'class="math"' in content._content:
+        content._content += "<script type='text/javascript'>%s</script>" % rst_add_mathjax.mathjax_script
+
+def process_rst_and_summaries(content_generators):
+    """
+    Ensure mathjax script is applied to RST and summaries are
+    corrected if specified in user settings.
+
+    Handles content attached to ArticleGenerator and PageGenerator objects,
+    since the plugin doesn't know how to handle other Generator types.
+
+    For reStructuredText content, examine both articles and pages.
+    If article or page is reStructuredText and there is math present,
+    append the mathjax script.
+
+    Also process summaries if present (only applies to articles)
+    and user wants summaries processed (via user settings)
+    """
+
+    for generator in content_generators:
+        if isinstance(generator, generators.ArticlesGenerator):
+            for article in (
+                    generator.articles +
+                    generator.translations +
+                    generator.drafts):
+                rst_add_mathjax(article)
+                #optionally fix truncated formulae in summaries.
+                if process_summary.mathjax_script is not None:
+                    process_summary(article)
+        elif isinstance(generator, generators.PagesGenerator):
+            for page in generator.pages:
+                rst_add_mathjax(page)
+            for page in generator.hidden_pages:
+                rst_add_mathjax(page)
+
+def register():
+    """Plugin registration"""
+    signals.initialized.connect(pelican_init)
+    signals.all_generators_finalized.connect(process_rst_and_summaries)
diff --git a/pelican-plugins/render_math/mathjax_script_template b/pelican-plugins/render_math/mathjax_script_template
new file mode 100644
index 0000000..db8aeba
--- /dev/null
+++ b/pelican-plugins/render_math/mathjax_script_template
@@ -0,0 +1,61 @@
+if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {{
+    var align = "{align}",
+        indent = "{indent}",
+        linebreak = "{linebreak_automatic}";
+
+    if ({responsive}) {{
+        align = (screen.width < {responsive_break}) ? "left" : align;
+        indent = (screen.width < {responsive_break}) ? "0em" : indent;
+        linebreak = (screen.width < {responsive_break}) ? 'true' : linebreak;
+    }}
+
+    var mathjaxscript = document.createElement('script');
+    mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
+    mathjaxscript.type = 'text/javascript';
+    mathjaxscript.src = {source};
+
+    var configscript = document.createElement('script');
+    configscript.type = 'text/x-mathjax-config';
+    configscript[(window.opera ? "innerHTML" : "text")] =
+        "MathJax.Hub.Config({{" +
+        "    config: ['MMLorHTML.js']," +
+        "    TeX: {{ extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'{tex_extensions}], equationNumbers: {{ autoNumber: '{equation_numbering}' }} }}," +
+        "    jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
+        "    extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
+        "    displayAlign: '"+ align +"'," +
+        "    displayIndent: '"+ indent +"'," +
+        "    showMathMenu: {show_menu}," +
+        "    messageStyle: '{message_style}'," +
+        "    tex2jax: {{ " +
+        "        inlineMath: [ ['\\\\(','\\\\)'] ], " +
+        "        displayMath: [ ['$$','$$'] ]," +
+        "        processEscapes: {process_escapes}," +
+        "        preview: '{latex_preview}'," +
+        "    }}, " +
+        "    'HTML-CSS': {{ " +
+        "        availableFonts: {font_list}," +
+        "        preferredFont: 'STIX'," +
+        "        styles: {{ '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {{color: '{color} ! important'}} }}," +
+        "        linebreaks: {{ automatic: "+ linebreak +", width: '90% container' }}," +
+        "    }}, " +
+        "}}); " +
+        "if ('{mathjax_font}' !== 'default') {{" +
+            "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {{" +
+                "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
+                "VARIANT['normal'].fonts.unshift('MathJax_{mathjax_font}');" +
+                "VARIANT['bold'].fonts.unshift('MathJax_{mathjax_font}-bold');" +
+                "VARIANT['italic'].fonts.unshift('MathJax_{mathjax_font}-italic');" +
+                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_{mathjax_font}-italic');" +
+            "}});" +
+            "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {{" +
+                "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
+                "VARIANT['normal'].fonts.unshift('MathJax_{mathjax_font}');" +
+                "VARIANT['bold'].fonts.unshift('MathJax_{mathjax_font}-bold');" +
+                "VARIANT['italic'].fonts.unshift('MathJax_{mathjax_font}-italic');" +
+                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_{mathjax_font}-italic');" +
+            "}});" +
+        "}}";
+
+    (document.body || document.getElementsByTagName('head')[0]).appendChild(configscript);
+    (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
+}}
diff --git a/pelican-plugins/render_math/pelican_mathjax_markdown_extension.py b/pelican-plugins/render_math/pelican_mathjax_markdown_extension.py
new file mode 100644
index 0000000..e739363
--- /dev/null
+++ b/pelican-plugins/render_math/pelican_mathjax_markdown_extension.py
@@ -0,0 +1,158 @@
+# -*- coding: utf-8 -*-
+"""
+Pelican Mathjax Markdown Extension
+==================================
+An extension for the Python Markdown module that enables
+the Pelican python blog to process mathjax. This extension
+gives Pelican the ability to use Mathjax as a "first class
+citizen" of the blog
+"""
+
+import markdown
+
+from markdown.util import etree
+from markdown.util import AtomicString
+
+class PelicanMathJaxPattern(markdown.inlinepatterns.Pattern):
+    """Inline markdown processing that matches mathjax"""
+
+    def __init__(self, pelican_mathjax_extension, tag, pattern):
+        super(PelicanMathJaxPattern,self).__init__(pattern)
+        self.math_tag_class = pelican_mathjax_extension.getConfig('math_tag_class')
+        self.pelican_mathjax_extension = pelican_mathjax_extension
+        self.tag = tag
+
+    def handleMatch(self, m):
+        node = markdown.util.etree.Element(self.tag)
+        node.set('class', self.math_tag_class)
+
+        prefix = '\\(' if m.group('prefix') == '$' else m.group('prefix')
+        suffix = '\\)' if m.group('suffix') == '$' else m.group('suffix')
+        node.text = markdown.util.AtomicString(prefix + m.group('math') + suffix)
+
+        # If mathjax was successfully matched, then JavaScript needs to be added
+        # for rendering. The boolean below indicates this
+        self.pelican_mathjax_extension.mathjax_needed = True
+        return node
+
+class PelicanMathJaxCorrectDisplayMath(markdown.treeprocessors.Treeprocessor):
+    """Corrects invalid html that results from a <div> being put inside
+    a <p> for displayed math"""
+
+    def __init__(self, pelican_mathjax_extension):
+        self.pelican_mathjax_extension = pelican_mathjax_extension
+
+    def correct_html(self, root, children, div_math, insert_idx, text):
+        """Separates out <div class="math"> from the parent tag <p>. Anything
+        in between is put into its own parent tag of <p>"""
+
+        current_idx = 0
+
+        for idx in div_math:
+            el = markdown.util.etree.Element('p')
+            el.text = text
+            el.extend(children[current_idx:idx])
+
+            # Test to ensure that empty <p> is not inserted  
+            if len(el) != 0 or (el.text and not el.text.isspace()):
+               root.insert(insert_idx, el)
+               insert_idx += 1
+
+            text = children[idx].tail
+            children[idx].tail = None
+            root.insert(insert_idx, children[idx])
+            insert_idx += 1
+            current_idx = idx+1
+
+        el = markdown.util.etree.Element('p')
+        el.text = text
+        el.extend(children[current_idx:])
+
+        if len(el) != 0 or (el.text and not el.text.isspace()):
+            root.insert(insert_idx, el)
+
+    def run(self, root):
+        """Searches for <div class="math"> that are children in <p> tags and corrects
+        the invalid HTML that results"""
+
+        math_tag_class = self.pelican_mathjax_extension.getConfig('math_tag_class')
+
+        for parent in root:
+            div_math = []
+            children = list(parent)
+
+            for div in parent.findall('div'):
+                if div.get('class') == math_tag_class:
+                    div_math.append(children.index(div))
+
+            # Do not process further if no displayed math has been found
+            if not div_math:
+                continue
+
+            insert_idx = list(root).index(parent)
+            self.correct_html(root, children, div_math, insert_idx, parent.text) 
+            root.remove(parent)  # Parent must be removed last for correct insertion index
+
+        return root
+
+class PelicanMathJaxAddJavaScript(markdown.treeprocessors.Treeprocessor):
+    """Tree Processor for adding Mathjax JavaScript to the blog"""
+
+    def __init__(self, pelican_mathjax_extension):
+        self.pelican_mathjax_extension = pelican_mathjax_extension
+
+    def run(self, root):
+        # If no mathjax was present, then exit
+        if (not self.pelican_mathjax_extension.mathjax_needed):
+            return root
+
+        # Add the mathjax script to the html document
+        mathjax_script = etree.Element('script')
+        mathjax_script.set('type','text/javascript')
+        mathjax_script.text = AtomicString(self.pelican_mathjax_extension.getConfig('mathjax_script'))
+        root.append(mathjax_script)
+
+        # Reset the boolean switch to false so that script is only added
+        # to other pages if needed
+        self.pelican_mathjax_extension.mathjax_needed = False
+        return root
+
+class PelicanMathJaxExtension(markdown.Extension):
+    """A markdown extension enabling mathjax processing in Markdown for Pelican"""
+    def __init__(self, config):
+
+        try:
+            # Needed for markdown versions >= 2.5
+            self.config['mathjax_script'] = ['', 'Mathjax JavaScript script']
+            self.config['math_tag_class'] = ['math', 'The class of the tag in which mathematics is wrapped']
+            self.config['auto_insert'] = [True, 'Determines if mathjax script is automatically inserted into content']
+            super(PelicanMathJaxExtension,self).__init__(**config)
+        except AttributeError:
+            # Markdown versions < 2.5
+            config['mathjax_script'] = [config['mathjax_script'], 'Mathjax JavaScript script']
+            config['math_tag_class'] = [config['math_tag_class'], 'The class of the tag in which mathematic is wrapped']
+            config['auto_insert'] = [config['auto_insert'], 'Determines if mathjax script is automatically inserted into content']
+            super(PelicanMathJaxExtension,self).__init__(config)
+
+        # Used as a flag to determine if javascript
+        # needs to be injected into a document
+        self.mathjax_needed = False
+
+    def extendMarkdown(self, md):
+        # Regex to detect mathjax
+        mathjax_inline_regex = r'(?P<prefix>\$)(?P<math>.+?)(?P<suffix>(?<!\s)\2)'
+        mathjax_display_regex = r'(?P<prefix>\$\$|\\begin\{(.+?)\})(?P<math>.+?)(?P<suffix>\2|\\end\{\3\})'
+
+        # Process mathjax before escapes are processed since escape processing will
+        # intefer with mathjax. The order in which the displayed and inlined math
+        # is registered below matters: we should have higher priority than 'escape' which has 180
+        md.inlinePatterns.register(PelicanMathJaxPattern(self, 'div', mathjax_display_regex), 'mathjax_displayed', 186)
+        md.inlinePatterns.register(PelicanMathJaxPattern(self, 'span', mathjax_inline_regex), 'mathjax_inlined', 185)
+
+        # Correct the invalid HTML that results from teh displayed math (<div> tag within a <p> tag) 
+        md.treeprocessors.register(PelicanMathJaxCorrectDisplayMath(self), 'mathjax_correctdisplayedmath', 15)
+
+        # If necessary, add the JavaScript Mathjax library to the document. This must
+        # be last in the ordered dict (hence it is given the position '_end')
+        if self.getConfig('auto_insert'):
+            md.treeprocessors.register(PelicanMathJaxAddJavaScript(self), 'mathjax_addjavascript', 0)
diff --git a/pelican-plugins/render_math/requirements.txt b/pelican-plugins/render_math/requirements.txt
new file mode 100644
index 0000000..be64ec9
--- /dev/null
+++ b/pelican-plugins/render_math/requirements.txt
@@ -0,0 +1 @@
+typogrify
diff --git a/pelican-plugins/render_math/test_data/article.ipynb b/pelican-plugins/render_math/test_data/article.ipynb
new file mode 100755
index 0000000..890f8be
--- /dev/null
+++ b/pelican-plugins/render_math/test_data/article.ipynb
@@ -0,0 +1,42 @@
+{
+  "cells": [
+    {
+      "cell_type": "markdown",
+      "source": [
+        "The formula is:\n",
+        "\n",
+        "\\begin{align*}A =\n",
+        "LL^{T}\n",
+        "\\end{align*}\n"
+      ],
+      "metadata": {}
+    }
+  ],
+  "metadata": {
+    "kernelspec": {
+      "name": "python3",
+      "language": "python",
+      "display_name": "Python 3"
+    },
+    "language_info": {
+      "name": "python",
+      "version": "3.7.3",
+      "mimetype": "text/x-python",
+      "codemirror_mode": {
+        "name": "ipython",
+        "version": 3
+      },
+      "pygments_lexer": "ipython3",
+      "nbconvert_exporter": "python",
+      "file_extension": ".py"
+    },
+    "kernel_info": {
+      "name": "python3"
+    },
+    "nteract": {
+      "version": "0.14.5"
+    }
+  },
+  "nbformat": 4,
+  "nbformat_minor": 2
+}
\ No newline at end of file
diff --git a/pelican-plugins/render_math/test_data/article.nbdata b/pelican-plugins/render_math/test_data/article.nbdata
new file mode 100755
index 0000000..bf13538
--- /dev/null
+++ b/pelican-plugins/render_math/test_data/article.nbdata
@@ -0,0 +1,5 @@
+Title: An article from a Jupyter notebook
+Date: 2019-03-05 12:14
+Category: Mathematics
+Tags: Linear Algebra, Python, Numpy, Scipy
+Summary: This is a advance part of Linear Algebra with Python
\ No newline at end of file
diff --git a/pelican-plugins/render_math/test_data/article_with_math_formulas.rst b/pelican-plugins/render_math/test_data/article_with_math_formulas.rst
new file mode 100644
index 0000000..87dcc45
--- /dev/null
+++ b/pelican-plugins/render_math/test_data/article_with_math_formulas.rst
@@ -0,0 +1,20 @@
+Math formulas
+#############
+
+:date: 2019-09-10
+:yeah: oh yeah !
+:summary: :math:`A_\text{c} = (\pi/4) d^2`
+
+The area of a circle is :math:`A_\text{c} = (\pi/4) d^2`.
+
+.. math::
+
+  α_t(i) = P(O_1, O_2, … O_t, q_t = S_i λ)
+
+    A =
+    \begin{bmatrix}
+    a_{11} & a_{12} & a_{13} \
+    a_{21} & a_{22} & a_{23} \
+    a_{31} & a_{32} & a_{33}
+    \end{bmatrix}
+    
\ No newline at end of file
diff --git a/pelican-plugins/render_math/test_render_math.py b/pelican-plugins/render_math/test_render_math.py
new file mode 100644
index 0000000..b71f4e7
--- /dev/null
+++ b/pelican-plugins/render_math/test_render_math.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+from os.path import dirname, join
+from tempfile import TemporaryDirectory
+
+from pelican import Pelican
+from pelican.generators import ArticlesGenerator
+from pelican.settings import configure_settings
+from pelican.tests.support import get_settings, unittest
+from pelican.writers import Writer
+
+from .math import pelican_init, process_rst_and_summaries
+
+
+CUR_DIR = dirname(__file__)
+
+
+class RenderMathTest(unittest.TestCase):
+    def test_ok_on_shared_test_data(self):
+        settings = get_settings(filenames={})
+        settings['PATH'] = join(CUR_DIR, '..', 'test_data')
+        pelican_init(PelicanMock(settings))
+        with TemporaryDirectory() as tmpdirname:
+            generator = _build_article_generator(settings, tmpdirname)
+            process_rst_and_summaries([generator])
+    def test_ok_on_custom_data(self):
+        settings = get_settings(filenames={})
+        settings['PATH'] = join(CUR_DIR, 'test_data')
+        settings['PLUGINS'] = ['pelican-ipynb.markup']  # to also parse .ipynb files
+        configure_settings(settings)
+        pelican_mock = PelicanMock(settings)
+        pelican_init(pelican_mock)
+        Pelican.init_plugins(pelican_mock)
+        with TemporaryDirectory() as tmpdirname:
+            generator = _build_article_generator(settings, tmpdirname)
+            process_rst_and_summaries([generator])
+            for article in generator.articles:
+                if article.source_path.endswith('.rst'):
+                    self.assertIn('mathjaxscript_pelican', article.content)
+            generator.generate_output(Writer(tmpdirname, settings=settings))
+
+
+def _build_article_generator(settings, output_path):
+    context = settings.copy()
+    context['generated_content'] = dict()
+    context['static_links'] = set()
+    article_generator = ArticlesGenerator(
+        context=context, settings=settings,
+        path=settings['PATH'], theme=settings['THEME'], output_path=output_path)
+    article_generator.generate_context()
+    return article_generator
+
+class PelicanMock:
+    'A dummy class exposing the only attributes needed'
+    def __init__(self, settings):
+        self.plugins = []
+        self.settings = settings
diff --git a/pelican-plugins/representative_image/Readme.md b/pelican-plugins/representative_image/Readme.md
new file mode 100644
index 0000000..a6abbb4
--- /dev/null
+++ b/pelican-plugins/representative_image/Readme.md
@@ -0,0 +1,61 @@
+# Summary
+
+This plugin extracts a representative image (i.e, featured image) from the summary or content of an article or a page, if not specified in the metadata.
+
+The plugin also removes any images from the summary after extraction to avoid duplication.
+
+It allows the flexibility on where and how to display the featured image of an article together with its summary in a template page. For example, the article metadata can be displayed in thumbnail format, in which there is a short summary and an image. The layout of the summary and the image can be varied for aesthetical purpose. It doesn't have to depend on article's content format.
+
+## Installation
+
+This plugin requires `BeautifulSoup`:
+
+```bash
+pip install beautifulsoup4
+```
+
+To enable, add the following to your `settings.py`:
+
+```python
+PLUGIN_PATH = 'path/to/pelican-plugins'
+PLUGINS = ["representative_image"]
+```
+
+`PLUGIN_PATH` can be a path relative to your settings file or an absolute path.
+
+## Usage
+
+To override the default behavior of selecting the first image in the article's summary or content, set the image property the article's metadata to the URL of the image to display, e.g:
+
+```markdown
+Title: My super title
+Date: 2010-12-03 10:20
+Category: Python
+Tags: pelican, publishing
+Slug: my-super-post
+Author: Alexis Metaireau
+Summary: Short version for index and feeds
+Image: /images/my-super-image.png
+
+Article content...
+```
+
+### Page
+
+To include a representative image in a page add the following to the template:
+
+```html
+{% if page.featured_image %}
+    <img src="{{ page.featured_image }}">
+{% endif %}
+```
+
+### Article
+
+To include a representative image in an article add the following to the template:
+
+```html
+{% if article.featured_image %}
+    <img src="{{ article.featured_image }}">
+{% endif %}
+```
diff --git a/pelican-plugins/representative_image/__init__.py b/pelican-plugins/representative_image/__init__.py
new file mode 100644
index 0000000..88c52b4
--- /dev/null
+++ b/pelican-plugins/representative_image/__init__.py
@@ -0,0 +1 @@
+from .representative_image import *  # noqa
diff --git a/pelican-plugins/representative_image/representative_image.py b/pelican-plugins/representative_image/representative_image.py
new file mode 100644
index 0000000..2cec1a2
--- /dev/null
+++ b/pelican-plugins/representative_image/representative_image.py
@@ -0,0 +1,63 @@
+import six
+from bs4 import BeautifulSoup
+
+from pelican import signals
+from pelican.contents import Article, Page
+from pelican.generators import ArticlesGenerator, PagesGenerator
+
+
+def images_extraction(instance):
+    representativeImage = None
+    if type(instance) in (Article, Page):
+        if 'image' in instance.metadata:
+            representativeImage = instance.metadata['image']
+
+        # Process Summary:
+        # If summary contains images, extract one to be the representativeImage
+        # and remove images from summary
+        soup = BeautifulSoup(instance.summary, 'html.parser')
+        images = soup.find_all('img')
+        for i in images:
+            if not representativeImage:
+                representativeImage = i['src']
+            i.extract()
+        if len(images) > 0:
+            # set _summary field which is based on metadata. summary field is
+            # only based on article's content and not settable
+            instance._summary = six.text_type(soup)
+
+        # If there are no image in summary, look for it in the content body
+        if not representativeImage:
+            soup = BeautifulSoup(instance._content, 'html.parser')
+            imageTag = soup.find('img')
+            if imageTag:
+                representativeImage = imageTag['src']
+
+        # Set the attribute to content instance
+        instance.featured_image = representativeImage
+        instance.featured_alt = instance.metadata.get('alt', None)
+        instance.featured_link = instance.metadata.get('link', None)
+        instance.featured_caption = instance.metadata.get('caption', None)
+
+
+def run_plugin(generators):
+    for generator in generators:
+        if isinstance(generator, ArticlesGenerator):
+            for article in generator.articles:
+                images_extraction(article)
+                for translation in article.translations:
+                    images_extraction(translation)
+        elif isinstance(generator, PagesGenerator):
+            for page in generator.pages:
+                images_extraction(page)
+                for translation in page.translations:
+                    images_extraction(translation)
+
+
+def register():
+    try:
+        signals.all_generators_finalized.connect(run_plugin)
+    except AttributeError:
+        # NOTE: This results in #314 so shouldn't really be relied on
+        # https://github.com/getpelican/pelican-plugins/issues/314
+        signals.content_object_init.connect(images_extraction)
diff --git a/pelican-plugins/representative_image/requirements.txt b/pelican-plugins/representative_image/requirements.txt
new file mode 100644
index 0000000..c1f5f71
--- /dev/null
+++ b/pelican-plugins/representative_image/requirements.txt
@@ -0,0 +1 @@
+beautifulsoup4
diff --git a/pelican-plugins/representative_image/test_representative_image.py b/pelican-plugins/representative_image/test_representative_image.py
new file mode 100755
index 0000000..949c35e
--- /dev/null
+++ b/pelican-plugins/representative_image/test_representative_image.py
@@ -0,0 +1,73 @@
+#!/bin/sh
+import unittest
+
+import representative_image
+from jinja2.utils import generate_lorem_ipsum
+from pelican.contents import Article, Page
+
+# Generate content with image
+TEST_CONTENT_IMAGE_URL = 'https://testimage.com/test.jpg'
+TEST_CONTENT = str(generate_lorem_ipsum(n=3, html=True)) + '<img src="' + TEST_CONTENT_IMAGE_URL + '"/>'+ str(generate_lorem_ipsum(n=2,html=True))  # noqa
+TEST_SUMMARY_IMAGE_URL = 'https://testimage.com/summary.jpg'
+TEST_SUMMARY_WITHOUTIMAGE = str(generate_lorem_ipsum(n=1, html=True))
+TEST_SUMMARY_WITHIMAGE = TEST_SUMMARY_WITHOUTIMAGE + '<img src="' + TEST_SUMMARY_IMAGE_URL + '"/>'  # noqa
+TEST_CUSTOM_IMAGE_URL = 'https://testimage.com/custom.jpg'
+
+
+class TestRepresentativeImage(unittest.TestCase):
+
+    def setUp(self):
+        super(TestRepresentativeImage, self).setUp()
+        representative_image.register()
+
+    def test_extract_image_from_content(self):
+        args = {
+            'content': TEST_CONTENT,
+            'metadata': {
+                'summary': TEST_SUMMARY_WITHOUTIMAGE,
+            },
+        }
+
+        article = Article(**args)
+        self.assertEqual(article.featured_image, TEST_CONTENT_IMAGE_URL)
+
+    def test_extract_image_from_summary(self):
+        args = {
+            'content': TEST_CONTENT,
+            'metadata': {
+                'summary': TEST_SUMMARY_WITHIMAGE,
+            },
+        }
+
+        article = Article(**args)
+        self.assertEqual(article.featured_image, TEST_SUMMARY_IMAGE_URL)
+        self.assertEqual(article.summary, TEST_SUMMARY_WITHOUTIMAGE)
+
+    def test_extract_image_from_summary_with_custom_image(self):
+        args = {
+            'content': TEST_CONTENT,
+            'metadata': {
+                'summary': TEST_SUMMARY_WITHIMAGE,
+                'image': TEST_CUSTOM_IMAGE_URL,
+            },
+        }
+
+        article = Article(**args)
+        self.assertEqual(article.featured_image, TEST_CUSTOM_IMAGE_URL)
+        self.assertEqual(article.summary, TEST_SUMMARY_WITHOUTIMAGE)
+
+    def test_extract_image_from_page_summary_with_custom_image(self):
+        args = {
+            'content': TEST_CONTENT,
+            'metadata': {
+                'summary': TEST_SUMMARY_WITHIMAGE,
+                'image': TEST_CUSTOM_IMAGE_URL,
+            },
+        }
+        page = Page(**args)
+        self.assertEqual(page.featured_image, TEST_CUSTOM_IMAGE_URL)
+        self.assertEqual(page.summary, TEST_SUMMARY_WITHOUTIMAGE)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/pelican-plugins/requirements.txt b/pelican-plugins/requirements.txt
new file mode 100644
index 0000000..85fdd2a
--- /dev/null
+++ b/pelican-plugins/requirements.txt
@@ -0,0 +1,4 @@
+Markdown
+nose
+nose-exclude
+nose-summary-report
diff --git a/pelican-plugins/rmd_reader/Readme.md b/pelican-plugins/rmd_reader/Readme.md
new file mode 100644
index 0000000..dd3d136
--- /dev/null
+++ b/pelican-plugins/rmd_reader/Readme.md
@@ -0,0 +1,68 @@
+# RMD Reader
+
+This plugin helps you creating posts with knitr's RMarkdown files.
+[knitr](http://yihui.name/knitr/) is a template engine which executes and displays embedded R code.
+So, being short you can write an executable paper with codes, formulas and graphics.
+
+## Loading
+
+It is a good idea to load `rmd_reader` at last.
+It uses settings loaded at runtime and it is important to be sure that all settings have been loaded.
+
+```
+PLUGINS = ['sitemap',
+           'summary',
+           ...
+           'render_math',
+           'rmd_reader']  # put it here!
+```
+
+## Dependency
+
+This plugin requires [rpy2](https://pypi.python.org/pypi/rpy2).
+Install it with:
+
+```
+pip install rpy2
+```
+
+Of course, R must be installed and also the knitr package.
+Execute the command below in R to get knitr installed.
+
+```
+R> install.packages('knitr')
+```
+
+## Usage
+
+The plugin detects RMD files ending with `.Rmd` or `.rmd` so you only have to write a RMarkdown files inside `content` directory.
+
+This plugin calls R to process these files and generates markdown files that are processed by Pelican's `MarkdownReader` in order to generate html files from ordinary `.md` files.
+
+### Configuration
+
+`rmd_reader` has these variables that can be set in `pelicanconf`.
+
+- `RMD_READER_CLEANUP` (`True`): The RMarkdown file is converted into a Markdown file with the extension `.aux` (to avoid conflicts while pelican is processing). This file is processed by pelican's MarkdownReader and is removed after that (the cleanup step). So if you want to check this file set `RMD_READER_CLEANUP=True`.
+- `RMD_READER_RENAME_PLOT` (`chunklabel`): the figures generated for plots are named with a default prefix (usually `unnamed-chunk`) followed by a sequential number. That sequence starts on 1 for every processed file, which causes naming conflicts among files. In order to avoid these conflicts `RMD_READER_RENAME_PLOT` can be set `chunklabel` and that prefix is replaced with the name of the markdown source, without extension. Alternatively, `RMD_READER_RENAME_PLOT` can be set `directory` in which case the `fig.path` (defaults to `figure/`) is augmented with the path to markdown source including the name of the source file without extension.  Another way to avoid conflicts is naming the chuncks and in that case this variable can be set to any other string.
+- `RMD_READER_KNITR_QUIET` (`True`): sets `knitr`'s quiet argument.
+- `RMD_READER_KNITR_ENCODING` (`UTF-8`): sets `knitr`'s encoding argument.
+- `RMD_READER_KNITR_OPTS_CHUNK` (`None`): sets `knitr`'s `opts_chunk`.
+- `RMD_READER_KNITR_OPTS_KNIT` (`None`): sets `knitr`'s `opts_knit`.
+
+
+### Plotting
+
+I strongly suggest using the variable `RMD_READER_RENAME_PLOT='chunklabel'`.
+That helps with avoiding naming conflits among different posts.
+`rmd_reader` sets knitr's `unnamed.chunk.label` option to the Rmd file name (without extension) in runtime.
+
+Alternatively, Rebecca Weiss (@rjweiss) suggested using `opts_chunk` to set knitr's `fig.path` ([link](http://rjweiss.github.io/articles/2014_08_25/testing-rmarkdown-integration/)).
+Now that can be done directly in `pelicanconf` thougth `RMD_READER_KNITR_OPTS_CHUNK`, that variable receives a `dict` with options to be passed to knitr's `opts_chunk`. With this scheme you can set `RMD_READER_RENAME_PLOT='directory'` and add the generated figures directory to `STATIC_PATHS`.
+
+```
+RMD_READER_RENAME_PLOT = 'directory'
+RMD_READER_KNITR_OPTS_CHUNK = {'fig.path': 'figure/'}
+STATIC_PATHS = ['figure']
+```
+
diff --git a/pelican-plugins/rmd_reader/__init__.py b/pelican-plugins/rmd_reader/__init__.py
new file mode 100644
index 0000000..ca633b6
--- /dev/null
+++ b/pelican-plugins/rmd_reader/__init__.py
@@ -0,0 +1 @@
+from .rmd_reader import *
diff --git a/pelican-plugins/rmd_reader/requirements.txt b/pelican-plugins/rmd_reader/requirements.txt
new file mode 100644
index 0000000..8f38986
--- /dev/null
+++ b/pelican-plugins/rmd_reader/requirements.txt
@@ -0,0 +1 @@
+rpy2
diff --git a/pelican-plugins/rmd_reader/rmd_reader.py b/pelican-plugins/rmd_reader/rmd_reader.py
new file mode 100644
index 0000000..5c2b4fe
--- /dev/null
+++ b/pelican-plugins/rmd_reader/rmd_reader.py
@@ -0,0 +1,126 @@
+#-*- conding: utf-8 -*-
+
+import os
+import warnings
+import logging
+
+logger = logging.getLogger('RMD_READER')
+
+from pelican import readers
+from pelican import signals
+from pelican import settings
+
+KNITR = None
+RMD = False
+FIG_PATH = None
+R_STARTED = False
+
+def startr():
+    global KNITR, R_OBJECTS, R_STARTED
+    if R_STARTED:
+        return
+    logger.debug('STARTING R')
+    with warnings.catch_warnings():
+        warnings.simplefilter("ignore")
+        try:
+            import rpy2.rinterface
+            rpy2.rinterface.set_initoptions((b'rpy2', b'--no-save', b'--vanilla', b'--quiet'))
+        except AttributeError:
+            from rpy2.rinterface_lib import embedded
+            embedded.set_initoptions(("rpy2", "--no-save", "--vanilla", "--quiet"))
+        import rpy2.robjects as R_OBJECTS
+        from rpy2.robjects.packages import importr
+    KNITR = importr('knitr')
+    logger.debug('R STARTED')
+    R_STARTED = True
+
+def initsignal(pelicanobj):
+    global RMD, FIG_PATH
+    try:
+        startr()
+        
+        idx = KNITR.opts_knit.names.index('set')
+        path = pelicanobj.settings.get('PATH','%s/content' % settings.DEFAULT_CONFIG.get('PATH'))
+        logger.debug("RMD_READER PATH = %s", path)
+        KNITR.opts_knit[idx](**{'base.dir': path})
+        
+        knitroptsknit = pelicanobj.settings.get('RMD_READER_KNITR_OPTS_KNIT', None)
+        if knitroptsknit:
+            KNITR.opts_knit[idx](**{str(k): v for k,v in knitroptsknit.items()})
+        
+        idx = KNITR.opts_chunk.names.index('set')
+        knitroptschunk = pelicanobj.settings.get('RMD_READER_KNITR_OPTS_CHUNK', None)
+        if knitroptschunk:
+            FIG_PATH = knitroptschunk['fig.path'] if 'fig.path' in knitroptschunk else 'figure/'
+            KNITR.opts_chunk[idx](**{str(k): v for k,v in knitroptschunk.items()})
+        
+        RMD = True
+    except ImportError as ex:
+        RMD = False
+
+class RmdReader(readers.BaseReader):
+    file_extensions = ['Rmd', 'rmd']
+
+    @property
+    def enabled(self):
+        return RMD
+
+    # You need to have a read method, which takes a filename and returns
+    # some content and the associated metadata.
+    def read(self, filename):
+        """Parse content and metadata of markdown files"""
+        QUIET = self.settings.get('RMD_READER_KNITR_QUIET', True)
+        ENCODING = self.settings.get('RMD_READER_KNITR_ENCODING', 'UTF-8')
+        CLEANUP = self.settings.get('RMD_READER_CLEANUP', True)
+        RENAME_PLOT = self.settings.get('RMD_READER_RENAME_PLOT', 'chunklabel')
+        if type(RENAME_PLOT) is bool:
+            logger.error("RMD_READER_RENAME_PLOT takes a string value (either chunklabel or directory), please see the readme.")
+            if RENAME_PLOT:
+                RENAME_PLOT = 'chunklabel'
+                logger.error("Defaulting to chunklabel")
+            else:
+                RENAME_PLOT = 'disabled'
+                logger.error("Disabling plot renaming")
+        logger.debug("RMD_READER_KNITR_QUIET = %s", QUIET)
+        logger.debug("RMD_READER_KNITR_ENCODING = %s", ENCODING)
+        logger.debug("RMD_READER_CLEANUP = %s", CLEANUP)
+        logger.debug("RMD_READER_RENAME_PLOT = %s", RENAME_PLOT)
+        # replace single backslashes with double backslashes
+        filename = filename.replace('\\', '\\\\')
+        # parse Rmd file - generate md file
+        md_filename = filename.replace('.Rmd', '.aux').replace('.rmd', '.aux')
+        if RENAME_PLOT == 'chunklabel' or RENAME_PLOT == 'directory':
+            if RENAME_PLOT == 'chunklabel':
+                chunk_label = os.path.splitext(os.path.basename(filename))[0]
+                logger.debug('Chunk label: %s', chunk_label)
+            elif RENAME_PLOT == 'directory':
+                chunk_label = 'unnamed-chunk'
+                PATH = self.settings.get('PATH','%s/content' % settings.DEFAULT_CONFIG.get('PATH'))
+                src_name = os.path.splitext(os.path.relpath(filename, PATH))[0]
+                idx = KNITR.opts_chunk.names.index('set')
+                knitroptschunk = { 'fig.path': '%s-' % os.path.join(FIG_PATH, src_name) }
+                KNITR.opts_chunk[idx](**{str(k): v for k,v in knitroptschunk.items()})
+                logger.debug('Figures path: %s, chunk label: %s', knitroptschunk['fig.path'], chunk_label)
+            R_OBJECTS.r('''
+opts_knit$set(unnamed.chunk.label="{unnamed_chunk_label}")
+render_markdown()
+hook_plot <- knit_hooks$get('plot')
+knit_hooks$set(plot=function(x, options) hook_plot(paste0("{{static}}/", x), options))
+            '''.format(unnamed_chunk_label=chunk_label))
+        with warnings.catch_warnings():
+            warnings.simplefilter("ignore")
+            KNITR.knit(filename, md_filename, quiet=QUIET, encoding=ENCODING)
+        # read md file - create a MarkdownReader
+        md_reader = readers.MarkdownReader(self.settings)
+        content, metadata = md_reader.read(md_filename)
+        # remove md file
+        if CLEANUP:
+            os.remove(md_filename)
+        return content, metadata
+
+def add_reader(readers):
+    readers.reader_classes['rmd'] = RmdReader
+
+def register():
+    signals.readers_init.connect(add_reader)
+    signals.initialized.connect(initsignal)
diff --git a/pelican-plugins/rmd_reader/test_rmd_reader.py b/pelican-plugins/rmd_reader/test_rmd_reader.py
new file mode 100644
index 0000000..608ade4
--- /dev/null
+++ b/pelican-plugins/rmd_reader/test_rmd_reader.py
@@ -0,0 +1,162 @@
+'''
+Created on Jan 25, 2016
+
+@author: Aaron Kitzmiller <aaron_kitzmiller@harvard.edu?
+'''
+import unittest, os, sys
+import shutil
+import logging
+import glob
+from pelican import Pelican
+from pelican.settings import read_settings
+
+logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
+
+class Test(unittest.TestCase):
+
+
+    def setUp(self):
+        try:
+            import rpy2
+            import rmd_reader
+        except Exception:
+            raise unittest.SkipTest("rpy not installed.  Will not test rmd_reader.")
+        
+        self.testtitle = 'rtest'
+        self.cwd = os.path.dirname(os.path.abspath(__file__))
+        logging.debug(self.cwd)
+        
+        # Setup content dir and test rmd file
+        self.contentdir = os.path.join(self.cwd,'test-content')
+        logging.debug(self.contentdir)
+        try:
+            os.mkdir(self.contentdir)
+        except Exception:
+            pass
+        self.contentfile = os.path.join(self.contentdir,'test.rmd')
+        logging.debug(self.contentfile)
+        
+        self.testrmd = '''Title: %s
+Date: 2014-06-23
+
+Let's make a simple plot about cars.
+```{r}
+cars <- c(1, 3, 6, 4, 9)
+plot(cars)
+```
+''' % self.testtitle
+        with open(self.contentfile,'w') as f:
+            f.write(self.testrmd)
+            
+        # Setup output dir
+        self.outputdir = os.path.join(self.cwd,'test-output')
+        logging.debug(self.outputdir)
+        
+        try:
+            os.mkdir(self.outputdir)
+        except Exception:
+            pass
+        
+        self.figpath = 'images'
+        
+
+
+    def tearDown(self):
+        logging.debug('CLEAN')
+        if os.path.isdir(self.outputdir):
+            shutil.rmtree(self.outputdir)
+        if os.path.isdir(self.contentdir):
+            shutil.rmtree(self.contentdir)
+
+    def testKnitrSettings(self):
+        settings = read_settings(path=None, override={
+            'LOAD_CONTENT_CACHE': False,
+            'PATH': self.contentdir,
+            'OUTPUT_PATH': self.outputdir,
+            'RMD_READER_KNITR_OPTS_CHUNK': {'fig.path' : '%s/' % self.figpath},
+            'RMD_READER_KNITR_OPTS_KNIT': {'progress' : True, 'verbose': True},
+            'RMD_READER_RENAME_PLOT': 'disable',
+            'PLUGIN_PATHS': ['../'],
+            'PLUGINS': ['rmd_reader'],
+            'AUTHOR': 'Bob Anonymous',
+        })
+        pelican = Pelican(settings=settings)
+        pelican.run()
+        
+        outputfilename = os.path.join(self.outputdir,'%s.html' % self.testtitle)
+        self.assertTrue(os.path.exists(outputfilename),'File %s was not created.' % outputfilename)
+        
+        imagesdir = os.path.join(self.outputdir, self.figpath)
+        self.assertTrue(os.path.exists(imagesdir), 'figpath not created.')
+        
+        imagefile = os.path.join(imagesdir, 'unnamed-chunk') + '-1-1.png'
+        logging.debug(imagefile)
+        images = glob.glob('%s/*' % imagesdir)
+        logging.debug(images)
+        self.assertTrue(os.path.exists(imagefile), 'image correctly named.')
+        
+        self.assertTrue(len(images) == 1,'Contents of images dir is not correct: %s' % ','.join(images))
+        
+
+    def testKnitrSettings2(self):
+        settings = read_settings(path=None, override={
+            'LOAD_CONTENT_CACHE': False,
+            'PATH': self.contentdir,
+            'OUTPUT_PATH': self.outputdir,
+            'RMD_READER_KNITR_OPTS_CHUNK': {'fig.path' : '%s/' % self.figpath},
+            'RMD_READER_KNITR_OPTS_KNIT': {'progress' : True, 'verbose': True},
+            'RMD_READER_RENAME_PLOT': 'chunklabel',
+            'PLUGIN_PATHS': ['../'],
+            'PLUGINS': ['rmd_reader'],
+            'AUTHOR': 'Bob Anonymous',
+        })
+        pelican = Pelican(settings=settings)
+        pelican.run()
+        
+        outputfilename = os.path.join(self.outputdir,'%s.html' % self.testtitle)
+        self.assertTrue(os.path.exists(outputfilename),'File %s was not created.' % outputfilename)
+        
+        imagesdir = os.path.join(self.outputdir, self.figpath)
+        self.assertTrue(os.path.exists(imagesdir), 'figpath not created.')
+        
+        imagefile = os.path.join(imagesdir, os.path.splitext(os.path.split(self.contentfile)[1])[0]) + '-1-1.png'
+        logging.debug(imagefile)
+        self.assertTrue(os.path.exists(imagefile), 'image correctly named.')
+        
+        images = glob.glob('%s/*' % imagesdir)
+        logging.debug(images)
+        self.assertTrue(len(images) == 1,'Contents of images dir is not correct: %s' % ','.join(images))
+
+    def testKnitrSettings3(self):
+        settings = read_settings(path=None, override={
+            'LOAD_CONTENT_CACHE': False,
+            'PATH': self.contentdir,
+            'OUTPUT_PATH': self.outputdir,
+            'RMD_READER_KNITR_OPTS_CHUNK': {'fig.path' : '%s/' % self.figpath},
+            'RMD_READER_KNITR_OPTS_KNIT': {'progress' : True, 'verbose': True},
+            'RMD_READER_RENAME_PLOT': 'directory',
+            'PLUGIN_PATHS': ['../'],
+            'PLUGINS': ['rmd_reader'],
+            'AUTHOR': 'Bob Anonymous',
+        })
+        pelican = Pelican(settings=settings)
+        pelican.run()
+
+        outputfilename = os.path.join(self.outputdir,'%s.html' % self.testtitle)
+        self.assertTrue(os.path.exists(outputfilename),'File %s was not created.' % outputfilename)
+
+        imagesdir = os.path.join(self.outputdir, self.figpath)
+        self.assertTrue(os.path.exists(imagesdir), 'figpath not created.')
+
+        imagefile = os.path.join(imagesdir, os.path.splitext(os.path.split(self.contentfile)[1])[0]) + '-unnamed-chunk-1-1.png'
+        logging.debug(imagefile)
+        self.assertTrue(os.path.exists(imagefile), 'image correctly named.')
+
+        images = glob.glob('%s/*' % imagesdir)
+        logging.debug(images)
+        self.assertTrue(len(images) == 1,'Contents of images dir is not correct: %s' % ','.join(images))
+
+
+if __name__ == "__main__":
+    #import sys;sys.argv = ['', 'Test.testName']
+    unittest.main()
diff --git a/pelican-plugins/section_number/Readme.md b/pelican-plugins/section_number/Readme.md
new file mode 100644
index 0000000..4f21907
--- /dev/null
+++ b/pelican-plugins/section_number/Readme.md
@@ -0,0 +1,41 @@
+Section Number
+--------------
+
+This plugin adds section numbers to an article's context, in the form of `X.X.X`. Sections are indicated via Markdown headers, which appear as `<h1> – <h6>` in the generated HTML.
+
+
+# Settings
+
+By default, up to three section levels will be prefixed with numbers. You can customize this value by defining `SECTION_NUMBER_MAX` in your settings file:
+
+    SECTION_NUMBER_MAX = 5
+
+
+# Caveat
+
+The first section in the article will be marked as the top section level. Namely, if `<h3>` is the first section encountered, the plugin assumes that no `<h1>` or `<h2>` sections will be present. Otherwise an exception may result.
+
+
+# Example
+
+The following Markdown content...
+
+    # section
+    blabla
+    ## subsection
+    blabla
+    ## subsection
+    blabla
+    # section
+    blabla
+
+... will be rendered as:
+
+>#1 section
+>blabla
+>##1.1 subsection
+>blabla
+>##1.2 subsection
+>blabla
+>#2 section
+>blabla
diff --git a/pelican-plugins/section_number/__init__.py b/pelican-plugins/section_number/__init__.py
new file mode 100644
index 0000000..19a92cf
--- /dev/null
+++ b/pelican-plugins/section_number/__init__.py
@@ -0,0 +1 @@
+from .section_number import *
\ No newline at end of file
diff --git a/pelican-plugins/section_number/section_number.py b/pelican-plugins/section_number/section_number.py
new file mode 100644
index 0000000..1ac435e
--- /dev/null
+++ b/pelican-plugins/section_number/section_number.py
@@ -0,0 +1,90 @@
+# -*- coding: utf-8 -*-
+"""
+Section number plugin for Pelican
+================================
+Adds section numbers to section titles of the article
+"""
+
+from pelican import signals
+
+
+def _extract_level(text, idx):
+    end = text.find(">", idx)
+
+    if end == -1:
+        return (idx, -1)
+
+    try:
+        level = int(text[idx: end])
+        return (end, level)
+
+    except:
+        return (idx, -1)
+
+
+def _level_str(level_nums, level_max):
+    ret = u''
+
+    if len(level_nums) > level_max:
+        return ret
+
+    for n in level_nums:
+        ret += str(n) + '.'
+
+    return ret[:-1]
+
+
+def _insert_title_number(text, level_max):
+    idx = 0
+    levels = []
+    level_nums = []
+
+    while True:
+        idx = text.find("<h", idx)
+        if idx == -1:
+            break
+
+        (idx, level) = _extract_level(text, idx + 2)
+
+        if level == -1:
+            continue
+
+        if not levels:
+            levels += [level]
+            level_nums += [1]
+
+        elif level == levels[-1]:
+            level_nums[-1] += 1
+
+        elif level < levels[-1]:
+            while level < levels[-1]:
+                levels.pop()
+                level_nums.pop()
+            level_nums[-1] += 1
+
+        else:
+            while level > levels[-1]:
+                levels += [levels[-1] + 1]
+                level_nums += [1]
+
+        text = text[:idx + 1] + \
+            _level_str(level_nums, level_max) + '. ' + text[idx + 1:]
+
+    # print text.encode('gb2312')
+    return text
+
+
+def process_content(content):
+    if content._content is None:
+        return
+
+    level_max = content.settings.get('SECTION_NUMBER_MAX', 3)
+
+    if level_max <= 0:
+        return
+
+    content._content = _insert_title_number(content._content, level_max)
+
+
+def register():
+    signals.content_object_init.connect(process_content)
diff --git a/pelican-plugins/series/Readme.md b/pelican-plugins/series/Readme.md
new file mode 100644
index 0000000..fecb367
--- /dev/null
+++ b/pelican-plugins/series/Readme.md
@@ -0,0 +1,48 @@
+Series plugin
+-------------
+
+**NOTE:** [This plugin has been moved to its own repository](https://github.com/pelican-plugins/series). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.
+
+The series plugin allows you to join different posts into a series.
+
+In order to mark posts as part of a series, use the `:series:` metadata:
+
+    :series:  NAME_OF_THIS_SERIES
+
+or, in Markdown syntax
+
+    Series: NAME_OF_THIS_SERIES
+
+The plugin collects all articles belonging to the same series and provides
+series-related variables that you can use in your template.
+
+#### Indexing
+By default articles in a series are ordered by date and then automatically numbered.
+
+If you want to force a given order just specify the `:series_index:` metadata or in Markdown `series_index:`,
+starting from 1. All articles with this enforced index are put at the beginning of
+the series and ordered according to the index itself. All the remaining articles
+come after them, ordered by date.
+
+The plugin provides the following variables to your templates
+
+    * `article.series.name` is the name of the series as specified in the article metadata
+    * `article.series.index` is the index of the current article inside the series
+    * `article.series.all` is an ordered list of all articles in the series (including the current one)
+    * `article.series.all_previous` is an ordered list of the articles published before the current one
+    * `article.series.all_next` is an ordered list of the articles published after the current one
+    * `article.series.previous` is the previous article in the series (a shortcut to `article.series.all_previous[-1]`)
+    * `article.series.next` is the next article in the series (a shortcut to `article.series.all_next[0]`)
+
+For example:
+
+    {% if article.series %}
+        <p>This post is part {{ article.series.index }} of the "{{ article.series.name }}" series:</p>
+        <ol class="parts">
+            {% for part_article in article.series.all %}
+                <li {% if part_article == article %}class="active"{% endif %}>
+                    <a href='{{ SITEURL }}/{{ part_article.url }}'>{{ part_article.title }}</a>
+                </li>
+            {% endfor %}
+        </ol>
+    {% endif %}
diff --git a/pelican-plugins/series/__init__.py b/pelican-plugins/series/__init__.py
new file mode 100644
index 0000000..451ef23
--- /dev/null
+++ b/pelican-plugins/series/__init__.py
@@ -0,0 +1 @@
+from .series import *
diff --git a/pelican-plugins/series/series.py b/pelican-plugins/series/series.py
new file mode 100644
index 0000000..c183de6
--- /dev/null
+++ b/pelican-plugins/series/series.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+"""
+This plugin extends the original series plugin
+by FELD Boris <lothiraldan@gmail.com>
+
+Copyright (c) Leonardo Giordani <giordani.leonardo@gmail.com>
+
+Joins articles in a series and provides variables to
+manage the series in the template.
+"""
+
+from collections import defaultdict
+from operator import itemgetter
+
+from pelican import signals
+
+
+def aggregate_series(generator):
+    series = defaultdict(list)
+
+    # This cycles through all articles in the given generator
+    # and collects the 'series' metadata, if present.
+    # The 'series_index' metadata is also stored, if specified
+    for article in generator.articles:
+        if 'series' in article.metadata:
+            article_entry = (
+                article.metadata.get('series_index', None),
+                article.metadata['date'],
+                article
+            )
+
+            series[article.metadata['series']].append(article_entry)
+
+    # This uses items() which on Python2 is not a generator
+    # but we are dealing with a small amount of data so
+    # there shouldn't be performance issues =)
+    for series_name, series_articles in series.items():
+        # This is not DRY but very simple to understand
+        forced_order_articles = [
+            art_tup for art_tup in series_articles if art_tup[0] is not None]
+
+        date_order_articles = [
+            art_tup for art_tup in series_articles if art_tup[0] is None]
+
+        forced_order_articles.sort(key=itemgetter(0))
+        date_order_articles.sort(key=itemgetter(1))
+
+        all_articles = forced_order_articles + date_order_articles
+        ordered_articles = [art_tup[2] for art_tup in all_articles]
+        enumerated_articles = enumerate(ordered_articles)
+
+        for index, article in enumerated_articles:
+            article.series = dict()
+            article.series['name'] = series_name
+            article.series['index'] = index + 1
+            article.series['all'] = ordered_articles
+            article.series['all_previous'] = ordered_articles[0: index]
+            article.series['all_next'] = ordered_articles[index + 1:]
+
+            if index > 0:
+                article.series['previous'] = ordered_articles[index - 1]
+            else:
+                article.series['previous'] = None
+
+            try:
+                article.series['next'] = ordered_articles[index + 1]
+            except IndexError:
+                article.series['next'] = None
+
+
+def register():
+    signals.article_generator_finalized.connect(aggregate_series)
diff --git a/pelican-plugins/shaarli_poster/README.md b/pelican-plugins/shaarli_poster/README.md
new file mode 100644
index 0000000..d47bd72
--- /dev/null
+++ b/pelican-plugins/shaarli_poster/README.md
@@ -0,0 +1,55 @@
+# Summary
+
+> [Shaarli](https://github.com/shaarli/Shaarli) is a minimalist link sharing service that you can install on your own server.
+> It is designed to be personal (single-user), fast and handy.
+
+This plugin upload newly redacted articles onto a specified Shaarli instance.
+
+First, it detects which articles are new by querying the list of links from the configured Shaarli server
+with the tag "FromPelican" (configurable through the `SHAARLI_POSTER_TAG` variable).
+
+Then, it creates a link on the Shaarli instance for every missing article.
+
+
+## Installation
+
+This plugin relies on the [shaarli-client](https://python-shaarli-client.readthedocs.io/en/latest/user/configuration.html) Python package,
+that must be installed and configured beforehand.
+
+To enable this plugin, add the following to your `publishconf.py`:
+
+    PLUGIN_PATH = 'path/to/pelican-plugins'
+    PLUGINS = ['shaarli_poster']
+
+`PLUGIN_PATH` can be a path relative to your settings file or an absolute path.
+
+
+## Configuration
+
+Available options:
+
+- `SHAARLI_POSTER_TAG` (optional, default: `'FromPelican'`) : defines tag to add on all Shaarli links created by this plugin
+- `SHAARLI_POSTER_CONFIG_FILE_PATH` (optional) : where to look for a [python-shaarli-client configuration file](https://python-shaarli-client.readthedocs.io/en/latest/user/configuration.html)
+- `SHAARLI_POSTER_INSTANCE` : name of the instance to use in this configuration file, instead of the default one
+- `SHAARLI_POSTER_INSECURE` (optional) : set it to `True` to disable certs verification
+
+
+## CLI usage
+
+Due to the way the Shaarli HTTP API work, newly created links are associated with the date of the plugin execution,
+and not the actual date of the blog article.
+
+This is usually not an issue but when enabling this plugin on an existing blog,
+you may want to generate a Shaarli `datastore.php` with links dates matching the articles ones.
+
+You can invoke this plugin in order to do exactly this:
+
+    python shaarli_poster.py --all --starting-id 42 pelicanconf.py > datastore.json
+    php -r '$dt = json_decode(file_get_contents("datastore.json"), true); foreach($dt as &$l) { $l["created"] = new DateTime($l["created"]["date"], new DateTimeZone($l["created"]["timezone"])); if (array_key_exists("updated", $l) && $l["updated"]) { $l["updated"] = new DateTime($l["updated"]["date"], new DateTimeZone($l["updated"]["timezone"])); } } print("<?php /* ".base64_encode(gzdeflate(serialize($dt)))." */ ?>");' > datastore.php
+
+
+## Tests
+
+To execute them:
+
+    nosetests -w shaarli_poster
diff --git a/pelican-plugins/shaarli_poster/__init__.py b/pelican-plugins/shaarli_poster/__init__.py
new file mode 100644
index 0000000..99e470b
--- /dev/null
+++ b/pelican-plugins/shaarli_poster/__init__.py
@@ -0,0 +1 @@
+from .shaarli_poster import *
diff --git a/pelican-plugins/shaarli_poster/requirements.txt b/pelican-plugins/shaarli_poster/requirements.txt
new file mode 100644
index 0000000..8d02776
--- /dev/null
+++ b/pelican-plugins/shaarli_poster/requirements.txt
@@ -0,0 +1 @@
+shaarli-client
diff --git a/pelican-plugins/shaarli_poster/shaarli_poster.py b/pelican-plugins/shaarli_poster/shaarli_poster.py
new file mode 100644
index 0000000..fb7674e
--- /dev/null
+++ b/pelican-plugins/shaarli_poster/shaarli_poster.py
@@ -0,0 +1,139 @@
+# -*- coding: utf-8 -*-
+import json
+import logging
+import os
+import re
+from argparse import ArgumentParser, Namespace
+from base64 import b64encode
+from collections import defaultdict
+
+from pelican import signals
+from pelican.generators import ArticlesGenerator
+from pelican.settings import read_settings
+from shaarli_client.client import ShaarliV1Client
+from shaarli_client.config import get_credentials
+
+
+DEFAULT_TAG = 'FromPelican'
+LOGGER = logging.getLogger(__name__)
+
+
+def upload_new_articles(generators):
+    article_generator = next(g for g in generators if isinstance(g, ArticlesGenerator))
+    client = build_shaarli_client(article_generator.settings)
+    articles_urls_on_shaarli = get_published_articles_urls(client, article_generator.settings)
+    for article in article_generator.articles:
+        if article.status == 'published' and article.url not in articles_urls_on_shaarli:
+            LOGGER.info('Publishing article %s', article.url)
+            publish_new_article(client, article_generator.settings, article)
+
+def build_shaarli_client(settings):
+    args = Namespace(
+        config=settings.get('SHAARLI_POSTER_CONFIG_FILE_PATH'),
+        instance=settings.get('SHAARLI_POSTER_INSTANCE'),
+        secret=None,
+        url=None,
+    )
+    return ShaarliV1Client(*get_credentials(args))
+
+def get_published_articles_urls(client, pelican_settings):
+    args = Namespace(
+        endpoint_name='get-links',
+        insecure=pelican_settings.get('SHAARLI_POSTER_INSECURE'),
+        limit='all',
+        searchtags=pelican_settings.get('SHAARLI_POSTER_TAG', DEFAULT_TAG)
+    )
+    response = client.request(args)
+    response.raise_for_status()
+    return set(link['url'].rsplit('/', 1)[1] for link in response.json())
+
+def publish_new_article(client, pelican_settings, article):
+    description, tags = get_desc_and_tags(article, pelican_settings)
+    args = Namespace(
+        endpoint_name='post-link',
+        insecure=pelican_settings.get('SHAARLI_POSTER_INSECURE'),
+        url=os.path.join(pelican_settings['SITEURL'], article.url),
+        title=article.title,
+        description=description,
+        tags=tags
+    )
+    response = client.request(args)
+    response.raise_for_status()
+
+def get_desc_and_tags(article, pelican_settings):
+    tags = [tag.name for tag in article.tags] + [pelican_settings.get('SHAARLI_POSTER_TAG', DEFAULT_TAG)]
+    # We transform relative images URLs into absolute ones:
+    description = re.sub(' src="(?!http)', ' src="' + os.path.join(pelican_settings['SITEURL'], ''), article.summary)
+    return description, tags
+
+def main():
+    args_parser = ArgumentParser()
+    args_parser.add_argument('--all', action='store_true', help='Do not filter out articles already published')
+    args_parser.add_argument('--starting-id', type=int, default=1)
+    args_parser.add_argument('--timezone', default='Europe/Berlin')
+    args_parser.add_argument('--timezone-type', type=int, default=3)
+    args_parser.add_argument('pelican_config_file')
+    args = args_parser.parse_args()
+    settings = read_settings(args.pelican_config_file)
+    article_generator = build_article_generator(settings, settings['PATH'])
+    articles_urls_on_shaarli = set() if args.all else get_published_articles_urls(client, settings)
+    links = []
+    for i, article in enumerate(article_generator.articles):
+        if article.status == 'published' and article.url not in articles_urls_on_shaarli:
+            id = args.starting_id + i
+            description, tags = get_desc_and_tags(article, settings)
+            url = os.path.join(settings['SITEURL'], article.url)
+            links.append({
+                'url': url,
+                'real_url': url,
+                'title': article.title,
+                'description': description,
+                'created': {
+                    'date': article.date.strftime('%Y-%m-%d %H:%M:%S.%f'),
+                    'timezone_type': args.timezone_type,
+                    'timezone': args.timezone
+                },
+                'tags': ' '.join(tags),
+                'id': id,
+                'shorturl': small_hash(article.date, id),
+                'private': 0,
+            })
+    print(json.dumps(links, indent=4, sort_keys=True))
+
+def build_article_generator(settings, content_path, output_path=None):
+    context = settings.copy()
+    context['generated_content'] = dict()
+    context['static_links'] = set()
+    article_generator = ArticlesGenerator(
+        context=context, settings=settings,
+        path=content_path, theme=settings['THEME'], output_path=output_path)
+    article_generator.generate_context()
+    return article_generator
+
+def small_hash(date, id):
+    'Reference: https://github.com/shaarli/Shaarli/blob/master/application/Utils.php#L24'
+    text = date.strftime('%Y%m%d_%H%M%S') + str(id)
+    return b64encode(php_crc32(text.encode()).to_bytes(4, 'big')).decode().replace('=', '')
+
+def php_crc32(a):
+    '''
+    References:
+    - https://www.php.net/manual/en/function.hash-file.php#104836
+    - https://stackoverflow.com/a/50843127/636849
+    '''
+    crc = 0xffffffff
+    for x in a:
+        crc ^= x << 24;
+        for k in range(8):
+            crc = (crc << 1) ^ 0x04c11db7 if crc & 0x80000000 else crc << 1
+    crc = ~crc
+    crc &= 0xffffffff
+    # Convert from big endian to little endian:
+    return int.from_bytes(crc.to_bytes(4, 'big'), 'little')
+
+def register():
+    signals.all_generators_finalized.connect(upload_new_articles)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/pelican-plugins/shaarli_poster/test_content/dummy_article.md b/pelican-plugins/shaarli_poster/test_content/dummy_article.md
new file mode 100644
index 0000000..c944423
--- /dev/null
+++ b/pelican-plugins/shaarli_poster/test_content/dummy_article.md
@@ -0,0 +1,14 @@
+Title: Dummy article
+Category: test
+Tags: foo, bar, foobar
+Date: 2010-12-02 10:14
+Modified: 2010-12-02 10:20
+Summary: I have a lot to test
+
+Test Markdown File Header
+=========================
+
+Used for pelican test
+---------------------
+
+The quick brown fox jumped over the lazy dog's back.
diff --git a/pelican-plugins/shaarli_poster/test_content/other_dummy_article.md b/pelican-plugins/shaarli_poster/test_content/other_dummy_article.md
new file mode 100644
index 0000000..2af71ac
--- /dev/null
+++ b/pelican-plugins/shaarli_poster/test_content/other_dummy_article.md
@@ -0,0 +1,19 @@
+Title: マックOS X 10.8でパイソンとVirtualenvをインストールと設定
+Slug: other-dummy-article
+Date: 2012-12-20
+Modified: 2012-12-22
+Tags: パイソン, マック
+Category: 指導書
+Summary: パイソンとVirtualenvをまっくでインストールする方法について明確に説明します。
+
+Writing unicode is certainly fun.
+
+パイソンとVirtualenvをまっくでインストールする方法について明確に説明します。
+
+And let's mix languages.
+
+первый пост
+
+Now another.
+
+İlk yazı çok özel değil.
diff --git a/pelican-plugins/shaarli_poster/test_shaarli_poster.py b/pelican-plugins/shaarli_poster/test_shaarli_poster.py
new file mode 100644
index 0000000..d87d298
--- /dev/null
+++ b/pelican-plugins/shaarli_poster/test_shaarli_poster.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+import os, shutil
+from tempfile import TemporaryDirectory
+from unittest.mock import patch, Mock
+
+from pelican.tests.support import get_settings, unittest
+
+from .shaarli_poster import build_article_generator, upload_new_articles
+
+
+CUR_DIR = os.path.dirname(__file__)
+TEST_CONTENT_DIR = os.path.join(CUR_DIR, 'test_content')
+
+
+class ShaarliPosterTest(unittest.TestCase):
+
+    @patch('shaarli_poster.shaarli_poster.get_credentials')  # avoid ~/.config/shaarli/client.ini parsing, which may not exist in CI
+    @patch('shaarli_poster.shaarli_poster.ShaarliV1Client')
+    def test_upload_new_article(self, ShaarliClientClassMock, _):
+        ShaarliClientClassMock.return_value.request.side_effect = [
+            ResponseMock([{'url': '/other-dummy-article.html'}]),  # get-links
+            ResponseMock()  # post-link
+        ]
+        with TemporaryDirectory() as tmpdirname:
+            upload_new_articles([build_article_generator(get_settings(filenames={}), TEST_CONTENT_DIR, tmpdirname)])
+            self.assertEqual(ShaarliClientClassMock.return_value.request.call_count, 2)  # 1 get-links + 1 post-link
+
+class ResponseMock:
+    def __init__(self, json=None):
+        self._json = json
+    def json(self):
+        return self._json
+    def raise_for_status(self):
+        pass
diff --git a/pelican-plugins/share_post/README.md b/pelican-plugins/share_post/README.md
new file mode 100644
index 0000000..ba3ec0c
--- /dev/null
+++ b/pelican-plugins/share_post/README.md
@@ -0,0 +1,77 @@
+# Share Post
+
+**NOTE:** [This plugin has been moved to its own repository](https://github.com/pelican-plugins/share-post). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.
+
+A Pelican plugin to create share URLs of article
+
+# Author
+
+Copyright (c) Talha Mansoor
+
+Author          | Talha Mansoor
+----------------|-----
+Author Email    | talha131@gmail.com
+Author Homepage | http://onCrashReboot.com
+Github Account  | https://github.com/talha131
+
+### Contributors
+
+* [Jonathan DEKHTIAR](https://github.com/DEKHTIARJonathan) - contact@jonathandekhtiar.eu
+* [Paolo Melchiorre](https://github.com/pauloxnet) - [www.paulox.net](https://www.paulox.net/)
+
+## Why do you need it?
+
+Almost all website have share widgets to let readers share posts on social
+networks. Most of these widgets are used by vendors for online tracking. These
+widgets are also visual which quite often become a distraction and negatively
+affect readers attention.
+
+`share_post` creates old school URLs for some popular sites which your theme
+can use. These links do not have the ability to track the users. They can also
+be unobtrusive depending on how Pelican theme uses them.
+
+## Requirements
+
+`share_post` requires BeautifulSoup
+
+```bash
+pip install beautifulsoup4
+```
+
+## How to Use
+
+`share_post` adds a dictionary attribute to `article` which can be accessed via
+`article.share_post`. Keys of the dictionary are as follows,
+
+1. `facebook`
+1. `email`
+1. `twitter`
+1. `diaspora`
+1. `linkedin`
+1. `hacker-news`
+1. `reddit`
+
+## Template Example
+
+```html
+{% if article.share_post and article.status != 'draft' %}
+<section>
+  <p id="post-share-links">
+    Share on:
+    <a href="{{article.share_post['diaspora']}}" target="_blank" title="Share on Diaspora">Diaspora*</a>
+    ❄
+    <a href="{{article.share_post['twitter']}}" target="_blank" title="Share on Twitter">Twitter</a>
+    ❄
+    <a href="{{article.share_post['facebook']}}" target="_blank" title="Share on Facebook">Facebook</a>
+    ❄
+    <a href="{{article.share_post['linkedin']}}" target="_blank" title="Share on LinkedIn">LinkedIn</a>
+    ❄
+    <a href="{{article.share_post['hacker-news']}}" target="_blank" title="Share on HackerNews">HackerNews</a>
+    ❄
+    <a href="{{article.share_post['email']}}" target="_blank" title="Share via Email">Email</a>
+    ❄
+    <a href="{{article.share_post['reddit']}}" target="_blank" title="Share via Reddit">Reddit</a>
+  </p>
+</section>
+{% endif %}
+```
diff --git a/pelican-plugins/share_post/__init__.py b/pelican-plugins/share_post/__init__.py
new file mode 100644
index 0000000..4185ce8
--- /dev/null
+++ b/pelican-plugins/share_post/__init__.py
@@ -0,0 +1 @@
+from .share_post import *  # noqa
diff --git a/pelican-plugins/share_post/share_post.py b/pelican-plugins/share_post/share_post.py
new file mode 100644
index 0000000..d2a3c64
--- /dev/null
+++ b/pelican-plugins/share_post/share_post.py
@@ -0,0 +1,100 @@
+"""
+Share Post plugin.
+
+This plugin adds share URL to article. These links are textual which means no
+online tracking of your readers.
+"""
+
+from bs4 import BeautifulSoup
+
+from pelican import contents, signals
+from pelican.generators import ArticlesGenerator, PagesGenerator
+
+try:
+    from urllib.parse import quote
+except ImportError:
+    from urllib import quote
+
+
+def article_title(content):
+    main_title = BeautifulSoup(content.title, 'html.parser').get_text().strip()
+    sub_title = ''
+    if hasattr(content, 'subtitle'):
+        sub_title = ' ' + BeautifulSoup(content.subtitle, 'html.parser').get_text().strip()  # noqa
+    return quote(('%s%s' % (main_title, sub_title)).encode('utf-8'))
+
+
+def article_url(content):
+    site_url = content.settings['SITEURL']
+    return quote(('%s/%s' % (site_url, content.url)).encode('utf-8'))
+
+
+def article_summary(content):
+    return quote(BeautifulSoup(content.summary, 'html.parser').get_text().strip().encode('utf-8'))  # noqa
+
+
+def twitter_hastags(content):
+    tags = getattr(content, 'tags', [])
+    hashtags = ','.join((tag.slug for tag in tags))
+    return '' if not hashtags else '&hashtags=%s' % hashtags
+
+
+def twitter_via(content):
+    twitter_username = content.settings.get('TWITTER_USERNAME', '')
+    return '' if not twitter_username else '&via=%s' % twitter_username
+
+
+def share_post(content):
+    if isinstance(content, contents.Static):
+        return
+
+    title = article_title(content)
+    url = article_url(content)
+    summary = article_summary(content)
+    hastags = twitter_hastags(content)
+    via = twitter_via(content)
+
+    mail_link = 'mailto:?subject=%s&amp;body=%s' % (title, url)
+    diaspora_link = 'https://sharetodiaspora.github.io/?title=%s&url=%s' % (
+        title, url)
+    facebook_link = 'https://www.facebook.com/sharer/sharer.php?u=%s' % url
+    twitter_link = 'https://twitter.com/intent/tweet?text=%s&url=%s%s%s' % (
+        title, url, via, hastags)
+    hackernews_link = 'https://news.ycombinator.com/submitlink?t=%s&u=%s' % (
+        title, url)
+    linkedin_link = 'https://www.linkedin.com/shareArticle?mini=true&url=%s&title=%s&summary=%s&source=%s' % (  # noqa
+        url, title, summary, url
+    )
+    reddit_link = 'https://www.reddit.com/submit?url=%s&title=%s' % (
+        url, title)
+
+    content.share_post = {
+        'diaspora': diaspora_link,
+        'twitter': twitter_link,
+        'facebook': facebook_link,
+        'linkedin': linkedin_link,
+        'hacker-news': hackernews_link,
+        'email': mail_link,
+        'reddit': reddit_link,
+    }
+
+
+def run_plugin(generators):
+    for generator in generators:
+        if isinstance(generator, ArticlesGenerator):
+            for article in generator.articles:
+                share_post(article)
+                for translation in article.translations:
+                    share_post(translation)
+        elif isinstance(generator, PagesGenerator):
+            for page in generator.pages:
+                share_post(page)
+
+
+def register():
+    try:
+        signals.all_generators_finalized.connect(run_plugin)
+    except AttributeError:
+        # NOTE: This results in #314 so shouldn't really be relied on
+        # https://github.com/getpelican/pelican-plugins/issues/314
+        signals.content_object_init.connect(share_post)
diff --git a/pelican-plugins/shortcodes/README.md b/pelican-plugins/shortcodes/README.md
new file mode 100644
index 0000000..4f9a9fd
--- /dev/null
+++ b/pelican-plugins/shortcodes/README.md
@@ -0,0 +1,61 @@
+# pelican-shortcodes
+
+This plugin allows to define macros called shortcodes in content pages that will be expanded as jinja2 templates.
+
+_inspired by [lektor-shortcodes](https://github.com/skorokithakis/lektor-shortcodes)_
+
+The purpose of this plugin is to allow explicit and quick jinja2 templating in your content without compromising markdown/rst.
+
+# Example
+
+    #pelicanconf.py
+
+    SHORTCODES = {
+        'image': "<img src=/images/{{src}}>{{desc|title}}<img>"""
+    }
+
+Then in your content:
+
+    [% image src=foo.png desc="this is a test" %]
+
+will become:
+
+    <img src=/images/foo.png>This Is A Test<img>
+
+# Rules
+
+Shortcode patterns follows:
+
+    [% shortcode_name kwarg=value kwarg="value" kwarg='value' %]
+
+Shortcode pattern rules:
+
+* shortcodes must be single line
+* spaces are important, i.e. there should be space after `[%` and before `%]`
+* shortcode_name cannot contain spaces
+* kwargs are separated by a space
+* kwargs can be surrounded by quotes but not necessary
+
+# Recipes
+
+Some shortcode examples:
+
+    SHORTCODES = {
+        # image with caption
+        'image': "<img src=/images/{{src}} title={{desc}}></img><figcaption>{{desc}}</figcatpion>"
+
+        # embed looping mp4 gifs
+        'mp4gif': " <video width="480" height="240" autoplay loop muted title="{{title}}"><source src="/gifs/{{gif}}" type="video/mp4"></video>
+    }
+
+## Install
+
+    #pelicanconf.py    
+    PLUGINS = ['shortcodes']
+    SHORTCODES = {
+        # your shortcodes go here
+        # shortcode_name: jinja2 template string
+        'image': "<img src=/images/{{src}}>{{desc|title}}<img>"""
+    }
+    
+    
diff --git a/pelican-plugins/shortcodes/__init__.py b/pelican-plugins/shortcodes/__init__.py
new file mode 100644
index 0000000..4063071
--- /dev/null
+++ b/pelican-plugins/shortcodes/__init__.py
@@ -0,0 +1 @@
+from .shortcodes import *
\ No newline at end of file
diff --git a/pelican-plugins/shortcodes/shortcodes.py b/pelican-plugins/shortcodes/shortcodes.py
new file mode 100644
index 0000000..f9d7f30
--- /dev/null
+++ b/pelican-plugins/shortcodes/shortcodes.py
@@ -0,0 +1,59 @@
+"""
+shortcodes.py
+=============
+Copyright: AGPLv3 <Bernardas Ališauskas @ bernardas.alisauskas@pm.me>
+
+This plugin allows to define macros called shortcodes in content pages that will be expanded as jinja2 templates.
+The purpose of this plugin is to allow explicit and quick jinja2 templating in your content without compromising markdown/rst.
+
+Example:
+
+    #pelicanconf.py
+
+    SHORTCODES = {
+        'image': "<img src=/images/{{src}}>{{desc|title}}<img>"
+    }
+
+Then in your content:
+
+    [% image src=foo.png desc="this is a test" %]
+
+will become:
+
+    <img src=/images/foo.png>This Is A Test<img>
+"""
+import re
+from typing import Match, Dict
+
+from jinja2 import Template
+from pelican import signals
+from pelican.contents import Content
+
+SETTINGS_NAME = 'SHORTCODES'
+
+
+def expand_shortcodes(text: str, shortcodes: Dict[str, str]) -> str:
+    def repl(group: Match):
+        """replace shortocodes with evaluated templates"""
+        match = group.groups()[0]
+        func, args = match.split(' ', 1)
+        args = re.split('(\w+=)', args)
+        args = [a.strip("""'" """) for a in args if a]
+        kwargs = {args[i].strip('='): args[i + 1] for i in range(0, len(args), 2)}
+        try:
+            return Template(shortcodes[func]).render(**kwargs)
+        except KeyError:
+            raise KeyError('shortcode {} not found'.format(func))
+
+    return re.sub(r'\[% (.+?) %\]', repl, text)
+
+
+def content_object_init(instance: Content):
+    shortcodes = instance.settings.get(SETTINGS_NAME)
+    if not shortcodes or not instance._content:
+        return
+    instance._content = expand_shortcodes(instance._content, shortcodes)
+
+
+def register():
+    signals.content_object_init.connect(content_object_init)
diff --git a/pelican-plugins/shortcodes/test_shortcodes.py b/pelican-plugins/shortcodes/test_shortcodes.py
new file mode 100644
index 0000000..ff4d8b8
--- /dev/null
+++ b/pelican-plugins/shortcodes/test_shortcodes.py
@@ -0,0 +1,35 @@
+import pytest
+
+from .shortcodes import expand_shortcodes
+
+
+def test_expand_shortcodes():
+    shortcode_map = {
+        'image': """<img src={{src}} title={{title}}> {{desc}}</img>"""
+    }
+    text = """
+    This is a test foo
+
+    {} 
+    
+    more text
+    """
+
+    expected = {
+        """[% image src="image_nice.png" desc='meow meow' title=woof %]""":
+            "<img src=image_nice.png title=woof> meow meow</img>",
+        """[% image src=src desc=desc title=title %]""":
+            "<img src=src title=title> desc</img>",
+        """[% image src="src " desc=" desc" title=''' title ''' %]""":
+            "<img src=src title=title> desc</img>",
+    }
+    for short_code, exp in expected.items():
+        assert expand_shortcodes(text.format(short_code), shortcode_map) == text.format(exp)
+
+    expected_errors = {
+        """[% short_code_not_there src="src " desc=" desc" title=''' title ''' %]""":
+        KeyError,
+    }
+    with pytest.raises(KeyError):
+        for short_code, exp in expected_errors.items():
+            assert expand_shortcodes(text.format(short_code), shortcode_map)
diff --git a/pelican-plugins/show_source/ReadMe.rst b/pelican-plugins/show_source/ReadMe.rst
new file mode 100644
index 0000000..b5990fe
--- /dev/null
+++ b/pelican-plugins/show_source/ReadMe.rst
@@ -0,0 +1,129 @@
+Show Source plugin
+------------------
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/show-source>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
+
+The plugin allows you to place a link to the source text of your posts in the
+same way that `Sphinx`_ does. It works for both pages and articles.
+
+Plugin Activation
+~~~~~~~~~~~~~~~~~
+
+To activate the plugin ensure that you have ``SHOW_SOURCE_ON_SIDEBAR = True`` or
+``SHOW_SOURCE_IN_SECTION = True`` your settings file.
+
+Making Source Available for Posts
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In order to mark posts so that their source may be seen use the following
+metadata values (unless overridden)- for reStructuredText documents:
+
+.. code-block:: reStructuredText
+
+    :show_source: True
+
+or, in Markdown syntax
+
+.. code-block:: Markdown
+
+    Show_source: True
+
+The plugin will render your source document URL to a corresponding
+``article.show_source_url`` (or ``page.show_source_url``) attribute which is
+then accessible in the site templates.
+
+Show Source in the Templates
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To get the show source links on the article or page you will have to modify your
+theme, either as a sidebar display or at the foot of an article.
+
+Article or Page Sidebar Display
+*******************************
+
+How to get the source link to appear in the sidebar using the
+`pelican-bootstrap3`_ theme:
+
+.. code-block:: HTML
+
+    {% if SHOW_SOURCE_ON_SIDEBAR %}
+        {% if (article and article.show_source_url) or (page and page.show_source_url) %}
+            <li class="list-group-item"><h4><i class="fa fa-tags fa-file-text"></i><span class="icon-label">This Page</span></h4>
+                <ul class="list-group">
+                    <li class="list-group-item">
+                        {% if article %}
+                        <a href="{{ SITEURL }}/{{ article.show_source_url }}">Show source</a>
+                        {% elif page %}
+                        <a href="{{ SITEURL }}/{{ page.show_source_url }}">Show source</a>
+                        {% endif %}
+                    </li>
+                </ul>
+            </li>
+        {% endif %}
+    {% endif %}
+
+Article Footer Display
+**********************
+
+Here's some code (yes, `pelican-bootstrap3`_ again) to enable a souce link at
+the bottom of an article:
+
+.. code-block:: HTML
+
+    {% if SHOW_SOURCE_IN_SECTION %}
+        {% if article and article.show_source_url %}
+        <section class="well" id="show-source">
+            <h4>This Page</h4>
+            <ul>
+                <a href="{{ SITEURL }}/{{ article.show_source_url }}">Show source</a>
+            </ul>
+        </section>
+        {% endif %}
+    {% endif %}
+
+
+Overriding Default Plugin Behaviour
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The default behaviour of the plugin is that revealing source is enabled on a
+case by case basis. This can be changed by the use of
+:py:`SHOW_SOURCE_ALL_POSTS = True` in the settings file. This does mean that the
+plugin will publish all source documents no matter whether ``show_source`` is
+set in the metadata or not.
+
+Unless overridden, each document is saved as the article or page slug attribute
+with a ``.txt`` extension.
+
+So for example, if your configuration had ``ARTICLE_SAVE_AS`` configured like
+so:
+
+.. code-block:: python
+
+    ARTICLE_SAVE_AS = 'posts/{date:%Y}/{date:%m}/{slug}/index.html'
+
+Your static HTML post and source text document will be like the following:
+
+.. code-block:: Text
+
+    posts/2016/10/welcome-to-my article/index.html
+    posts/2016/10/welcome-to-my article/welcome-to-my article.txt
+
+You can add the ``SHOW_SOURCE_FILENAME`` variable in your settings file to
+override the source file name, so you could set the following:
+
+.. code-block:: python
+
+    SHOW_SOURCE_FILENAME = 'my_source_file.txt'
+
+So with the ``ARTICLE_SAVE_AS`` configured as above, the files would be saved
+thus:
+
+.. code-block:: Text
+
+    posts/2016/10/welcome-to-my article/index.html
+    posts/2016/10/welcome-to-my article/my_source_file.txt
+
+This is the same behaviour for pages also.
+
+.. _`Sphinx`: http://www.sphinx-doc.org/
+.. _`pelican-bootstrap3`: https://github.com/getpelican/pelican-themes/tree/master/pelican-bootstrap3
diff --git a/pelican-plugins/show_source/__init__.py b/pelican-plugins/show_source/__init__.py
new file mode 100644
index 0000000..bdb4d9c
--- /dev/null
+++ b/pelican-plugins/show_source/__init__.py
@@ -0,0 +1 @@
+from .show_source import *
diff --git a/pelican-plugins/show_source/show_source.py b/pelican-plugins/show_source/show_source.py
new file mode 100644
index 0000000..bc36be8
--- /dev/null
+++ b/pelican-plugins/show_source/show_source.py
@@ -0,0 +1,86 @@
+import os
+import logging
+from six.moves.urllib.parse import urljoin
+import six
+from pelican import signals
+from pelican.utils import pelican_open
+
+if not six.PY3:
+    from codecs import open
+
+logger = logging.getLogger(__name__)
+source_files = []
+PROCESS = ['articles', 'pages', 'drafts']
+
+def link_source_files(generator):
+    """
+    Processes each article/page object and formulates copy from and copy
+    to destinations, as well as adding a source file URL as an attribute.
+    """
+    # Get all attributes from the generator that are articles or pages
+    posts = [
+        getattr(generator, attr, None) for attr in PROCESS
+        if getattr(generator, attr, None) is not None]
+    # Work on each item
+    for post in posts[0]:
+        if not 'SHOW_SOURCE_ON_SIDEBAR' in generator.settings and \
+            not 'SHOW_SOURCE_IN_SECTION' in generator.settings:
+            return
+        # Only try this when specified in metadata or SHOW_SOURCE_ALL_POSTS
+        # override is present in settings
+        if 'SHOW_SOURCE_ALL_POSTS' in generator.settings or \
+            'show_source' in post.metadata:
+            # Source file name can be optionally set in config
+            show_source_filename = generator.settings.get(
+                'SHOW_SOURCE_FILENAME', '{}.txt'.format(post.slug)
+                )
+            try:
+                # Get the full path to the original source file
+                source_out = os.path.join(
+                    post.settings['OUTPUT_PATH'], post.save_as
+                    )
+                # Get the path to the original source file
+                source_out_path = os.path.split(source_out)[0]
+                # Create 'copy to' destination for writing later
+                copy_to = os.path.join(
+                    source_out_path, show_source_filename
+                    )
+                # Add file to published path
+                source_url = urljoin(
+                    post.save_as, show_source_filename
+                    )
+            except Exception:
+                return
+            # Format post source dict & populate
+            out = dict()
+            out['copy_raw_from'] = post.source_path
+            out['copy_raw_to'] = copy_to
+            logger.debug('Linked %s to %s', post.source_path, copy_to)
+            source_files.append(out)
+            # Also add the source path to the post as an attribute for tpls
+            post.show_source_url = source_url
+
+def _copy_from_to(from_file, to_file):
+    """
+    A very rough and ready copy from / to function.
+    """
+    with pelican_open(from_file) as text_in:
+        encoding = 'utf-8'
+        with open(to_file, 'w', encoding=encoding) as text_out:
+            text_out.write(text_in)
+            logger.info('Writing %s', to_file)
+
+def write_source_files(*args, **kwargs):
+    """
+    Called by the `page_writer_finalized` signal to process source files.
+    """
+    for source in source_files:
+        _copy_from_to(source['copy_raw_from'], source['copy_raw_to'])
+
+def register():
+    """
+    Calls the shots, based on signals
+    """
+    signals.article_generator_finalized.connect(link_source_files)
+    signals.page_generator_finalized.connect(link_source_files)
+    signals.page_writer_finalized.connect(write_source_files)
diff --git a/pelican-plugins/simple_footnotes/README.md b/pelican-plugins/simple_footnotes/README.md
new file mode 100644
index 0000000..52550c4
--- /dev/null
+++ b/pelican-plugins/simple_footnotes/README.md
@@ -0,0 +1,28 @@
+Simple Footnotes
+================
+
+**NOTE: [This plugin has been moved to its own repository](https://github.com/pelican-plugins/simple-footnotes). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.**
+
+A Pelican plugin to add footnotes to blog posts.
+
+When writing a post or page, add a footnote like this:
+
+    Here's my written text[ref]and here is a footnote[/ref].
+
+This will appear as, roughly:
+
+Here's my written text<sup>1</sup>
+
+ 1. and here is a footnote ↩
+
+Inspired by Andrew Nacin's [Simple Footnotes WordPress plugin](http://wordpress.org/plugins/simple-footnotes/).
+
+Requirements
+============
+
+Needs html5lib, so you'll want to `pip install html5lib` before running.
+
+Should work with any content format (ReST, Markdown, whatever), because
+it looks for the `[ref]` and `[/ref]` once the conversion to HTML has happened.
+
+Stuart Langridge, http://www.kryogenix.org/, February 2014.
diff --git a/pelican-plugins/simple_footnotes/__init__.py b/pelican-plugins/simple_footnotes/__init__.py
new file mode 100644
index 0000000..2f958a8
--- /dev/null
+++ b/pelican-plugins/simple_footnotes/__init__.py
@@ -0,0 +1 @@
+from .simple_footnotes import *
diff --git a/pelican-plugins/simple_footnotes/requirements.txt b/pelican-plugins/simple_footnotes/requirements.txt
new file mode 100755
index 0000000..1e92cdf
--- /dev/null
+++ b/pelican-plugins/simple_footnotes/requirements.txt
@@ -0,0 +1 @@
+html5lib
\ No newline at end of file
diff --git a/pelican-plugins/simple_footnotes/simple_footnotes.py b/pelican-plugins/simple_footnotes/simple_footnotes.py
new file mode 100644
index 0000000..3f6bb46
--- /dev/null
+++ b/pelican-plugins/simple_footnotes/simple_footnotes.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*- #
+
+from pelican import signals
+import html5lib
+import six
+
+RAW_FOOTNOTE_CONTAINERS = ["code"]
+
+
+def getText(node, recursive=False):
+    """Get all the text associated with this node.
+       With recursive == True, all text from child nodes is retrieved."""
+    L = [u'']
+    for n in node.childNodes:
+        if n.nodeType in (node.TEXT_NODE, node.CDATA_SECTION_NODE):
+            L.append(n.data)
+        else:
+            if not recursive:
+                return None
+        L.append(getText(n))
+    return u''.join(L)
+
+
+def sequence_gen(genlist):
+    for gen in genlist:
+        for elem in gen:
+            yield elem
+
+
+def parse_for_footnotes(article_or_page_generator):
+    all_content = [
+        getattr(article_or_page_generator, attr, None) \
+        for attr in [u'articles', u'drafts', u'pages']]
+    all_content = [x for x in all_content if x is not None]
+    for article in sequence_gen(all_content):
+        if u"[ref]" in article._content and u"[/ref]" in article._content:
+            content = article._content.replace(u"[ref]", u"<x-simple-footnote>").replace(u"[/ref]",
+                                                                                         u"</x-simple-footnote>")
+            parser = html5lib.HTMLParser(tree=html5lib.getTreeBuilder(u"dom"))
+            dom = parser.parse(content)
+            endnotes = []
+            count = 0
+            for footnote in dom.getElementsByTagName(u"x-simple-footnote"):
+                pn = footnote
+                leavealone = False
+                while pn:
+                    if pn.nodeName in RAW_FOOTNOTE_CONTAINERS:
+                        leavealone = True
+                        break
+                    pn = pn.parentNode
+                if leavealone:
+                    continue
+                count += 1
+                fnid = u"sf-%s-%s" % (article.slug, count)
+                fnbackid = u"%s-back" % (fnid,)
+                endnotes.append((footnote, fnid, fnbackid))
+                number = dom.createElement(u"sup")
+                number.setAttribute(u"id", fnbackid)
+                numbera = dom.createElement(u"a")
+                numbera.setAttribute(u"href", u"#%s" % fnid)
+                numbera.setAttribute(u"class", u"simple-footnote")
+                numbera.appendChild(dom.createTextNode(six.text_type(count)))
+                txt = getText(footnote, recursive=True).replace(u"\n", u" ")
+                numbera.setAttribute(u"title", txt)
+                number.appendChild(numbera)
+                footnote.parentNode.insertBefore(number, footnote)
+            if endnotes:
+                ol = dom.createElement(u"ol")
+                ol.setAttribute(u"class", u"simple-footnotes")
+                for e, fnid, fnbackid in endnotes:
+                    li = dom.createElement(u"li")
+                    li.setAttribute(u"id", fnid)
+                    while e.firstChild:
+                        li.appendChild(e.firstChild)
+                    backlink = dom.createElement(u"a")
+                    backlink.setAttribute(u"href", u"#%s" % fnbackid)
+                    backlink.setAttribute(u"class", u"simple-footnote-back")
+                    backlink.appendChild(dom.createTextNode(u'\u21a9'))
+                    li.appendChild(dom.createTextNode(u" "))
+                    li.appendChild(backlink)
+                    ol.appendChild(li)
+                    e.parentNode.removeChild(e)
+                dom.getElementsByTagName(u"body")[0].appendChild(ol)
+                s = html5lib.serializer.HTMLSerializer(omit_optional_tags=False, quote_attr_values='legacy')
+                output_generator = s.serialize(
+                    html5lib.treewalkers.getTreeWalker(u"dom")(dom.getElementsByTagName(u"body")[0]))
+                article._content = u"".join(list(output_generator)).replace(
+                    u"<x-simple-footnote>", u"[ref]").replace(u"</x-simple-footnote>", u"[/ref]").replace(
+                    u"<body>", u"").replace(u"</body>", u"")
+
+
+def register():
+    signals.article_generator_finalized.connect(parse_for_footnotes)
+    signals.page_generator_finalized.connect(parse_for_footnotes)
diff --git a/pelican-plugins/simple_footnotes/test_simple_footnotes.py b/pelican-plugins/simple_footnotes/test_simple_footnotes.py
new file mode 100644
index 0000000..9a29c21
--- /dev/null
+++ b/pelican-plugins/simple_footnotes/test_simple_footnotes.py
@@ -0,0 +1,32 @@
+import unittest
+from simple_footnotes import parse_for_footnotes
+
+class PseudoArticleGenerator(object):
+    articles = []
+class PseudoArticle(object):
+    _content = ""
+    slug = "article"
+
+class TestFootnotes(unittest.TestCase):
+
+    def _expect(self, input, expected_output):
+        ag = PseudoArticleGenerator()
+        art = PseudoArticle()
+        art._content = input
+        ag.articles = [art]
+        parse_for_footnotes(ag)
+        self.assertEqual(art._content, expected_output)
+
+    def test_simple(self):
+        self._expect('words[ref]footnote[/ref]end',
+        ('words<sup id=sf-article-1-back><a href=#sf-article-1 class=simple-footnote title=footnote>1</a></sup>end'
+         '<ol class=simple-footnotes>'
+         u'<li id=sf-article-1>footnote <a href=#sf-article-1-back class=simple-footnote-back>\u21a9</a></li>'
+         '</ol>'))
+
+    def test_no_footnote_inside_code(self):
+        self._expect("words<code>this is code[ref]footnote[/ref] end code </code> end",
+            "words<code>this is code[ref]footnote[/ref] end code </code> end")
+
+if __name__ == '__main__':
+    unittest.main()
\ No newline at end of file
diff --git a/pelican-plugins/sitemap/Readme.rst b/pelican-plugins/sitemap/Readme.rst
new file mode 100644
index 0000000..bc26412
--- /dev/null
+++ b/pelican-plugins/sitemap/Readme.rst
@@ -0,0 +1,83 @@
+Sitemap
+-------
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/sitemap>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
+
+-------------------------------------------------------------------------------
+
+This plugin generates plain-text or XML sitemaps. You can use the ``SITEMAP``
+variable in your settings file to configure the behavior of the plugin.
+
+The ``SITEMAP`` variable must be a Python dictionary and can contain these keys:
+
+- ``format``, which sets the output format of the plugin (``xml`` or ``txt``)
+
+- ``priorities``, which is a dictionary with three keys:
+
+  - ``articles``, the priority for the URLs of the articles and their
+    translations
+
+  - ``pages``, the priority for the URLs of the static pages
+
+  - ``indexes``, the priority for the URLs of the index pages, such as tags,
+     author pages, categories indexes, archives, etc...
+
+  All the values of this dictionary must be decimal numbers between ``0`` and ``1``.
+
+- ``changefreqs``, which is a dictionary with three items:
+
+  - ``articles``, the update frequency of the articles
+
+  - ``pages``, the update frequency of the pages
+
+  - ``indexes``, the update frequency of the index pages
+
+  Valid frequency values are ``always``, ``hourly``, ``daily``, ``weekly``, ``monthly``,
+  ``yearly`` and ``never``.
+
+You can exclude URLs from being included in the sitemap via regular expressions.
+For example, to exclude all URLs containing ``tag/`` or ``category/`` you can
+use the following ``SITEMAP`` setting.
+
+.. code-block:: python
+
+    SITEMAP = {
+        'exclude': ['tag/', 'category/']
+    }
+
+If a key is missing or a value is incorrect, it will be replaced with the
+default value.
+
+You can also exclude an individual URL by adding metadata to it setting ``private``
+to ``True``.
+
+The sitemap is saved in ``<output_path>/sitemap.<format>``.
+
+.. note::
+   ``priorities`` and ``changefreqs`` are information for search engines.
+   They are only used in the XML sitemaps.
+   For more information: <http://www.sitemaps.org/protocol.html#xmlTagDefinitions>
+
+**Example**
+
+Here is an example configuration (it's also the default settings):
+
+.. code-block:: python
+
+    # Where your plug-ins reside
+    PLUGIN_PATHS = ['/where/you/cloned/it/pelican-plugins/', ]
+    PLUGINS=['sitemap',]
+
+    SITEMAP = {
+        'format': 'xml',
+        'priorities': {
+            'articles': 0.5,
+            'indexes': 0.5,
+            'pages': 0.5
+        },
+        'changefreqs': {
+            'articles': 'monthly',
+            'indexes': 'daily',
+            'pages': 'monthly'
+        }
+    }
diff --git a/pelican-plugins/sitemap/__init__.py b/pelican-plugins/sitemap/__init__.py
new file mode 100644
index 0000000..6523d3a
--- /dev/null
+++ b/pelican-plugins/sitemap/__init__.py
@@ -0,0 +1 @@
+from .sitemap import *
\ No newline at end of file
diff --git a/pelican-plugins/sitemap/sitemap.py b/pelican-plugins/sitemap/sitemap.py
new file mode 100644
index 0000000..80fca08
--- /dev/null
+++ b/pelican-plugins/sitemap/sitemap.py
@@ -0,0 +1,271 @@
+# -*- coding: utf-8 -*-
+'''
+Sitemap
+-------
+
+The sitemap plugin generates plain-text or XML sitemaps.
+'''
+
+from __future__ import unicode_literals
+
+import re
+import collections
+import os.path
+import logging
+
+from datetime import datetime
+from codecs import open
+from pytz import timezone
+
+from pelican import signals, contents
+from pelican.utils import get_date
+
+log = logging.getLogger(__name__)
+
+TXT_HEADER = """{0}/index.html
+{0}/archives.html
+{0}/tags.html
+{0}/categories.html
+"""
+
+XML_HEADER = """<?xml version="1.0" encoding="utf-8"?>
+<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
+xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+"""
+
+XML_URL = """
+<url>
+<loc>{0}/{1}</loc>
+<lastmod>{2}</lastmod>
+<changefreq>{3}</changefreq>
+<priority>{4}</priority>
+</url>
+"""
+
+XML_FOOTER = """
+</urlset>
+"""
+
+
+def format_date(date):
+    if date.tzinfo:
+        tz = date.strftime('%z')
+        tz = tz[:-2] + ':' + tz[-2:]
+    else:
+        tz = "-00:00"
+    return date.strftime("%Y-%m-%dT%H:%M:%S") + tz
+
+class SitemapGenerator(object):
+
+    def __init__(self, context, settings, path, theme, output_path, *null):
+
+        self.output_path = output_path
+        self.context = context
+        self.now = datetime.now()
+        self.siteurl = settings.get('SITEURL')
+
+        self.default_timezone = settings.get('TIMEZONE', 'UTC')
+        self.timezone = getattr(self, 'timezone', self.default_timezone)
+        self.timezone = timezone(self.timezone)
+
+        self.format = 'xml'
+
+        self.changefreqs = {
+            'articles': 'monthly',
+            'indexes': 'daily',
+            'pages': 'monthly'
+        }
+
+        self.priorities = {
+            'articles': 0.5,
+            'indexes': 0.5,
+            'pages': 0.5
+        }
+
+        self.sitemapExclude = []
+
+        config = settings.get('SITEMAP', {})
+
+        if not isinstance(config, dict):
+            log.warning("sitemap plugin: the SITEMAP setting must be a dict")
+        else:
+            fmt = config.get('format')
+            pris = config.get('priorities')
+            chfreqs = config.get('changefreqs')
+            self.sitemapExclude = config.get('exclude', [])
+
+            if fmt not in ('xml', 'txt'):
+                log.warning("sitemap plugin: SITEMAP['format'] must be `txt' or `xml'")
+                log.warning("sitemap plugin: Setting SITEMAP['format'] on `xml'")
+            elif fmt == 'txt':
+                self.format = fmt
+                return
+
+            valid_keys = ('articles', 'indexes', 'pages')
+            valid_chfreqs = ('always', 'hourly', 'daily', 'weekly', 'monthly',
+                    'yearly', 'never')
+
+            if isinstance(pris, dict):
+                # We use items for Py3k compat. .iteritems() otherwise
+                for k, v in pris.items():
+                    if k in valid_keys and not isinstance(v, (int, float)):
+                        default = self.priorities[k]
+                        log.warning("sitemap plugin: priorities must be numbers")
+                        log.warning("sitemap plugin: setting SITEMAP['priorities']"
+                                    "['{0}'] on {1}".format(k, default))
+                        pris[k] = default
+                self.priorities.update(pris)
+            elif pris is not None:
+                log.warning("sitemap plugin: SITEMAP['priorities'] must be a dict")
+                log.warning("sitemap plugin: using the default values")
+
+            if isinstance(chfreqs, dict):
+                # .items() for py3k compat.
+                for k, v in chfreqs.items():
+                    if k in valid_keys and v not in valid_chfreqs:
+                        default = self.changefreqs[k]
+                        log.warning("sitemap plugin: invalid changefreq `{0}'".format(v))
+                        log.warning("sitemap plugin: setting SITEMAP['changefreqs']"
+                                    "['{0}'] on '{1}'".format(k, default))
+                        chfreqs[k] = default
+                self.changefreqs.update(chfreqs)
+            elif chfreqs is not None:
+                log.warning("sitemap plugin: SITEMAP['changefreqs'] must be a dict")
+                log.warning("sitemap plugin: using the default values")
+
+    def write_url(self, page, fd):
+
+        if getattr(page, 'status', 'published') != 'published':
+            return
+           
+        if getattr(page, 'private', 'False') == 'True':
+            return
+
+        # We can disable categories/authors/etc by using False instead of ''
+        if not page.save_as:
+            return
+
+        page_path = os.path.join(self.output_path, page.save_as)
+        if not os.path.exists(page_path):
+            return
+
+        lastdate = getattr(page, 'date', self.now)
+        try:
+            lastdate = self.get_date_modified(page, lastdate)
+        except ValueError:
+            log.warning("sitemap plugin: " + page.save_as + " has invalid modification date,")
+            log.warning("sitemap plugin: using date value as lastmod.")
+        lastmod = format_date(lastdate)
+
+        if isinstance(page, contents.Article):
+            pri = self.priorities['articles']
+            chfreq = self.changefreqs['articles']
+        elif isinstance(page, contents.Page):
+            pri = self.priorities['pages']
+            chfreq = self.changefreqs['pages']
+        else:
+            pri = self.priorities['indexes']
+            chfreq = self.changefreqs['indexes']
+
+        pageurl = '' if page.url == 'index.html' else page.url
+
+        #Exclude URLs from the sitemap:
+        if self.format == 'xml':
+            flag = False
+            for regstr in self.sitemapExclude:
+                if re.match(regstr, pageurl):
+                    flag = True
+                    break
+            if not flag:
+                fd.write(XML_URL.format(self.siteurl, pageurl, lastmod, chfreq, pri))
+        else:
+            fd.write(self.siteurl + '/' + pageurl + '\n')
+
+    def get_date_modified(self, page, default):
+        if hasattr(page, 'modified'):
+            if isinstance(page.modified, datetime):
+                return page.modified
+            return get_date(page.modified)
+        else:
+            return default
+
+    def set_url_wrappers_modification_date(self, wrappers):
+        for (wrapper, articles) in wrappers:
+            lastmod = datetime.min.replace(tzinfo=self.timezone)
+            for article in articles:
+                lastmod = max(lastmod, article.date.replace(tzinfo=self.timezone))
+                try:
+                    modified = self.get_date_modified(article, datetime.min).replace(tzinfo=self.timezone)
+                    lastmod = max(lastmod, modified)
+                except ValueError:
+                    # Supressed: user will be notified.
+                    pass
+            setattr(wrapper, 'modified', str(lastmod))
+
+    def generate_output(self, writer):
+        path = os.path.join(self.output_path, 'sitemap.{0}'.format(self.format))
+
+        pages = self.context['pages'] + self.context['articles'] \
+                + [ c for (c, a) in self.context['categories']] \
+                + [ t for (t, a) in self.context['tags']] \
+                + [ a for (a, b) in self.context['authors']]
+
+        self.set_url_wrappers_modification_date(self.context['categories'])
+        self.set_url_wrappers_modification_date(self.context['tags'])
+        self.set_url_wrappers_modification_date(self.context['authors'])
+
+        for article in self.context['articles']:
+            pages += article.translations
+
+        log.info('writing {0}'.format(path))
+
+        with open(path, 'w', encoding='utf-8') as fd:
+
+            if self.format == 'xml':
+                fd.write(XML_HEADER)
+            else:
+                fd.write(TXT_HEADER.format(self.siteurl))
+
+            FakePage = collections.namedtuple('FakePage',
+                                              ['status',
+                                               'date',
+                                               'url',
+                                               'save_as'])
+
+            for standard_page in self.context['DIRECT_TEMPLATES']:
+                standard_page_url = self.context.get('{}_URL'.format(standard_page.upper()))
+                standard_page_save_as = self.context.get('{}_SAVE_AS'.format(standard_page.upper()))
+                fake = FakePage(status='published',
+                                date=self.now,
+                                url=standard_page_url or '{}.html'.format(standard_page),
+                                save_as=standard_page_save_as or '{}.html'.format(standard_page))
+                self.write_url(fake, fd)
+
+            # add template pages
+            # We use items for Py3k compat. .iteritems() otherwise
+            for path, template_page_url in self.context['TEMPLATE_PAGES'].items():
+
+                # don't add duplicate entry for index page
+                if template_page_url == 'index.html':
+                    continue
+
+                fake = FakePage(status='published',
+                                date=self.now,
+                                url=template_page_url,
+                                save_as=template_page_url)
+                self.write_url(fake, fd)
+
+            for page in pages:
+                self.write_url(page, fd)
+
+            if self.format == 'xml':
+                fd.write(XML_FOOTER)
+
+
+def get_generators(generators):
+    return SitemapGenerator
+
+
+def register():
+    signals.get_generators.connect(get_generators)
diff --git a/pelican-plugins/slim/README.md b/pelican-plugins/slim/README.md
new file mode 100644
index 0000000..6c93a41
--- /dev/null
+++ b/pelican-plugins/slim/README.md
@@ -0,0 +1,36 @@
+# Slim
+
+This plugin uses [Plim](http://plim.readthedocs.org/en/latest/), the Python port of [Slim](http://slim-lang.com), to render your theme's template files, instead of Jinja2. It works best if you have (handcrafted and are using) a Plim based theme. :)
+
+## Installation
+
+This plugin depends on the plim, beautifulsoup4, and htmlmin, which can be installed via pip:
+
+```
+pip install plim
+pip install beautifulsoup4
+pip install htmlmin
+```
+
+If you downloaded this module as part of the pelican-plugins repository, add it to your Pelican configuration as follows:
+
+```
+PLUGIN_PATH = '/path/to/pelican-plugins'
+PLUGINS = ['slim', ]
+```
+
+Otherwise, you can import it into Python as a normal module if you place this repository in your $PYTHONPATH.
+
+## Usage
+
+This plugin will break your Pelican project unless you are using a theme that follows the Plim syntax. As of 2015-04-24 Plim has not yet taken over the world, so if you want to use it, it probably means you need to write your own Plim theme before this plugin will be useful. 
+
+Once you've installed your Plim syntax theme, enabled the plugin and installed the dependencies listed above, you use Pelican normally to generate your site.
+
+## Settings
+
+Add `SLIM_OPTIONS = {'PRETTYIFY': True}` to pelicanconf.py to get prettyified HTML. 
+
+## About
+
+This plugin is a bit of a hack. It copies the builtin Writer and replaces the final rendering step, swapping out Jinja2 with Plim and then minifying or prettifying the HTML output.
diff --git a/pelican-plugins/slim/__init__.py b/pelican-plugins/slim/__init__.py
new file mode 100644
index 0000000..f21e902
--- /dev/null
+++ b/pelican-plugins/slim/__init__.py
@@ -0,0 +1 @@
+from .slim import *
diff --git a/pelican-plugins/slim/slim.py b/pelican-plugins/slim/slim.py
new file mode 100644
index 0000000..3878505
--- /dev/null
+++ b/pelican-plugins/slim/slim.py
@@ -0,0 +1,173 @@
+import os
+import sys
+import logging
+from pkg_resources import EntryPoint
+
+from jinja2 import Template, TemplateNotFound
+
+try:
+    import plim
+except ImportError:
+    plim = None
+
+try:
+    import mako.lookup
+except ImportError:
+    mako = None
+
+try:
+    from bs4 import BeautifulSoup as bs
+except ImportError:
+    bs = None
+
+try:
+    from htmlmin import minify
+except ImportError:
+    minify = None
+
+from pelican.writers import Writer, is_selected_for_writing
+from pelican.paginator import Paginator
+from pelican import signals
+
+logger = logging.getLogger(__name__)
+
+def get_writer(sender):
+
+    class PlimWriter(Writer):
+        def write_file(self, name, template, context, relative_urls=False,
+                       paginated=None, override_output=False, **kwargs):
+            """Render the template and write the file.
+            :param name: name of the file to output
+            :param template: template to use to generate the content
+            :param context: dict to pass to the templates.
+            :param relative_urls: use relative urls or absolutes ones
+            :param paginated: dict of article list to paginate - must have the
+                same length (same list in different orders)
+            :param override_output: boolean telling if we can override previous
+                output with the same name (and if next files written with the same
+                name should be skipped to keep that one)
+            :param **kwargs: additional variables to pass to the templates
+            """
+
+            if name is False or name == "" or\
+               not is_selected_for_writing(self.settings,\
+                   os.path.join(self.output_path, name)):
+                return
+            elif not name:
+                # other stuff, just return for now
+                return
+
+            def _render_using_plim(filename, localcontext):
+                """Render the template using Plim."""
+
+                root_dir = os.path.dirname(os.path.abspath(filename))
+                template_file = os.path.basename(filename)
+                lookup = mako.lookup.TemplateLookup(
+                    directories=[root_dir],
+                    input_encoding='utf-8',
+                    output_encoding='utf-8',
+                    preprocessor=plim.preprocessor,
+                    strict_undefined=True,
+                    default_filters=['trim'])
+
+                output = lookup.get_template(template_file).render_unicode(
+                    **localcontext)
+                if ('SLIM_OPTIONS' in self.settings and
+                        'PRETTYIFY' in self.settings['SLIM_OPTIONS'] and
+                        self.settings['SLIM_OPTIONS']['PRETTYIFY']):
+                    output = bs(output, 'html.parser').prettify() # prettify the html
+                else:
+                    output = minify(output) # minify the html
+                return output
+
+            def _write_file(template, localcontext, output_path, name, override):
+                """Render the template write the file."""
+                # set localsiteurl for context so that Contents can adjust links
+                if localcontext['localsiteurl']:
+                    context['localsiteurl'] = localcontext['localsiteurl']
+
+                output = _render_using_plim(template.filename, localcontext)
+                # output = template.render(localcontext) # render using jinja2
+
+                path = os.path.join(output_path, name)
+                try:
+                    os.makedirs(os.path.dirname(path))
+                except Exception:
+                    pass
+
+                with self._open_w(path, 'utf-8', override=override) as f:
+                    f.write(output)
+                logger.info('Writing %s', path)
+
+                # Send a signal to say we're writing a file with some specific
+                # local context.
+                signals.content_written.send(path, context=localcontext)
+
+            def _get_localcontext(context, name, kwargs, relative_urls):
+                localcontext = context.copy()
+                localcontext['localsiteurl'] = localcontext.get(
+                    'localsiteurl', None)
+                if relative_urls:
+                    relative_url = path_to_url(get_relative_path(name))
+                    localcontext['SITEURL'] = relative_url
+                    localcontext['localsiteurl'] = relative_url
+                localcontext['output_file'] = name
+                localcontext.update(kwargs)
+                return localcontext
+
+            # pagination
+            if paginated:
+
+                # pagination needed, init paginators
+                paginators = {key: Paginator(name, val, self.settings)
+                              for key, val in paginated.items()}
+
+                # generated pages, and write
+                for page_num in range(list(paginators.values())[0].num_pages):
+                    paginated_kwargs = kwargs.copy()
+                    for key in paginators.keys():
+                        paginator = paginators[key]
+                        previous_page = paginator.page(page_num) \
+                            if page_num > 0 else None
+                        page = paginator.page(page_num + 1)
+                        next_page = paginator.page(page_num + 2) \
+                            if page_num + 1 < paginator.num_pages else None
+                        paginated_kwargs.update(
+                            {'%s_paginator' % key: paginator,
+                             '%s_page' % key: page,
+                             '%s_previous_page' % key: previous_page,
+                             '%s_next_page' % key: next_page})
+
+                    localcontext = _get_localcontext(context, page.save_as,
+                        paginated_kwargs, relative_urls)
+                    _write_file(template, localcontext, self.output_path,
+                                page.save_as, override_output)
+            else:
+                # no pagination
+                localcontext = _get_localcontext(context, name, kwargs,
+                    relative_urls)
+                _write_file(template, localcontext, self.output_path, name,
+                            override_output)
+
+    return PlimWriter
+
+def register():
+    """Plugin registration."""
+    if not plim:
+        logger.warning('`slim` failed to load dependency `plim`. '
+                       '`slim` plugin not loaded.')
+        return
+    if not mako:
+        logger.warning('`slim` failed to load dependency `mako`. '
+                       '`slim` plugin not loaded.')
+        return
+    if not bs:
+        logger.warning('`slim` failed to load dependency `BeautifulSoup4`. '
+                       '`slim` plugin not loaded.')
+        return
+    if not minify:
+        logger.warning('`slim` failed to load dependency `htmlmin`. '
+                       '`slim` plugin not loaded.')
+        return
+
+    signals.get_writer.connect(get_writer)
diff --git a/pelican-plugins/static_comments/Readme.md b/pelican-plugins/static_comments/Readme.md
new file mode 100644
index 0000000..f95fbc4
--- /dev/null
+++ b/pelican-plugins/static_comments/Readme.md
@@ -0,0 +1,26 @@
+Static comments
+---------------
+
+This plugin allows you to add static comments to an article. By default the
+plugin looks for the comments of each article in a local file named
+``comments/{slug}.md``, where ``{slug}`` is the value of the slug tag for the
+article. The comments file should be formatted using markdown.
+
+Set the ``STATIC_COMMENTS`` parameter to True to enable the plugin. Default is
+False.
+
+Set the ``STATIC_COMMENTS_DIR`` parameter to the directory where the comments
+are located. Default is ``comments``.
+
+On the template side, you just have to add a section for the comments to your
+``article.html``, as in this example::
+
+    {% if STATIC_COMMENTS %}
+    <section id="comments" class="body">
+    <h2>Comments!</h2>
+    {{ article.metadata.static_comments }}
+    </section>
+    {% endif %}
+
+Here is an example of usage:
+<http://jesrui.sdf-eu.org/pelican-static-comments.html>
diff --git a/pelican-plugins/static_comments/__init__.py b/pelican-plugins/static_comments/__init__.py
new file mode 100644
index 0000000..9d131b2
--- /dev/null
+++ b/pelican-plugins/static_comments/__init__.py
@@ -0,0 +1 @@
+from .static_comments import *
diff --git a/pelican-plugins/static_comments/static_comments.py b/pelican-plugins/static_comments/static_comments.py
new file mode 100644
index 0000000..65c4491
--- /dev/null
+++ b/pelican-plugins/static_comments/static_comments.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+
+import codecs
+import logging
+import markdown
+import os
+
+logger = logging.getLogger(__name__)
+
+from pelican import signals
+
+
+def initialized(pelican):
+    from pelican.settings import DEFAULT_CONFIG
+    DEFAULT_CONFIG.setdefault('STATIC_COMMENTS', False)
+    DEFAULT_CONFIG.setdefault('STATIC_COMMENTS_DIR' 'comments')
+    if pelican:
+        pelican.settings.setdefault('STATIC_COMMENTS', False)
+        pelican.settings.setdefault('STATIC_COMMENTS_DIR', 'comments')
+
+
+def add_static_comments(gen, metadata):
+    if gen.settings['STATIC_COMMENTS'] != True:
+        return
+
+    if not 'slug' in metadata:
+        logger.warning("static_comments: "
+                "cant't locate comments file without slug tag in the article")
+        return
+
+    fname = os.path.join(gen.settings['STATIC_COMMENTS_DIR'],
+            metadata['slug'] + ".md")
+
+    if not os.path.exists(fname):
+        return
+
+    input_file = codecs.open(fname, mode="r", encoding="utf-8")
+    text = input_file.read()
+    html = markdown.markdown(text)
+
+    metadata['static_comments'] = html
+
+
+def register():
+    signals.initialized.connect(initialized)
+    signals.article_generator_context.connect(add_static_comments)
diff --git a/pelican-plugins/sub_parts/README.md b/pelican-plugins/sub_parts/README.md
new file mode 100644
index 0000000..761d167
--- /dev/null
+++ b/pelican-plugins/sub_parts/README.md
@@ -0,0 +1,62 @@
+# Sub-parts
+
+Use the Sub-parts plugin to break a very long article in multiple parts, without polluting the timeline with lots of small articles. Sub-parts are removed from timelines and categories but remain in tag and author pages.
+
+## Usage
+
+Article sub-parts have a compound slug with the slug of the parent, two hyphens (`--`), and some identifier. For example, if an article has the slug `karate`, then an article with the slug `karate--medals` would be a sub-part.
+
+This convention is very convenient if the slug is derived from the filename. For example, define the filename metadata as follows:
+
+    FILENAME_METADATA = '(?P<slug>(?P<date>\d{4}-\d{2}-\d{2})-[^.]+)
+
+Then, it is enough to name the files correctly. In the following example, the first Markdown article has two sub-parts:
+
+    ./content/blog/2015-03-21-karate.md
+    ./content/blog/2015-03-21-karate--attendees.md
+    ./content/blog/2015-03-21-karate--medals.md
+
+This plugin provides the following variables to your templates and modifies the titles of sub-part articles:
+
+`article.subparts`: for a parent article with sub-parts, the list of sub-part articles
+
+`article.subpart_of`: for a sub-part article, the parent article
+
+`article.subtitle`: the original title of the sub-part article
+
+`article.title`: compound title with the a comma and the title of the parent
+
+`article.subphotos`: for parent articles with sub-parts that have a gallery generated by the _Photos_ plugin, the total number of gallery photos in all sub-parts
+
+For example, add the following to the template `article.html`:
+
+    {% if article.subparts %}
+    <h2>Parts</h2>
+    <ul>
+    	{% for part in article.subparts %}
+    		<li><a href='{{ SITEURL }}/{{ part.url }}'>{{ part.subtitle }}</a>
+    	{% endfor %}
+    </ul>
+    {% endif %}
+    {% if article.subpart_of %}
+    <h2>Parts</h2>
+    <p>This article is part of <a href='{{ SITEURL }}/{{ article.subpart_of.url }}'>{{ article.subpart_of.title }}</a>:</p>
+    <ul>
+    	{% for part in article.subpart_of.subparts %}
+    		<li><a href='{{ SITEURL }}/{{ part.url }}'>{{ part.subtitle }}</a>
+    	{% endfor %}
+    </ul>
+    {% endif %}
+
+
+## Live sites using this plugin
+
+[pxquim.pt](http://pxquim.pt/) uses sub-parts and the _Photos_ plugin to publish photo galleries with thousands of photos. The Sub-parts plugin breaks the photo galleries into manageable chunks, possibly with different tags and authors.
+
+[pxquim.com](http://pxquim.com/) uses Sub-parts to cover conferences, where it makes sense to have a sub-part for each speaker.
+
+## What is the difference between Sub-part and Series?
+
+Series:	Connects separate articles, but never removes articles from timelines. Series is suited to connecting related articles that are published over time, e.g., a ten-part article written over several months, or a large festival with several independent performances.
+
+Sub-part: Articles that are subordinate to each other, hiding sub-articles from timelines. Sub-parts is suited to relating articles clustered together in time, where the sub-articles need the context of their parent article to be fully understood. For example, a 20-part photo gallery of a karate competition, or coverage of a conference.
diff --git a/pelican-plugins/sub_parts/__init__.py b/pelican-plugins/sub_parts/__init__.py
new file mode 100644
index 0000000..1dc0598
--- /dev/null
+++ b/pelican-plugins/sub_parts/__init__.py
@@ -0,0 +1 @@
+from .sub_parts import *
diff --git a/pelican-plugins/sub_parts/sub_parts.py b/pelican-plugins/sub_parts/sub_parts.py
new file mode 100644
index 0000000..1e8e748
--- /dev/null
+++ b/pelican-plugins/sub_parts/sub_parts.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+from pelican import signals
+import logging
+
+logger = logging.getLogger(__name__)
+
+
+def patch_subparts(generator):
+    generator.subparts = []
+    slugs = {}
+    for article in generator.articles:
+        slugs[article.slug] = article
+        if '--' in article.slug:
+            generator.subparts.append(article)
+    for article in generator.subparts:
+        logger.info('sub_part: Detected %s', article.slug)
+        (pslug, _) = article.slug.rsplit('--', 1)
+        if pslug in slugs:
+            parent = slugs[pslug]
+            if not hasattr(parent, 'subparts'):
+                parent.subparts = []
+            parent.subparts.append(article)
+            article.subpart_of = parent
+            article.subtitle = article.title
+            article.title = article.title + ", " + parent.title
+            generator.dates.remove(article)
+            generator.articles.remove(article)
+            if article.category:
+                for cat, arts in generator.categories:
+                    if cat.name == article.category.name:
+                        arts.remove(article)
+                        break
+                else:
+                    logger.error(
+                        'sub_part: Cannot remove sub-part from category %s',
+                        article.category)
+            if (hasattr(article, 'subphotos') or
+                    hasattr(article, 'photo_gallery')):
+                parent.subphotos = (
+                    getattr(parent, 'subphotos',
+                            len(getattr(parent, 'photo_gallery', []))) +
+                    getattr(article, 'subphotos', 0) +
+                    len(getattr(article, 'photo_gallery', [])))
+        else:
+            logger.error('sub_part: No parent for %s', pslug)
+        generator._update_context(('articles', 'dates', 'subparts'))
+
+
+def write_subparts(generator, writer):
+    for article in generator.subparts:
+        signals.article_generator_write_article.send(generator,
+                                                     content=article)
+        writer.write_file(
+            article.save_as, generator.get_template(article.template),
+            generator.context, article=article, category=article.category,
+            override_output=hasattr(article, 'override_save_as'),
+            relative_urls=generator.settings['RELATIVE_URLS'])
+    if len(generator.subparts) > 0:
+        print('sub_part: processed {} sub-parts.'.format(
+            len(generator.subparts)))
+
+
+def register():
+    signals.article_generator_finalized.connect(patch_subparts)
+    signals.article_writer_finalized.connect(write_subparts)
diff --git a/pelican-plugins/sub_parts/test_data/noparent.md b/pelican-plugins/sub_parts/test_data/noparent.md
new file mode 100644
index 0000000..63cfe43
--- /dev/null
+++ b/pelican-plugins/sub_parts/test_data/noparent.md
@@ -0,0 +1,4 @@
+title: No parent
+tags: atag
+
+Normal article.
diff --git a/pelican-plugins/sub_parts/test_data/parent--implicit.md b/pelican-plugins/sub_parts/test_data/parent--implicit.md
new file mode 100644
index 0000000..60797a9
--- /dev/null
+++ b/pelican-plugins/sub_parts/test_data/parent--implicit.md
@@ -0,0 +1,4 @@
+title: Implicit sub-article
+tags: atag
+
+Sub-article based on filename as implicit slug.
diff --git a/pelican-plugins/sub_parts/test_data/parent-explicit.md b/pelican-plugins/sub_parts/test_data/parent-explicit.md
new file mode 100644
index 0000000..d9b242b
--- /dev/null
+++ b/pelican-plugins/sub_parts/test_data/parent-explicit.md
@@ -0,0 +1,5 @@
+title: Explicit sub-article
+tags: atag
+slug: parent--explicit
+
+Explicit sub-article, based on explicit slug.
diff --git a/pelican-plugins/sub_parts/test_data/parent.md b/pelican-plugins/sub_parts/test_data/parent.md
new file mode 100644
index 0000000..2d0c6f8
--- /dev/null
+++ b/pelican-plugins/sub_parts/test_data/parent.md
@@ -0,0 +1,4 @@
+title: Parent
+tags: atag
+
+Parent article with two sub-articles.
diff --git a/pelican-plugins/sub_parts/test_sub_parts.py b/pelican-plugins/sub_parts/test_sub_parts.py
new file mode 100644
index 0000000..1a2f4ba
--- /dev/null
+++ b/pelican-plugins/sub_parts/test_sub_parts.py
@@ -0,0 +1,138 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os
+from shutil import rmtree
+from tempfile import mkdtemp
+
+from pelican.generators import ArticlesGenerator
+from pelican.tests.support import unittest, get_settings
+import sub_parts
+
+CUR_DIR = os.path.dirname(__file__)
+
+
+class TestSubParts(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.temp_path = mkdtemp(prefix='pelicantests.')
+        settings = get_settings(filenames={})
+        settings['PATH'] = os.path.join(CUR_DIR, 'test_data')
+        settings['AUTHOR'] = 'Me'
+        settings['DEFAULT_DATE'] = (1970, 1, 1)
+        settings['DEFAULT_CATEGORY'] = 'Default'
+        settings['FILENAME_METADATA'] = '(?P<slug>[^.]+)'
+        settings['PLUGINS'] = [sub_parts]
+        settings['CACHE_CONTENT'] = False
+        context = settings.copy()
+        context['generated_content'] = dict()
+        context['static_links'] = set()
+        cls.generator = ArticlesGenerator(
+            context=context, settings=settings,
+            path=settings['PATH'], theme=settings['THEME'], output_path=cls.temp_path)
+        cls.generator.generate_context()
+        cls.all_articles = list(cls.generator.articles)
+        sub_parts.patch_subparts(cls.generator)
+
+    @classmethod
+    def tearDownClass(cls):
+        rmtree(cls.temp_path)
+
+    def test_all_articles(self):
+        self.assertEqual(
+            sorted(['noparent', 'parent',
+                    'parent--explicit', 'parent--implicit']),
+            sorted([a.slug for a in self.all_articles]))
+
+    def test_articles(self):
+        self.assertEqual(
+            sorted(['noparent', 'parent']),
+            sorted([a.slug for a in self.generator.articles]))
+
+    def test_dates(self):
+        self.assertEqual(
+            sorted(['noparent', 'parent']),
+            sorted([a.slug for a in self.generator.dates]))
+
+    def test_categories(self):
+        self.assertEqual(
+            sorted(['noparent', 'parent']),
+            sorted([a.slug for a in self.generator.categories[0][1]]))
+
+    def test_tags(self):
+        self.assertEqual(
+            sorted([a.slug for a in self.all_articles]),
+            sorted([a.slug for a in self.generator.tags['atag']]))
+
+    def test_authors(self):
+        self.assertEqual(
+            sorted([a.slug for a in self.all_articles]),
+            sorted([a.slug for a in self.generator.authors[0][1]]))
+
+    def test_subparts(self):
+        for a in self.all_articles:
+            if a.slug == 'parent':
+                self.assertTrue(hasattr(a, 'subparts'))
+                self.assertEqual(
+                    sorted(['parent--explicit', 'parent--implicit']),
+                    sorted([a.slug for a in a.subparts]))
+            else:
+                self.assertFalse(hasattr(a, 'subparts'))
+
+    def test_subpart_of(self):
+        for a in self.all_articles:
+            if '--' in a.slug:
+                self.assertTrue(hasattr(a, 'subpart_of'))
+                self.assertEqual('parent', a.subpart_of.slug)
+            else:
+                self.assertFalse(hasattr(a, 'subpart_of'))
+
+    def test_subtitle(self):
+        for a in self.all_articles:
+            if '--' in a.slug:
+                self.assertTrue(hasattr(a, 'subtitle'))
+                self.assertEqual(a.title,
+                                 a.subtitle + ', ' + a.subpart_of.title)
+
+
+class TestSubPartsPhotos(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.temp_path = mkdtemp(prefix='pelicantests.')
+        settings = get_settings(filenames={})
+        settings['PATH'] = os.path.join(CUR_DIR, 'test_data')
+        settings['AUTHOR'] = 'Me'
+        settings['DEFAULT_DATE'] = (1970, 1, 1)
+        settings['DEFAULT_CATEGORY'] = 'Default'
+        settings['FILENAME_METADATA'] = '(?P<slug>[^.]+)'
+        settings['PLUGINS'] = [sub_parts]
+        settings['CACHE_CONTENT'] = False
+        context = settings.copy()
+        context['generated_content'] = dict()
+        context['static_links'] = set()
+        cls.generator = ArticlesGenerator(
+            context=context, settings=settings,
+            path=settings['PATH'], theme=settings['THEME'], output_path=cls.temp_path)
+        cls.generator.generate_context()
+        cls.all_articles = list(cls.generator.articles)
+        for a in cls.all_articles:
+            a.photo_gallery = [('i.jpg', 'i.jpg', 'it.jpg', '', '')]
+        sub_parts.patch_subparts(cls.generator)
+
+    @classmethod
+    def tearDownClass(cls):
+        rmtree(cls.temp_path)
+
+    def test_subphotos(self):
+        for a in self.all_articles:
+            if a.slug == 'parent':
+                self.assertTrue(hasattr(a, 'subphotos'))
+                self.assertEqual(3, a.subphotos)
+            else:
+                self.assertFalse(hasattr(a, 'subphotos'))
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/pelican-plugins/subcategory/README.md b/pelican-plugins/subcategory/README.md
new file mode 100644
index 0000000..9ec1f8e
--- /dev/null
+++ b/pelican-plugins/subcategory/README.md
@@ -0,0 +1,100 @@
+# Subcategory Plugin
+
+This plugin adds support for subcategories in addition to article categories.
+
+Subcategories are hierarchical. Each subcategory has a parent, which is either a regular category or another subcategory.
+
+Feeds can be generated for each subcategory, just like categories and tags.
+
+## Usage
+
+### Metadata
+
+Subcategories are an extension to categories. Add subcategories to an article's category metadata using a `/` like this:
+
+```
+Category: Regular Category/Sub-Category/Sub-Sub-category
+```
+
+Then create a `subcategory.html` template in your theme, similar to the `category.html` or `tag.html` templates.
+
+In your templates, `article.category` continues to act the same way. Your subcategories are stored in the `articles.subcategories` list. To create breadcrumb-style navigation you might try something like this:
+
+```
+<nav class="breadcrumb">
+<ol>
+    <li>
+        <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category}}</a>
+    </li>
+{% for subcategory in article.subcategories %}
+    <li>
+        <a href="{{ SITEURL }}/{{ subcategory.url }}">{{ subcategory.shortname }}</a>
+    </li>
+{% endfor %}
+</ol>
+</nav>
+```
+
+### Subcategory folders
+
+To specify subcategories using folders you can configure `PATH_METADATA`<br>
+to extract the article path (containing all category and subcategory folders) into the `subcategory_path` metadata. The following settings would use all available subcategories for the hierarchy:
+
+```
+PATH_METADATA= '(?P<subcategory_path>.*)/.*'
+```
+
+You can limit the depth of generated subcategories by adjusting the regular expression to only include a specific number of path separators (`/`). For example, the following would generate only a single level of subcategories regardless of the folder tree depth:
+
+```
+PATH_METADATA= '(?P<subcategory_path>[^/]*/[^/]*)/.*'
+```
+
+## Subcategory Names
+
+Each subcategory's full name is a `/`-separated list of it parents and itself. This is necessary to keep each subcategory unique. It means you can have `Category 1/Foo` and `Category 2/Foo` and they won't interfere with each other. Each subcategory has an attribute `shortname` which is just the name without its parents associated. For example if you had...
+
+```
+Category/Sub Category1/Sub Category2
+```
+
+... the full name for Sub Category2 would be `Category/Sub Category1/Sub Category2` and the "short name" would be `Sub Category2`.
+
+If you need to use the slug, it is generated from the short name -- not the full name.
+
+## Settings
+
+Consistent with the default settings for Tags and Categories, the default settings for subcategories are:
+
+```
+'SUBCATEGORY_SAVE_AS' = os.path.join('subcategory', '{savepath}.html')
+'SUBCATEGORY_URL' = 'subcategory/(fullurl).html'
+```
+
+`savepath` and `fullurl` are generated recursively, using slugs. So the full URL would be:
+
+```
+category-slug/sub-category-slug/sub-sub-category-slug
+```
+
+... with `savepath` being similar but joined using `os.path.join`.
+
+Similarly, you can save subcategory feeds by adding one of the following to your Pelican configuration file:
+
+```
+SUBCATEGORY_FEED_ATOM = 'feeds/%s.atom.xml'
+SUBCATEGORY_FEED_RSS = 'feeds/%s.rss.xml'
+```
+
+... and this will create a feed with `fullurl` of the subcategory. For example:
+
+```
+feeds/category/subcategory.atom.xml
+```
+
+Article urls can also use the values of `subpath` and `suburl` in their definitions. These are equivalent to the `fullurl` and `savepath` of the most specific subcategory. If you have articles that don't have subcategories these values are set to the category slug.
+
+```
+ARTICLE_SAVE_AS = os.path.join('{subpath}' 'articles' '{slug}.html')
+ARTICLE_URL = '{suburl}/articles/{slug}.html'
+```
diff --git a/pelican-plugins/subcategory/__init__.py b/pelican-plugins/subcategory/__init__.py
new file mode 100644
index 0000000..9999cf1
--- /dev/null
+++ b/pelican-plugins/subcategory/__init__.py
@@ -0,0 +1 @@
+from .subcategory import *
diff --git a/pelican-plugins/subcategory/subcategory.py b/pelican-plugins/subcategory/subcategory.py
new file mode 100644
index 0000000..31e73ff
--- /dev/null
+++ b/pelican-plugins/subcategory/subcategory.py
@@ -0,0 +1,135 @@
+# -*- coding: utf-8 -*-
+"""
+@Author: Alistair Magee
+
+Adds support for subcategories on pelican articles
+"""
+import os
+from operator import attrgetter
+from functools import partial
+
+from pelican import signals
+from pelican.urlwrappers import URLWrapper, Category
+from pelican.utils import slugify
+
+from six import text_type
+
+class SubCategory(URLWrapper):
+    def __init__(self, name, parent, settings):
+        super(SubCategory, self).__init__(name, settings)
+        self.parent = parent
+        self.shortname = name.split('/')
+        self.shortname = self.shortname.pop()
+        self.slug = slugify(self.shortname, settings.get('SLUG_SUBSTITUIONS', ()))
+        if isinstance(self.parent, SubCategory):
+            self.savepath = os.path.join(self.parent.savepath, self.slug)
+            self.fullurl = '{}/{}'.format(self.parent.fullurl, self.slug)
+        else: #parent is a category
+            self.savepath = os.path.join(self.parent.slug, self.slug)
+            self.fullurl = '{}/{}'.format(self.parent.slug, self.slug)
+        
+    def as_dict(self):
+        d = self.__dict__
+        d['shortname'] = self.shortname
+        d['savepath'] = self.savepath
+        d['fullurl'] = self.fullurl
+        d['parent'] = self.parent
+        return d
+
+    def __hash__(self):
+        return hash(self.fullurl)
+
+    def _key(self):
+        return self.fullurl
+
+def get_subcategories(generator, metadata):
+    if 'SUBCATEGORY_SAVE_AS' not in generator.settings:
+        generator.settings['SUBCATEGORY_SAVE_AS'] = os.path.join( 
+                'subcategory', '{savepath}.html')
+    if 'SUBCATEGORY_URL' not in generator.settings:
+        generator.settings['SUBCATEGORY_URL'] = 'subcategory/{fullurl}.html'
+    if ('PAGINATED_TEMPLATES' in generator.settings and
+        'subcategory' not in generator.settings['PAGINATED_TEMPLATES']):
+        generator.settings['PAGINATED_TEMPLATES']['subcategory'] = None
+
+    if 'subcategory_path' in metadata:
+        category_list = text_type(metadata.get('subcategory_path')).split('/')
+    else:
+        category_list = text_type(metadata.get('category')).split('/')
+
+    category = (category_list.pop(0)).strip()
+    category = Category(category, generator.settings)
+    metadata['category'] = category
+    #generate a list of subcategories with their parents
+    sub_list = []
+    parent = category.name
+    for subcategory in category_list:
+        subcategory = parent + '/' + subcategory.strip()
+        sub_list.append(subcategory)
+        parent = subcategory
+    metadata['subcategories'] = sub_list
+
+def create_subcategories(generator):
+    generator.subcategories = []
+    for article in generator.articles:
+        parent = article.category
+        actual_subcategories = []
+        for subcategory in article.subcategories:
+            #following line returns a list of items, tuples in this case
+            sub_cat = [item for item in generator.subcategories 
+                    if item[0].name == subcategory]
+            if sub_cat:
+                sub_cat[0][1].append(article)
+                parent = sub_cat[0][0]
+                actual_subcategories.append(parent)
+            else:
+                new_sub = SubCategory(subcategory, parent, generator.settings)
+                generator.subcategories.append((new_sub, [article,]))
+                parent = new_sub
+                actual_subcategories.append(parent)
+        article.subcategories = actual_subcategories
+        """Add subpath and suburl to the article metadata. This allows the
+        the last subcategory's fullurl and savepath to be used when definining
+        Article URL's. If an article has no subcategories, the Category slug
+        is used instead
+        """
+        try:
+            last_subcat = article.subcategories[-1]
+            article.metadata['subpath'] = last_subcat.savepath
+            article.metadata['suburl'] = last_subcat.fullurl
+        except IndexError: #No Subcategory
+            article.metadata['subpath'] = article.category.slug
+            article.metadata['suburl'] = article.category.slug
+
+def generate_subcategories(generator, writer):
+    write = partial(writer.write_file,
+            relative_urls=generator.settings['RELATIVE_URLS'])
+    subcategory_template = generator.get_template('subcategory')
+    for subcat, articles in generator.subcategories:
+        articles.sort(key=attrgetter('date'), reverse=True)
+        dates = [article for article in generator.dates if article in articles]
+        write(subcat.save_as, subcategory_template, generator.context, 
+                subcategory=subcat, articles=articles, dates=dates, 
+                template_name='subcategory', page_name=subcat.page_name,
+                all_articles=generator.articles)
+
+def generate_subcategory_feeds(generator, writer):
+    for subcat, articles in generator.subcategories:
+        articles.sort(key=attrgetter('date'), reverse=True)
+        if generator.settings.get('SUBCATEGORY_FEED_ATOM'):
+            writer.write_feed(articles, generator.context,
+                    generator.settings['SUBCATEGORY_FEED_ATOM']
+                    % subcat.fullurl)
+        if generator.settings.get('SUBCATEGORY_FEED_RSS'):
+            writer.write_feed(articles, generator.context,
+                    generator.settings['SUBCATEGORY_FEED_RSS']
+                    % subcat.fullurl, feed_type='rss')
+
+def generate(generator, writer):
+    generate_subcategory_feeds(generator, writer)
+    generate_subcategories(generator, writer)
+
+def register():
+    signals.article_generator_context.connect(get_subcategories)
+    signals.article_generator_finalized.connect(create_subcategories)
+    signals.article_writer_finalized.connect(generate)
diff --git a/pelican-plugins/summary/Readme.rst b/pelican-plugins/summary/Readme.rst
new file mode 100644
index 0000000..a52b025
--- /dev/null
+++ b/pelican-plugins/summary/Readme.rst
@@ -0,0 +1,63 @@
+Requirements
+------------
+
+This plugin requires beautifulsoup4 to ensure correctness of the extracted markup::
+
+    pip install beautifulsoup4
+
+Summary
+-------
+
+This plugin allows easy, variable length summaries directly embedded into the
+body of your articles. It introduces two new settings: ``SUMMARY_BEGIN_MARKER``
+and ``SUMMARY_END_MARKER``: strings which can be placed directly into an article
+to mark the beginning and end of a summary. When found, the standard
+``SUMMARY_MAX_LENGTH`` setting will be ignored. The markers themselves will also
+be removed from your articles before they are published. The default values
+are ``<!-- PELICAN_BEGIN_SUMMARY -->`` and ``<!-- PELICAN_END_SUMMARY -->``.
+For example::
+
+    Title: My super title
+    Date: 2010-12-03 10:20
+    Tags: thats, awesome
+    Category: yeah
+    Slug: my-super-post
+    Author: Alexis Metaireau
+
+    This is the content of my super blog post.
+    <!-- PELICAN_END_SUMMARY -->
+    and this content occurs after the summary.
+
+Here, the summary is taken to be the first line of the post. Because no
+beginning marker was found, it starts at the top of the body. It is possible
+to leave out the end marker instead, in which case the summary will start at the
+beginning marker and continue to the end of the body.
+
+If no beginning or end marker is found, and if ``SUMMARY_USE_FIRST_PARAGRAPH``
+is enabled in the settings, the summary will be the first paragraph of the post.
+
+The plugin also sets a ``has_summary`` attribute on every article. It is True
+for articles with an explicitly-defined summary, and False otherwise.  (It is
+also False for an article truncated by ``SUMMARY_MAX_LENGTH``.)  Your templates
+can use this e.g. to add a link to the full text at the end of the summary.
+
+reST example
+~~~~~~~~~~~~
+
+Inserting the markers into a reStructuredText document makes use of the
+comment directive, because raw HTML is automatically escaped. The reST equivalent of the above Markdown example looks like this::
+
+    My super title
+    ##############
+
+    :date: 2010-12-03 10:20
+    :tags: thats, awesome
+    :category: yeah
+    :slug: my-super-post
+    :author: Alexis Metaireau
+
+    This is the content of my super blog post.
+
+    .. PELICAN_END_SUMMARY
+
+    and this content occurs after the summary.
diff --git a/pelican-plugins/summary/__init__.py b/pelican-plugins/summary/__init__.py
new file mode 100644
index 0000000..afe9311
--- /dev/null
+++ b/pelican-plugins/summary/__init__.py
@@ -0,0 +1 @@
+from .summary import *
diff --git a/pelican-plugins/summary/requirements.txt b/pelican-plugins/summary/requirements.txt
new file mode 100644
index 0000000..c1f5f71
--- /dev/null
+++ b/pelican-plugins/summary/requirements.txt
@@ -0,0 +1 @@
+beautifulsoup4
diff --git a/pelican-plugins/summary/summary.py b/pelican-plugins/summary/summary.py
new file mode 100644
index 0000000..26f1d37
--- /dev/null
+++ b/pelican-plugins/summary/summary.py
@@ -0,0 +1,111 @@
+"""
+Summary
+-------
+
+This plugin allows easy, variable length summaries directly embedded into the
+body of your articles.
+"""
+
+from __future__ import unicode_literals
+from bs4 import BeautifulSoup
+from pelican import signals
+from pelican.generators import ArticlesGenerator, StaticGenerator, PagesGenerator
+import re
+
+def initialized(pelican):
+    from pelican.settings import DEFAULT_CONFIG
+    DEFAULT_CONFIG.setdefault('SUMMARY_BEGIN_MARKER',
+                              '<!-- PELICAN_BEGIN_SUMMARY -->')
+    DEFAULT_CONFIG.setdefault('SUMMARY_END_MARKER',
+                              '<!-- PELICAN_END_SUMMARY -->')
+    DEFAULT_CONFIG.setdefault('SUMMARY_USE_FIRST_PARAGRAPH', False)
+    if pelican:
+        pelican.settings.setdefault('SUMMARY_BEGIN_MARKER',
+                                    '<!-- PELICAN_BEGIN_SUMMARY -->')
+        pelican.settings.setdefault('SUMMARY_END_MARKER',
+                                    '<!-- PELICAN_END_SUMMARY -->')
+        pelican.settings.setdefault('SUMMARY_USE_FIRST_PARAGRAPH', False)
+
+def extract_summary(instance):
+    # if summary is already specified, use it
+    # if there is no content, there's nothing to do
+    if hasattr(instance, '_summary') or 'summary' in instance.metadata:
+        instance.has_summary = True
+        return
+
+    if not instance._content:
+        instance.has_summary = False
+        return
+
+    begin_marker = instance.settings['SUMMARY_BEGIN_MARKER']
+    end_marker   = instance.settings['SUMMARY_END_MARKER']
+    use_first_paragraph = instance.settings['SUMMARY_USE_FIRST_PARAGRAPH']
+    remove_markers = True
+
+    content = instance._update_content(instance._content, instance.settings['SITEURL'])
+    begin_summary = -1
+    end_summary = -1
+    if begin_marker:
+        begin_summary = content.find(begin_marker)
+    if end_marker:
+        end_summary = content.find(end_marker)
+
+    if begin_summary == -1 and end_summary == -1 and use_first_paragraph:
+        begin_marker, end_marker = '<p>', '</p>'
+        remove_markers = False
+        begin_summary = content.find(begin_marker)
+        end_summary = content.find(end_marker)
+
+    if begin_summary == -1 and end_summary == -1:
+        instance.has_summary = False
+        return
+
+    # skip over the begin marker, if present
+    if begin_summary == -1:
+        begin_summary = 0
+    else:
+        begin_summary = begin_summary + len(begin_marker)
+
+    if end_summary == -1:
+        end_summary = None
+
+    summary = content[begin_summary:end_summary]
+
+    if remove_markers:
+        # remove the markers from the content
+        if begin_summary:
+            content = content.replace(begin_marker, '', 1)
+        if end_summary:
+            content = content.replace(end_marker, '', 1)
+
+    summary = str(BeautifulSoup(summary, 'html.parser'))
+
+    instance._content = content
+    # default_status was added to Pelican Content objects after 3.7.1.
+    # Its use here is strictly to decide on how to set the summary.
+    # There's probably a better way to do this but I couldn't find it.
+    if hasattr(instance, 'default_status'):
+        instance.metadata['summary'] = summary
+    else:
+        instance._summary = summary
+    instance.has_summary = True
+
+
+def run_plugin(generators):
+    for generator in generators:
+        if isinstance(generator, ArticlesGenerator):
+            for article in generator.articles:
+                extract_summary(article)
+        elif isinstance(generator, PagesGenerator):
+            for page in generator.pages:
+                extract_summary(page)
+
+
+def register():
+    signals.initialized.connect(initialized)
+    try:
+        signals.all_generators_finalized.connect(run_plugin)
+    except AttributeError:
+        # NOTE: This results in #314 so shouldn't really be relied on
+        # https://github.com/getpelican/pelican-plugins/issues/314
+        signals.content_object_init.connect(extract_summary)
diff --git a/pelican-plugins/summary/test_summary.py b/pelican-plugins/summary/test_summary.py
new file mode 100644
index 0000000..dd366e2
--- /dev/null
+++ b/pelican-plugins/summary/test_summary.py
@@ -0,0 +1,110 @@
+# -*- coding: utf-8 -*-
+
+import unittest
+
+from jinja2.utils import generate_lorem_ipsum
+
+# generate one paragraph, enclosed with <p>
+TEST_CONTENT = str(generate_lorem_ipsum(n=1))
+TEST_SUMMARY = generate_lorem_ipsum(n=1, html=False)
+
+
+from pelican.contents import Page
+import pelican.settings
+
+import summary
+
+class TestSummary(unittest.TestCase):
+    def setUp(self):
+        super(TestSummary, self).setUp()
+        pelican.settings.DEFAULT_CONFIG['SUMMARY_MAX_LENGTH'] = None
+        pelican.settings.DEFAULT_CONFIG['SUMMARY_USE_FIRST_PARAGRAPH'] = False
+
+        summary.register()
+        summary.initialized(None)
+        self.page_kwargs = {
+            'content': TEST_CONTENT,
+            'context': {
+                'localsiteurl': '',
+            },
+            'metadata': {
+                'summary': TEST_SUMMARY,
+                'title': 'foo bar',
+                'author': 'Blogger',
+            },
+        }
+
+    def _copy_page_kwargs(self):
+        # make a deep copy of page_kwargs
+        page_kwargs = dict([(key, self.page_kwargs[key]) for key in
+                            self.page_kwargs])
+        for key in page_kwargs:
+            if not isinstance(page_kwargs[key], dict):
+                break
+            page_kwargs[key] = dict([(subkey, page_kwargs[key][subkey])
+                                     for subkey in page_kwargs[key]])
+
+        return page_kwargs
+
+    def test_end_summary(self):
+        page_kwargs = self._copy_page_kwargs()
+        del page_kwargs['metadata']['summary']
+        page_kwargs['content'] = (
+            TEST_SUMMARY + '<!-- PELICAN_END_SUMMARY -->' + TEST_CONTENT)
+        page = Page(**page_kwargs)
+        summary.extract_summary(page)
+        # test both the summary and the marker removal
+        self.assertEqual(page.summary, TEST_SUMMARY)
+        self.assertEqual(page.content, TEST_SUMMARY + TEST_CONTENT)
+
+    def test_begin_summary(self):
+        page_kwargs = self._copy_page_kwargs()
+        del page_kwargs['metadata']['summary']
+        page_kwargs['content'] = (
+            'FOOBAR<!-- PELICAN_BEGIN_SUMMARY -->' + TEST_CONTENT)
+        page = Page(**page_kwargs)
+        summary.extract_summary(page)
+        # test both the summary and the marker removal
+        self.assertEqual(page.summary, TEST_CONTENT)
+        self.assertEqual(page.content, 'FOOBAR' + TEST_CONTENT)
+
+    def test_begin_end_summary(self):
+        page_kwargs = self._copy_page_kwargs()
+        del page_kwargs['metadata']['summary']
+        page_kwargs['content'] = (
+                'FOOBAR<!-- PELICAN_BEGIN_SUMMARY -->' + TEST_SUMMARY +
+                '<!-- PELICAN_END_SUMMARY -->' + TEST_CONTENT)
+        page = Page(**page_kwargs)
+        summary.extract_summary(page)
+        # test both the summary and the marker removal
+        self.assertEqual(page.summary, TEST_SUMMARY)
+        self.assertEqual(page.content, 'FOOBAR' + TEST_SUMMARY + TEST_CONTENT)
+
+    def test_use_first_paragraph(self):
+        page_kwargs = self._copy_page_kwargs()
+        del page_kwargs['metadata']['summary']
+        pelican.settings.DEFAULT_CONFIG['SUMMARY_USE_FIRST_PARAGRAPH'] = True
+        page_kwargs['content'] = '<p>' + TEST_SUMMARY + '</p>' + TEST_CONTENT
+        page = Page(**page_kwargs)
+        summary.extract_summary(page)
+        # test both the summary and the marker removal
+        self.assertEqual(page.summary, TEST_SUMMARY)
+        self.assertEqual(page.content, '<p>' + TEST_SUMMARY + '</p>' + TEST_CONTENT)
+
+    def test_correct_malformed_markup(self):
+        page_kwargs = self._copy_page_kwargs()
+        del page_kwargs['metadata']['summary']
+        malformed = '<article><div><h2>Title</h2><p>Some content</article>'
+        wellformed = (
+            '<article><div><h2>Title</h2>'
+            '<p>Some content</p></div></article>')
+        page_kwargs['content'] = (
+            '<!-- PELICAN_BEGIN_SUMMARY -->' + malformed +
+            '<!-- PELICAN_END_SUMMARY -->')
+        page = Page(**page_kwargs)
+        summary.extract_summary(page)
+        self.assertEqual(page.summary, wellformed)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/pelican-plugins/tag_cloud/README.rst b/pelican-plugins/tag_cloud/README.rst
new file mode 100644
index 0000000..5f0590d
--- /dev/null
+++ b/pelican-plugins/tag_cloud/README.rst
@@ -0,0 +1,100 @@
+tag_cloud
+=========
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/tag-cloud>`_. Please file any issues/PRs there. Once all plugins have been migrated to the `new Pelican Plugins organization <https://github.com/pelican-plugins>`_, this monolithic repository will be archived.
+
+This plugin generates a tag-cloud.
+
+Installation
+------------
+
+In order to use to use this plugin, you have to edit(*) or create(+) the following files::
+
+      blog/
+        ├── pelicanconf.py *
+        ├── content
+        ├── plugins +
+        │     └── tag_cloud.py +
+        └── themes
+              └── mytheme
+                    ├── templates
+                    │      └── base.html *
+                    └── static
+                          └── css
+                               └── style.css *
+
+In **pelicanconf.py** you have to activate the plugin::
+
+    PLUGIN_PATHS = ["plugins"]
+    PLUGINS = ["tag_cloud"]
+
+Into your **plugins** folder, you should add tag_cloud.py (from this repository).
+
+In your theme files, you should change **base.html** to apply formats (and sizes) defined in **style.css**, as specified in "Settings", below.
+
+Settings
+--------
+
+================================================    =====================================================
+Setting name (followed by default value)            What does it do?
+================================================    =====================================================
+``TAG_CLOUD_STEPS = 4``                             Count of different font sizes in the tag
+                                                    cloud.
+``TAG_CLOUD_MAX_ITEMS = 100``                       Maximum number of tags in the cloud.
+``TAG_CLOUD_SORTING = 'random'``                    The tag cloud ordering scheme.  Valid values:
+                                                    random, alphabetically, alphabetically-rev, size and
+                                                    size-rev
+``TAG_CLOUD_BADGE = True``                          Optionnal setting : can bring **badges**, which mean
+                                                    say : display the number of each tags present
+                                                    on all articles.
+================================================    =====================================================
+
+The default theme does not include a tag cloud, but it is pretty easy to add one::
+
+    <ul class="tagcloud">
+        {% for tag in tag_cloud %}
+            <li class="tag-{{ tag.1 }}">
+                <a href="{{ SITEURL }}/{{ tag.0.url }}">
+                {{ tag.0 }}
+                    {% if TAG_CLOUD_BADGE %}
+                        <span class="badge">{{ tag.2 }}</span>
+                    {% endif %}
+                </a>
+            </li>
+        {% endfor %}
+    </ul>
+
+You should then also define CSS styles with appropriate classes (tag-1 to tag-N,
+where N matches ``TAG_CLOUD_STEPS``), tag-1 being the most frequent, and
+define a ``ul.tagcloud`` class with appropriate list-style to create the cloud.
+You should copy/paste this **badge** CSS rule ``ul.tagcloud .list-group-item <span>.badge``
+if you're using ``TAG_CLOUD_BADGE`` setting. (this rule, potentially long , is suggested to avoid
+conflicts with CSS libs as twitter Bootstrap)
+
+For example::
+
+    ul.tagcloud {
+      list-style: none;
+        padding: 0;
+    }
+
+    ul.tagcloud li {
+        display: inline-block;
+    }
+
+    li.tag-1 {
+        font-size: 150%;
+    }
+
+    li.tag-2 {
+        font-size: 120%;
+    }
+
+    /* ... add li.tag-3 etc, as much as needed */
+
+    ul.tagcloud .list-group-item span.badge {
+        background-color: grey;
+        color: white;
+    }
+
+By default the tags in the cloud are sorted randomly, but if you prefers to have it alphabetically use the `alphabetically` (ascending) and `alphabetically-rev` (descending). Also is possible to sort the tags by it's size (number of articles with this specific tag) using the values `size` (ascending) and `size-rev` (descending).
diff --git a/pelican-plugins/tag_cloud/__init__.py b/pelican-plugins/tag_cloud/__init__.py
new file mode 100644
index 0000000..a7004f5
--- /dev/null
+++ b/pelican-plugins/tag_cloud/__init__.py
@@ -0,0 +1,2 @@
+from .tag_cloud import *
+
diff --git a/pelican-plugins/tag_cloud/tag_cloud.py b/pelican-plugins/tag_cloud/tag_cloud.py
new file mode 100644
index 0000000..bf91055
--- /dev/null
+++ b/pelican-plugins/tag_cloud/tag_cloud.py
@@ -0,0 +1,90 @@
+'''
+tag_cloud
+===================================
+
+This plugin generates a tag cloud from available tags
+'''
+from __future__ import unicode_literals
+
+from collections import defaultdict
+from operator import itemgetter
+
+import logging
+import math
+import random
+
+from pelican import signals
+
+logger = logging.getLogger(__name__)
+
+
+def set_default_settings(settings):
+    settings.setdefault('TAG_CLOUD_STEPS', 4)
+    settings.setdefault('TAG_CLOUD_MAX_ITEMS', 100)
+    settings.setdefault('TAG_CLOUD_SORTING', 'random')
+    settings.setdefault('TAG_CLOUD_BADGE', False)
+
+
+def init_default_config(pelican):
+    from pelican.settings import DEFAULT_CONFIG
+    set_default_settings(DEFAULT_CONFIG)
+    if(pelican):
+            set_default_settings(pelican.settings)
+
+
+def generate_tag_cloud(generator):
+    tag_cloud = defaultdict(int)
+    for article in generator.articles:
+        for tag in getattr(article, 'tags', []):
+            tag_cloud[tag] += 1
+
+    tag_cloud = sorted(tag_cloud.items(), key=itemgetter(1), reverse=True)
+    tag_cloud = tag_cloud[:generator.settings.get('TAG_CLOUD_MAX_ITEMS')]
+
+    tags = list(map(itemgetter(1), tag_cloud))
+    if tags:
+        max_count = tags[0]
+        min_count = tags[-1]
+    steps = generator.settings.get('TAG_CLOUD_STEPS')
+
+    # calculate word sizes
+    def generate_tag(tag, count):
+        tag = (
+            tag,
+            int(math.floor(steps - (steps - 1) * math.log(count - min_count + 1)
+                / (math.log(max_count - min_count + 1) or 1)))
+        )
+        if generator.settings.get('TAG_CLOUD_BADGE'):
+            tag += (count,)
+        return tag
+
+    tag_cloud = [
+        generate_tag(tag, count)
+        for tag, count in tag_cloud
+    ]
+
+    sorting = generator.settings.get('TAG_CLOUD_SORTING')
+
+    if sorting == 'alphabetically':
+        tag_cloud.sort(key=lambda elem: elem[0].name)
+    elif sorting == 'alphabetically-rev':
+        tag_cloud.sort(key=lambda elem: elem[0].name, reverse=True)
+    elif sorting == 'size':
+        tag_cloud.sort(key=lambda elem: elem[1])
+    elif sorting == 'size-rev':
+        tag_cloud.sort(key=lambda elem: elem[1], reverse=True)
+    elif sorting == 'random':
+        random.shuffle(tag_cloud)
+    else:
+        logger.warning("setting for TAG_CLOUD_SORTING not recognized: %s, "
+                       "falling back to 'random'", sorting)
+        random.shuffle(tag_cloud)
+
+    # make available in context
+    generator.tag_cloud = tag_cloud
+    generator._update_context(['tag_cloud'])
+
+
+def register():
+    signals.initialized.connect(init_default_config)
+    signals.article_generator_finalized.connect(generate_tag_cloud)
diff --git a/pelican-plugins/tag_cloud/test_data/article_1.md b/pelican-plugins/tag_cloud/test_data/article_1.md
new file mode 100644
index 0000000..bb44efe
--- /dev/null
+++ b/pelican-plugins/tag_cloud/test_data/article_1.md
@@ -0,0 +1,4 @@
+Title: Article1
+tags: fun, pelican, plugins
+
+content, yeah!
\ No newline at end of file
diff --git a/pelican-plugins/tag_cloud/test_data/article_2.md b/pelican-plugins/tag_cloud/test_data/article_2.md
new file mode 100644
index 0000000..74dbb63
--- /dev/null
+++ b/pelican-plugins/tag_cloud/test_data/article_2.md
@@ -0,0 +1,5 @@
+Title: Article2
+tags: pelican, plugins, python
+
+content2, yeah!
+
diff --git a/pelican-plugins/tag_cloud/test_data/article_3.md b/pelican-plugins/tag_cloud/test_data/article_3.md
new file mode 100644
index 0000000..bc0cd5a
--- /dev/null
+++ b/pelican-plugins/tag_cloud/test_data/article_3.md
@@ -0,0 +1,5 @@
+Title: Article3
+tags: pelican, plugins
+
+content3, yeah!
+
diff --git a/pelican-plugins/tag_cloud/test_data/article_4.md b/pelican-plugins/tag_cloud/test_data/article_4.md
new file mode 100644
index 0000000..9a31320
--- /dev/null
+++ b/pelican-plugins/tag_cloud/test_data/article_4.md
@@ -0,0 +1,5 @@
+Title: Article4
+tags: pelican, fun
+
+content4, yeah!
+
diff --git a/pelican-plugins/tag_cloud/test_data/article_5.md b/pelican-plugins/tag_cloud/test_data/article_5.md
new file mode 100644
index 0000000..1d3f2ff
--- /dev/null
+++ b/pelican-plugins/tag_cloud/test_data/article_5.md
@@ -0,0 +1,5 @@
+Title: Article5
+tags: plugins, pelican, fun
+
+content5, yeah!
+
diff --git a/pelican-plugins/tag_cloud/test_tag_cloud.py b/pelican-plugins/tag_cloud/test_tag_cloud.py
new file mode 100644
index 0000000..22fbf0a
--- /dev/null
+++ b/pelican-plugins/tag_cloud/test_tag_cloud.py
@@ -0,0 +1,114 @@
+import unittest
+import os
+import six
+import tag_cloud
+from shutil import rmtree
+from tempfile import mkdtemp
+
+from pelican.generators import ArticlesGenerator
+from pelican.tests.support import get_settings
+from pelican.urlwrappers import Tag
+
+CUR_DIR = os.path.dirname(__file__)
+CONTENT_DIR = os.path.join(CUR_DIR, 'test_data')
+
+
+class TestTagCloudGeneration(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.temp_path = mkdtemp(prefix='pelicantests.')
+
+        cls._settings = get_settings(filenames={})
+        cls._settings['DEFAULT_CATEGORY'] = 'Default'
+        cls._settings['DEFAULT_DATE'] = (1970, 1, 1)
+        cls._settings['READERS'] = {'asc': None}
+        cls._settings['CACHE_CONTENT'] = False
+        tag_cloud.set_default_settings(cls._settings)
+
+        context = cls._settings.copy()
+        context['generated_content'] = dict()
+        context['static_links'] = set()
+        cls.generator = ArticlesGenerator(
+            context=context, settings=cls._settings,
+            path=CONTENT_DIR, theme=cls._settings['THEME'], output_path=cls.temp_path)
+        cls.generator.generate_context()
+
+    @classmethod
+    def tearDownClass(cls):
+        rmtree(cls.temp_path)
+
+    def test_tag_cloud_random(self):
+        self.generator.settings['TAG_CLOUD_STEPS'] = 10
+        self.generator.settings['TAG_CLOUD_BADGE'] = False
+        tag_cloud.generate_tag_cloud(self.generator)
+        expected = [
+            (Tag('pelican', self._settings), 1),
+            (Tag('plugins', self._settings), 2),
+            (Tag('fun', self._settings), 3),
+            (Tag('python', self._settings), 10)
+        ]
+        six.assertCountEqual(self, self.generator.tag_cloud, expected)
+
+    def test_tag_cloud_badge(self):
+        self.generator.settings['TAG_CLOUD_STEPS'] = 10
+        self.generator.settings['TAG_CLOUD_BADGE'] = True
+        tag_cloud.generate_tag_cloud(self.generator)
+        expected = [
+            (Tag('pelican', self._settings), 1, 5),
+            (Tag('plugins', self._settings), 2, 4),
+            (Tag('fun', self._settings), 3, 3),
+            (Tag('python', self._settings), 10, 1)
+        ]
+        six.assertCountEqual(self, self.generator.tag_cloud, expected)
+
+    def test_tag_cloud_alphabetical(self):
+        self.generator.settings['TAG_CLOUD_STEPS'] = 10
+        self.generator.settings['TAG_CLOUD_SORTING'] = 'alphabetically'
+        tag_cloud.generate_tag_cloud(self.generator)
+        expected = [
+            (Tag('fun', self._settings), 3),
+            (Tag('pelican', self._settings), 1),
+            (Tag('plugins', self._settings), 2),
+            (Tag('python', self._settings), 10)
+        ]
+        self.assertEqual(self.generator.tag_cloud, expected)
+
+    def test_tag_cloud_alphabetical_rev(self):
+        self.generator.settings['TAG_CLOUD_STEPS'] = 10
+        self.generator.settings['TAG_CLOUD_SORTING'] = 'alphabetically-rev'
+        tag_cloud.generate_tag_cloud(self.generator)
+        expected = [
+            (Tag('python', self._settings), 10),
+            (Tag('plugins', self._settings), 2),
+            (Tag('pelican', self._settings), 1),
+            (Tag('fun', self._settings), 3)
+        ]
+        self.assertEqual(self.generator.tag_cloud, expected)
+
+    def test_tag_cloud_size(self):
+        self.generator.settings['TAG_CLOUD_STEPS'] = 10
+        self.generator.settings['TAG_CLOUD_SORTING'] = 'size'
+        tag_cloud.generate_tag_cloud(self.generator)
+        expected = [
+            (Tag('pelican', self._settings), 1),
+            (Tag('plugins', self._settings), 2),
+            (Tag('fun', self._settings), 3),
+            (Tag('python', self._settings), 10)
+        ]
+        self.assertEqual(self.generator.tag_cloud, expected)
+
+    def test_tag_cloud_size_rev(self):
+        self.generator.settings['TAG_CLOUD_STEPS'] = 10
+        self.generator.settings['TAG_CLOUD_SORTING'] = 'size-rev'
+        tag_cloud.generate_tag_cloud(self.generator)
+        expected = [
+            (Tag('python', self._settings), 10),
+            (Tag('fun', self._settings), 3),
+            (Tag('plugins', self._settings), 2),
+            (Tag('pelican', self._settings), 1)
+        ]
+        self.assertEqual(self.generator.tag_cloud, expected)
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/pelican-plugins/test_data/Readme.rst b/pelican-plugins/test_data/Readme.rst
new file mode 100644
index 0000000..9ed244d
--- /dev/null
+++ b/pelican-plugins/test_data/Readme.rst
@@ -0,0 +1,13 @@
+Test Data
+---------
+
+Place tests for your plugin here. ``test_data`` folder contains following
+common data for your tests, if you need them. 
+
+===============   ===========================
+File/Folder       Description
+===============   ===========================
+content           A sample content folder
+themes            Default themes from Pelican
+pelican.conf.py   A sample settings file
+===============   ===========================
diff --git a/pelican-plugins/test_data/__init__.py b/pelican-plugins/test_data/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/test_data/content/2012-11-30_filename-metadata.rst b/pelican-plugins/test_data/content/2012-11-30_filename-metadata.rst
new file mode 100644
index 0000000..b048103
--- /dev/null
+++ b/pelican-plugins/test_data/content/2012-11-30_filename-metadata.rst
@@ -0,0 +1,4 @@
+FILENAME_METADATA example
+#########################
+
+Some cool stuff!
diff --git a/pelican-plugins/test_data/content/another_super_article-fr.rst b/pelican-plugins/test_data/content/another_super_article-fr.rst
new file mode 100644
index 0000000..71ac963
--- /dev/null
+++ b/pelican-plugins/test_data/content/another_super_article-fr.rst
@@ -0,0 +1,7 @@
+Trop bien !
+###########
+
+:lang: fr
+:slug: oh-yeah
+
+Et voila du contenu en français
diff --git a/pelican-plugins/test_data/content/another_super_article.rst b/pelican-plugins/test_data/content/another_super_article.rst
new file mode 100644
index 0000000..e6e0a92
--- /dev/null
+++ b/pelican-plugins/test_data/content/another_super_article.rst
@@ -0,0 +1,20 @@
+Oh yeah !
+#########
+
+:tags: oh, bar, yeah
+:date: 2010-10-20 10:14
+:category: bar
+:author: Alexis Métaireau
+:slug: oh-yeah
+:license: WTFPL
+
+Why not ?
+=========
+
+After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
+YEAH !
+
+.. image:: |filename|/pictures/Sushi.jpg
+   :height: 450 px
+   :width: 600 px
+   :alt: alternate text
diff --git a/pelican-plugins/test_data/content/article2-fr.rst b/pelican-plugins/test_data/content/article2-fr.rst
new file mode 100644
index 0000000..31970f7
--- /dev/null
+++ b/pelican-plugins/test_data/content/article2-fr.rst
@@ -0,0 +1,9 @@
+Deuxième article
+################
+
+:tags: foo, bar, baz
+:date: 2012-02-29
+:lang: fr
+:slug: second-article
+
+Ceci est un article, en français.
diff --git a/pelican-plugins/test_data/content/article2.rst b/pelican-plugins/test_data/content/article2.rst
new file mode 100644
index 0000000..66f768e
--- /dev/null
+++ b/pelican-plugins/test_data/content/article2.rst
@@ -0,0 +1,9 @@
+Second article
+##############
+
+:tags: foo, bar, baz
+:date: 2012-02-29
+:lang: en
+:slug: second-article
+
+This is some article, in english
diff --git a/pelican-plugins/test_data/content/cat1/article1.rst b/pelican-plugins/test_data/content/cat1/article1.rst
new file mode 100644
index 0000000..1148a8f
--- /dev/null
+++ b/pelican-plugins/test_data/content/cat1/article1.rst
@@ -0,0 +1,7 @@
+Article 1
+#########
+
+:date: 2011-02-17
+:yeah: oh yeah !
+
+Article 1
diff --git a/pelican-plugins/test_data/content/cat1/article2.rst b/pelican-plugins/test_data/content/cat1/article2.rst
new file mode 100644
index 0000000..a4f8786
--- /dev/null
+++ b/pelican-plugins/test_data/content/cat1/article2.rst
@@ -0,0 +1,6 @@
+Article 2
+#########
+
+:date: 2011-02-17
+
+Article 2
diff --git a/pelican-plugins/test_data/content/cat1/article3.rst b/pelican-plugins/test_data/content/cat1/article3.rst
new file mode 100644
index 0000000..5347117
--- /dev/null
+++ b/pelican-plugins/test_data/content/cat1/article3.rst
@@ -0,0 +1,6 @@
+Article 3
+#########
+
+:date: 2011-02-17
+
+Article 3
diff --git a/pelican-plugins/test_data/content/cat1/markdown-article.md b/pelican-plugins/test_data/content/cat1/markdown-article.md
new file mode 100644
index 0000000..5307b47
--- /dev/null
+++ b/pelican-plugins/test_data/content/cat1/markdown-article.md
@@ -0,0 +1,7 @@
+Title: A markdown powered article
+Date: 2011-04-20
+
+You're mutually oblivious.
+
+[a root-relative link to unbelievable](|filename|/unbelievable.rst)
+[a file-relative link to unbelievable](|filename|../unbelievable.rst)
diff --git a/pelican-plugins/test_data/content/draft_article.rst b/pelican-plugins/test_data/content/draft_article.rst
new file mode 100644
index 0000000..76ce9a1
--- /dev/null
+++ b/pelican-plugins/test_data/content/draft_article.rst
@@ -0,0 +1,7 @@
+A draft article
+###############
+
+:status: draft
+
+This is a draft article, it should live under the /drafts/ folder and not be
+listed anywhere else.
diff --git a/pelican-plugins/test_data/content/extra/robots.txt b/pelican-plugins/test_data/content/extra/robots.txt
new file mode 100644
index 0000000..ae5b0d0
--- /dev/null
+++ b/pelican-plugins/test_data/content/extra/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow: /static/pictures
diff --git a/pelican-plugins/test_data/content/pages/hidden_page.rst b/pelican-plugins/test_data/content/pages/hidden_page.rst
new file mode 100644
index 0000000..ab8704e
--- /dev/null
+++ b/pelican-plugins/test_data/content/pages/hidden_page.rst
@@ -0,0 +1,9 @@
+This is a test hidden page
+##########################
+
+:category: test
+:status: hidden
+
+This is great for things like error(404) pages
+Anyone can see this page but it's not linked to anywhere!
+
diff --git a/pelican-plugins/test_data/content/pages/jinja2_template.html b/pelican-plugins/test_data/content/pages/jinja2_template.html
new file mode 100644
index 0000000..1b0dc4e
--- /dev/null
+++ b/pelican-plugins/test_data/content/pages/jinja2_template.html
@@ -0,0 +1,6 @@
+{% extends "base.html" %}
+{% block content %}
+
+Some text
+
+{% endblock %}
diff --git a/pelican-plugins/test_data/content/pages/override_url_saveas.rst b/pelican-plugins/test_data/content/pages/override_url_saveas.rst
new file mode 100644
index 0000000..8a515f6
--- /dev/null
+++ b/pelican-plugins/test_data/content/pages/override_url_saveas.rst
@@ -0,0 +1,9 @@
+Override url/save_as
+####################
+
+:date: 2012-12-07
+:url: override/
+:save_as: override/index.html
+
+Test page which overrides save_as and url so that this page will be generated
+at a custom location.
diff --git a/pelican-plugins/test_data/content/pages/test_page.rst b/pelican-plugins/test_data/content/pages/test_page.rst
new file mode 100644
index 0000000..2285f17
--- /dev/null
+++ b/pelican-plugins/test_data/content/pages/test_page.rst
@@ -0,0 +1,12 @@
+This is a test page
+###################
+
+:category: test
+
+Just an image.
+
+.. image:: |filename|/pictures/Fat_Cat.jpg
+   :height: 450 px
+   :width: 600 px
+   :alt: alternate text
+
diff --git a/pelican-plugins/test_data/content/pictures/Fat_Cat.jpg b/pelican-plugins/test_data/content/pictures/Fat_Cat.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d8a96d356be94e782aaf36ba4e47168435b56338
GIT binary patch
literal 62675
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

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/content/pictures/Sushi.jpg b/pelican-plugins/test_data/content/pictures/Sushi.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e49e5f0ab53461187c2cf61ebc1f3befdc937aed
GIT binary patch
literal 28992
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
GKmXZ^k)SRB

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/content/pictures/Sushi_Macro.jpg b/pelican-plugins/test_data/content/pictures/Sushi_Macro.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..21f935a1bf82808aa2ded423caba3cc9f2911973
GIT binary patch
literal 38594
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
V9RVclK)_SR8Zrq#de{_0|JgZd7T*8>

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/content/super_article.rst b/pelican-plugins/test_data/content/super_article.rst
new file mode 100644
index 0000000..76e5768
--- /dev/null
+++ b/pelican-plugins/test_data/content/super_article.rst
@@ -0,0 +1,36 @@
+This is a super article !
+#########################
+
+:tags: foo, bar, foobar
+:date: 2010-12-02 10:14
+:category: yeah
+:author: Alexis Métaireau
+:summary:
+    Multi-line metadata should be supported
+    as well as **inline markup**.
+
+Some content here !
+
+This is a simple title
+======================
+
+And here comes the cool stuff_.
+
+.. image:: |filename|/pictures/Sushi.jpg
+   :height: 450 px
+   :width: 600 px
+   :alt: alternate text
+
+.. image:: |filename|/pictures/Sushi_Macro.jpg
+   :height: 450 px
+   :width: 600 px
+   :alt: alternate text
+
+::
+
+   >>> from ipdb import set_trace
+   >>> set_trace()
+
+→ And now try with some utf8 hell: ééé
+
+.. _stuff: http://books.couchdb.org/relax/design-documents/views
diff --git a/pelican-plugins/test_data/content/unbelievable.rst b/pelican-plugins/test_data/content/unbelievable.rst
new file mode 100644
index 0000000..20cb9dc
--- /dev/null
+++ b/pelican-plugins/test_data/content/unbelievable.rst
@@ -0,0 +1,9 @@
+Unbelievable !
+##############
+
+:date: 2010-10-15 20:30
+
+Or completely awesome. Depends the needs.
+
+`a root-relative link to markdown-article <|filename|/cat1/markdown-article.md>`_
+`a file-relative link to markdown-article <|filename|cat1/markdown-article.md>`_
diff --git a/pelican-plugins/test_data/content/unwanted_file b/pelican-plugins/test_data/content/unwanted_file
new file mode 100644
index 0000000..591255a
--- /dev/null
+++ b/pelican-plugins/test_data/content/unwanted_file
@@ -0,0 +1 @@
+not to be parsed
diff --git a/pelican-plugins/test_data/pelican.conf.py b/pelican-plugins/test_data/pelican.conf.py
new file mode 100755
index 0000000..714a418
--- /dev/null
+++ b/pelican-plugins/test_data/pelican.conf.py
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+AUTHOR = 'Alexis Métaireau'
+SITENAME = "Alexis' log"
+SITEURL = 'http://blog.notmyidea.org'
+TIMEZONE = "Europe/Paris"
+
+GITHUB_URL = 'http://github.com/ametaireau/'
+DISQUS_SITENAME = "blog-notmyidea"
+PDF_GENERATOR = False
+REVERSE_CATEGORY_ORDER = True
+LOCALE = "C"
+DEFAULT_PAGINATION = 4
+DEFAULT_DATE = (2012, 3, 2, 14, 1, 1)
+
+FEED_ALL_RSS = 'feeds/all.rss.xml'
+CATEGORY_FEED_RSS = 'feeds/%s.rss.xml'
+
+LINKS = (('Biologeek', 'http://biologeek.org'),
+         ('Filyb', "http://filyb.info/"),
+         ('Libert-fr', "http://www.libert-fr.com"),
+         ('N1k0', "http://prendreuncafe.com/blog/"),
+         ('Tarek Ziadé', "http://ziade.org/blog"),
+         ('Zubin Mithra', "http://zubin71.wordpress.com/"),)
+
+SOCIAL = (('twitter', 'http://twitter.com/ametaireau'),
+          ('lastfm', 'http://lastfm.com/user/akounet'),
+          ('github', 'http://github.com/ametaireau'),)
+
+# global metadata to all the contents
+DEFAULT_METADATA = (('yeah', 'it is'),)
+
+# static paths will be copied under the same name
+STATIC_PATHS = ["pictures", ]
+
+# A list of files to copy from the source to the destination
+FILES_TO_COPY = (('extra/robots.txt', 'robots.txt'),)
+
+# custom page generated with a jinja2 template
+TEMPLATE_PAGES = {'pages/jinja2_template.html': 'jinja2_template.html'}
+
+# foobar will not be used, because it's not in caps. All configuration keys
+# have to be in caps
+foobar = "barbaz"
diff --git a/pelican-plugins/test_data/themes/notmyidea/static/css/main.css b/pelican-plugins/test_data/themes/notmyidea/static/css/main.css
new file mode 100644
index 0000000..5722444
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/static/css/main.css
@@ -0,0 +1,446 @@
+/*
+	Name: Smashing HTML5
+	Date: July 2009
+	Description: Sample layout for HTML5 and CSS3 goodness.
+	Version: 1.0
+	Author: Enrique Ramírez
+	Autor URI: http://enrique-ramirez.com
+*/
+
+/* Imports */
+@import url("reset.css");
+@import url("pygment.css");
+@import url("typogrify.css");
+@import url(//fonts.googleapis.com/css?family=Yanone+Kaffeesatz&subset=latin);
+
+/***** Global *****/
+/* Body */
+body {
+    background: #F5F4EF;
+    color: #000305;
+    font-size: 87.5%; /* Base font size: 14px */
+    font-family: 'Trebuchet MS', Trebuchet, 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
+    line-height: 1.429;
+    margin: 0;
+    padding: 0;
+    text-align: left;
+}
+
+/* Headings */
+h1 {font-size: 2em }
+h2 {font-size: 1.571em}	/* 22px */
+h3 {font-size: 1.429em}	/* 20px */
+h4 {font-size: 1.286em}	/* 18px */
+h5 {font-size: 1.143em}	/* 16px */
+h6 {font-size: 1em}		/* 14px */
+
+h1, h2, h3, h4, h5, h6 {
+	font-weight: 400;
+	line-height: 1.1;
+	margin-bottom: .8em;
+    font-family: 'Yanone Kaffeesatz', arial, serif;
+}
+
+h3, h4, h5, h6 { margin-top: .8em; }
+	
+hr { border: 2px solid #EEEEEE; }
+
+/* Anchors */
+a {outline: 0;}
+a img {border: 0px; text-decoration: none;}
+a:link, a:visited {
+	color: #C74350;
+	padding: 0 1px;
+	text-decoration: underline;
+}
+a:hover, a:active {
+	background-color: #C74350;
+	color: #fff;
+	text-decoration: none;
+	text-shadow: 1px 1px 1px #333;
+}
+
+h1 a:hover {
+    background-color: inherit
+}
+	
+/* Paragraphs */
+div.line-block,
+p { margin-top: 1em;
+    margin-bottom: 1em;}
+
+strong, b {font-weight: bold;}
+em, i {font-style: italic;}
+
+/* Lists */
+ul {
+	list-style: outside disc;
+	margin: 0em 0 0 1.5em;
+}
+
+ol {
+	list-style: outside decimal;
+	margin: 0em 0 0 1.5em;
+}
+
+li { margin-top: 0.5em;}
+
+.post-info {
+    float:right;
+    margin:10px;
+    padding:5px;
+}
+
+.post-info p{
+    margin-top: 1px;
+    margin-bottom: 1px;
+}
+
+.readmore { float: right }
+
+dl {margin: 0 0 1.5em 0;}
+dt {font-weight: bold;}
+dd {margin-left: 1.5em;}
+
+pre{background-color:  rgb(238, 238, 238); padding: 10px; margin: 10px; overflow: auto;}
+
+/* Quotes */
+blockquote {
+    margin: 20px;
+    font-style: italic;
+}
+cite {}
+
+q {}
+
+div.note {
+   float: right;
+   margin: 5px;
+   font-size: 85%;
+   max-width: 300px;
+}
+
+/* Tables */
+table {margin: .5em auto 1.5em auto; width: 98%;}
+	
+	/* Thead */
+	thead th {padding: .5em .4em; text-align: left;}
+	thead td {}
+
+	/* Tbody */
+	tbody td {padding: .5em .4em;}
+	tbody th {}
+	
+	tbody .alt td {}
+	tbody .alt th {}
+	
+	/* Tfoot */
+	tfoot th {}
+	tfoot td {}
+	
+/* HTML5 tags */
+header, section, footer,
+aside, nav, article, figure {
+	display: block;
+}
+
+/***** Layout *****/
+.body {clear: both; margin: 0 auto; width: 800px;}
+img.right, figure.right {float: right; margin: 0 0 2em 2em;}
+img.left, figure.left {float: left; margin: 0 2em 2em 0;}
+
+/*
+	Header
+*****************/
+#banner {
+	margin: 0 auto;
+	padding: 2.5em 0 0 0;
+}
+
+	/* Banner */
+	#banner h1 {font-size: 3.571em; line-height: 0;}
+	#banner h1 a:link, #banner h1 a:visited {
+		color: #000305;
+		display: block;
+		font-weight: bold;
+		margin: 0 0 .6em .2em;
+		text-decoration: none;
+	}
+	#banner h1 a:hover, #banner h1 a:active {
+		background: none;
+		color: #C74350;
+		text-shadow: none;
+	}
+	
+	#banner h1 strong {font-size: 0.36em; font-weight: normal;}
+	
+	/* Main Nav */
+	#banner nav {
+		background: #000305;
+		font-size: 1.143em;
+		height: 40px;
+		line-height: 30px;
+		margin: 0 auto 2em auto;
+		padding: 0;
+		text-align: center;
+		width: 800px;
+		
+		border-radius: 5px;
+		-moz-border-radius: 5px;
+		-webkit-border-radius: 5px;
+	}
+	
+	#banner nav ul {list-style: none; margin: 0 auto; width: 800px;}
+	#banner nav li {float: left; display: inline; margin: 0;}
+	
+	#banner nav a:link, #banner nav a:visited {
+		color: #fff;
+		display: inline-block;
+		height: 30px;
+		padding: 5px 1.5em;
+		text-decoration: none;
+	}
+	#banner nav a:hover, #banner nav a:active,
+	#banner nav .active a:link, #banner nav .active a:visited {
+		background: #C74451;
+		color: #fff;
+		text-shadow: none !important;
+	}
+	
+	#banner nav li:first-child a {
+		border-top-left-radius: 5px;
+		-moz-border-radius-topleft: 5px;
+		-webkit-border-top-left-radius: 5px;
+		
+		border-bottom-left-radius: 5px;
+		-moz-border-radius-bottomleft: 5px;
+		-webkit-border-bottom-left-radius: 5px;
+	}
+
+/*
+	Featured
+*****************/
+#featured {
+	background: #fff;
+	margin-bottom: 2em;
+	overflow: hidden;
+	padding: 20px;
+	width: 760px;
+	
+	border-radius: 10px;
+	-moz-border-radius: 10px;
+	-webkit-border-radius: 10px;
+}
+
+#featured figure {
+	border: 2px solid #eee;
+	float: right;
+	margin: 0.786em 2em 0 5em;
+	width: 248px;
+}
+#featured figure img {display: block; float: right;}
+
+#featured h2 {color: #C74451; font-size: 1.714em; margin-bottom: 0.333em;}
+#featured h3 {font-size: 1.429em; margin-bottom: .5em;}
+
+#featured h3 a:link, #featured h3 a:visited {color: #000305; text-decoration: none;}
+#featured h3 a:hover, #featured h3 a:active {color: #fff;}
+
+/*
+	Body
+*****************/
+#content {
+	background: #fff;
+	margin-bottom: 2em;
+	overflow: hidden;
+	padding: 20px 20px;
+	width: 760px;
+	
+	border-radius: 10px;
+	-moz-border-radius: 10px;
+	-webkit-border-radius: 10px;
+}
+
+/*
+	Extras
+*****************/
+#extras {margin: 0 auto 3em auto; overflow: hidden;}
+
+#extras ul {list-style: none; margin: 0;}
+#extras li {border-bottom: 1px solid #fff;}
+#extras h2 {
+	color: #C74350;
+	font-size: 1.429em;
+	margin-bottom: .25em;
+	padding: 0 3px;
+}
+
+#extras a:link, #extras a:visited {
+	color: #444;
+	display: block;
+	border-bottom: 1px solid #F4E3E3;
+	text-decoration: none;
+	padding: .3em .25em;
+}
+
+#extras a:hover, #extras a:active {color: #fff;}
+
+	/* Blogroll */
+	#extras .blogroll {
+		float: left;
+		width: 615px;
+	}
+	
+	#extras .blogroll li {float: left; margin: 0 20px 0 0; width: 185px;}
+	
+	/* Social */
+	#extras .social {
+		float: right;
+		width: 175px;
+	}
+	
+	#extras div[class='social'] a {
+		background-repeat: no-repeat;
+		background-position: 3px 6px;
+		padding-left: 25px;
+	}
+	
+		/* Icons */
+		.social a[href*='about.me'] {background-image: url('../images/icons/aboutme.png');}
+		.social a[href*='bitbucket.org'] {background-image: url('../images/icons/bitbucket.png');}
+		.social a[href*='delicious.com'] {background-image: url('../images/icons/delicious.png');}
+		.social a[href*='digg.com'] {background-image: url('../images/icons/digg.png');}
+		.social a[href*='facebook.com'] {background-image: url('../images/icons/facebook.png');}
+		.social a[href*='gitorious.org'] {background-image: url('../images/icons/gitorious.png');}
+		.social a[href*='github.com'],
+		.social a[href*='git.io'] {background-image: url('../images/icons/github.png');}
+		.social a[href*='gittip.com'] {background-image: url('../images/icons/gittip.png');}
+		.social a[href*='plus.google.com'] {background-image: url('../images/icons/google-plus.png');}
+		.social a[href*='groups.google.com'] {background-image: url('../images/icons/google-groups.png');}
+		.social a[href*='news.ycombinator.com'],
+		.social a[href*='hackernewsers.com'] {background-image: url('../images/icons/hackernews.png');}
+		.social a[href*='last.fm'], .social a[href*='lastfm.'] {background-image: url('../images/icons/lastfm.png');}
+		.social a[href*='linkedin.com'] {background-image: url('../images/icons/linkedin.png');}
+		.social a[href*='reddit.com'] {background-image: url('../images/icons/reddit.png');}
+		.social a[type$='atom+xml'], .social a[type$='rss+xml'] {background-image: url('../images/icons/rss.png');}
+		.social a[href*='slideshare.net'] {background-image: url('../images/icons/slideshare.png');}
+		.social a[href*='speakerdeck.com'] {background-image: url('../images/icons/speakerdeck.png');}
+		.social a[href*='twitter.com'] {background-image: url('../images/icons/twitter.png');}
+		.social a[href*='vimeo.com'] {background-image: url('../images/icons/vimeo.png');}
+		.social a[href*='youtube.com'] {background-image: url('../images/icons/youtube.png');}
+
+/*
+	About
+*****************/
+#about {
+	background: #fff;
+	font-style: normal;
+	margin-bottom: 2em;
+	overflow: hidden;
+	padding: 20px;
+	text-align: left;
+	width: 760px;
+	
+	border-radius: 10px;
+	-moz-border-radius: 10px;
+	-webkit-border-radius: 10px;
+}
+
+#about .primary {float: left; width: 165px;}
+#about .primary strong {color: #C64350; display: block; font-size: 1.286em;}
+#about .photo {float: left; margin: 5px 20px;}
+
+#about .url:link, #about .url:visited {text-decoration: none;}
+
+#about .bio {float: right; width: 500px;}
+
+/*
+	Footer
+*****************/
+#contentinfo {padding-bottom: 2em; text-align: right;}
+
+/***** Sections *****/
+/* Blog */
+.hentry {
+	display: block;
+	clear: both;
+	border-bottom: 1px solid #eee;
+	padding: 1.5em 0;
+}
+li:last-child .hentry, #content > .hentry {border: 0; margin: 0;}
+#content > .hentry {padding: 1em 0;}
+.hentry img{display : none ;}
+.entry-title {font-size: 3em; margin-bottom: 10px; margin-top: 0;}
+.entry-title a:link, .entry-title a:visited {text-decoration: none; color: #333;}
+.entry-title a:visited {background-color: #fff;}
+
+.hentry .post-info * {font-style: normal;}
+
+	/* Content */
+	.hentry footer {margin-bottom: 2em;}
+	.hentry footer address {display: inline;}
+	#posts-list footer address {display: block;}
+
+	/* Blog Index */
+	#posts-list {list-style: none; margin: 0;}
+	#posts-list .hentry {padding-left: 10px; position: relative;}
+	
+	#posts-list footer {
+		left: 10px;
+		position: relative;
+        float: left;
+		top: 0.5em;
+		width: 190px;
+	}
+	
+	/* About the Author */
+	#about-author {
+		background: #f9f9f9;
+		clear: both;
+		font-style: normal;
+		margin: 2em 0;
+		padding: 10px 20px 15px 20px;
+		
+		border-radius: 5px;
+		-moz-border-radius: 5px;
+		-webkit-border-radius: 5px;
+	}
+	
+	#about-author strong {
+		color: #C64350;
+		clear: both;
+		display: block;
+		font-size: 1.429em;
+	}
+	
+	#about-author .photo {border: 1px solid #ddd; float: left; margin: 5px 1em 0 0;}
+	
+	/* Comments */
+	#comments-list {list-style: none; margin: 0 1em;}
+	#comments-list blockquote {
+		background: #f8f8f8;
+		clear: both;
+		font-style: normal;
+		margin: 0;
+		padding: 15px 20px;
+		
+		border-radius: 5px;
+		-moz-border-radius: 5px;
+		-webkit-border-radius: 5px;
+	}
+	#comments-list footer {color: #888; padding: .5em 1em 0 0; text-align: right;}
+	
+	#comments-list li:nth-child(2n) blockquote {background: #F5f5f5;}
+	
+	/* Add a Comment */
+	#add-comment label {clear: left; float: left; text-align: left; width: 150px;}
+	#add-comment input[type='text'],
+	#add-comment input[type='email'],
+	#add-comment input[type='url'] {float: left; width: 200px;}
+	
+	#add-comment textarea {float: left; height: 150px; width: 495px;}
+	
+	#add-comment p.req {clear: both; margin: 0 .5em 1em 0; text-align: right;}
+	
+	#add-comment input[type='submit'] {float: right; margin: 0 .5em;}
+	#add-comment * {margin-bottom: .5em;}
diff --git a/pelican-plugins/test_data/themes/notmyidea/static/css/pygment.css b/pelican-plugins/test_data/themes/notmyidea/static/css/pygment.css
new file mode 100644
index 0000000..fdd056f
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/static/css/pygment.css
@@ -0,0 +1,205 @@
+.hll {
+background-color:#eee;
+}
+.c {
+color:#408090;
+font-style:italic;
+}
+.err {
+border:1px solid #FF0000;
+}
+.k {
+color:#007020;
+font-weight:bold;
+}
+.o {
+color:#666666;
+}
+.cm {
+color:#408090;
+font-style:italic;
+}
+.cp {
+color:#007020;
+}
+.c1 {
+color:#408090;
+font-style:italic;
+}
+.cs {
+background-color:#FFF0F0;
+color:#408090;
+}
+.gd {
+color:#A00000;
+}
+.ge {
+font-style:italic;
+}
+.gr {
+color:#FF0000;
+}
+.gh {
+color:#000080;
+font-weight:bold;
+}
+.gi {
+color:#00A000;
+}
+.go {
+color:#303030;
+}
+.gp {
+color:#C65D09;
+font-weight:bold;
+}
+.gs {
+font-weight:bold;
+}
+.gu {
+color:#800080;
+font-weight:bold;
+}
+.gt {
+color:#0040D0;
+}
+.kc {
+color:#007020;
+font-weight:bold;
+}
+.kd {
+color:#007020;
+font-weight:bold;
+}
+.kn {
+color:#007020;
+font-weight:bold;
+}
+.kp {
+color:#007020;
+}
+.kr {
+color:#007020;
+font-weight:bold;
+}
+.kt {
+color:#902000;
+}
+.m {
+color:#208050;
+}
+.s {
+color:#4070A0;
+}
+.na {
+color:#4070A0;
+}
+.nb {
+color:#007020;
+}
+.nc {
+color:#0E84B5;
+font-weight:bold;
+}
+.no {
+color:#60ADD5;
+}
+.nd {
+color:#555555;
+font-weight:bold;
+}
+.ni {
+color:#D55537;
+font-weight:bold;
+}
+.ne {
+color:#007020;
+}
+.nf {
+color:#06287E;
+}
+.nl {
+color:#002070;
+font-weight:bold;
+}
+.nn {
+color:#0E84B5;
+font-weight:bold;
+}
+.nt {
+color:#062873;
+font-weight:bold;
+}
+.nv {
+color:#BB60D5;
+}
+.ow {
+color:#007020;
+font-weight:bold;
+}
+.w {
+color:#BBBBBB;
+}
+.mf {
+color:#208050;
+}
+.mh {
+color:#208050;
+}
+.mi {
+color:#208050;
+}
+.mo {
+color:#208050;
+}
+.sb {
+color:#4070A0;
+}
+.sc {
+color:#4070A0;
+}
+.sd {
+color:#4070A0;
+font-style:italic;
+}
+.s2 {
+color:#4070A0;
+}
+.se {
+color:#4070A0;
+font-weight:bold;
+}
+.sh {
+color:#4070A0;
+}
+.si {
+color:#70A0D0;
+font-style:italic;
+}
+.sx {
+color:#C65D09;
+}
+.sr {
+color:#235388;
+}
+.s1 {
+color:#4070A0;
+}
+.ss {
+color:#517918;
+}
+.bp {
+color:#007020;
+}
+.vc {
+color:#BB60D5;
+}
+.vg {
+color:#BB60D5;
+}
+.vi {
+color:#BB60D5;
+}
+.il {
+color:#208050;
+}
diff --git a/pelican-plugins/test_data/themes/notmyidea/static/css/reset.css b/pelican-plugins/test_data/themes/notmyidea/static/css/reset.css
new file mode 100644
index 0000000..1e21756
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/static/css/reset.css
@@ -0,0 +1,52 @@
+/*
+	Name: Reset Stylesheet
+	Description: Resets browser's default CSS
+	Author: Eric Meyer
+	Author URI: http://meyerweb.com/eric/tools/css/reset/
+*/
+
+/* v1.0 | 20080212 */
+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 {
+	background: transparent;
+	border: 0;
+	font-size: 100%;
+	margin: 0;
+	outline: 0;
+	padding: 0;
+	vertical-align: baseline;
+}
+
+body {line-height: 1;}
+
+ol, ul {list-style: none;}
+
+blockquote, q {quotes: none;}
+
+blockquote:before, blockquote:after,
+q:before, q:after {
+	content: '';
+	content: none;
+}
+
+/* remember to define focus styles! */
+:focus {
+	outline: 0;
+}
+
+/* remember to highlight inserts somehow! */
+ins {text-decoration: none;}
+del {text-decoration: line-through;}
+
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}
\ No newline at end of file
diff --git a/pelican-plugins/test_data/themes/notmyidea/static/css/typogrify.css b/pelican-plugins/test_data/themes/notmyidea/static/css/typogrify.css
new file mode 100644
index 0000000..c9b34dc
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/static/css/typogrify.css
@@ -0,0 +1,3 @@
+.caps {font-size:.92em;}
+.amp {color:#666; font-size:1.05em;font-family:"Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua",serif; font-style:italic;}    
+.dquo {margin-left:-.38em;}
diff --git a/pelican-plugins/test_data/themes/notmyidea/static/css/wide.css b/pelican-plugins/test_data/themes/notmyidea/static/css/wide.css
new file mode 100644
index 0000000..88fd59c
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/static/css/wide.css
@@ -0,0 +1,48 @@
+@import url("main.css");
+
+body {
+    font:1.3em/1.3 "Hoefler Text","Georgia",Georgia,serif,sans-serif;
+}
+
+.post-info{
+    display: none;
+}
+
+#banner nav {
+    display: none;
+    -moz-border-radius: 0px;
+    margin-bottom: 20px;
+    overflow: hidden;
+    font-size: 1em;
+    background: #F5F4EF;
+}
+
+#banner nav ul{
+    padding-right: 50px;
+}
+
+#banner nav li{
+    float: right;
+    color: #000;
+}
+
+#banner nav li a {
+    color: #000;
+}
+
+#banner h1 {
+    margin-bottom: -18px;
+}
+
+#featured, #extras {
+    padding: 50px;
+}
+
+#featured {
+    padding-top: 20px;
+}
+
+#extras {
+    padding-top: 0px;
+    padding-bottom: 0px;
+}
diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/aboutme.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/aboutme.png
new file mode 100644
index 0000000000000000000000000000000000000000..9609df3bd9d766cd4b827fb0a8339b700c1abf24
GIT binary patch
literal 751
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c
z!@6@aFM%9|WRD<U28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5)Ta>O
z6XFU~z-^brZ51PwI9(_Kh^7g}PZf%vA`~}SFm|F~be~{E7r$Q>mqnyt>;%CWAnF&0
z>J^CU7KrHN4{PNQZsheU=5fy8Gz;Yisssv#ckqX`@rAbXg*5X8HSz`4@%dHr`jqpy
z=5RZtaF_)12GsKU*YNsP@%UEo0L8sad4MK(6mq-eal2-7IizygC9)g&bNiP6KWohG
zS-|Cz#pRUFX_v@p6U%1c!{t%H>ygjnp2z8w&f}cUVI9k18Od!O&8Fwc>5|Q96~*D0
z#%UhPVH?k3;LWPz#^I34reVi!8_%X{#by@DrewmR<-%&@&nzOxqVB+|@6E{0!>ne@
zqU+A2Y{jhQ!lY=<q~X9QZ^Ec*%OGo*Ey1r33?s&pAirP+hi5m^fE>;OkH}&m?E%Ja
zC$sH<jJ=*Njv*44Lr+}~IuyX*dNEnZE1;`^i>aw(BO9N_QK10Mpk${dC;$Iv-Sgs1
z>}GlM0tE(@$Z4WS9~SJov+DT=kEZa@(E0WcEcx0FsV`5Db6NC!V}woNM4#AY#y4|V
zcGfJc2;H@B=ic4*7ff{9i&|5ruCcY7__a#1S1tN{P32SRuV!D_tlt0mk+S{xzkezF
zn-7Y&EBC3-DcWUz;LL;X@g_ZzKBs5>H{b4a!=6dHduc-B)u;`Jo`r8<+{W~Vq2`0N
zaE8$A3qX&kmbgZgq$HN4S|t~y0x1R~14Cn717lr7(-1=oD?>9YBLiInb1MS_`T5Fb
hC>nC}Q!>*kF*O*PK{PbaT?tCT44$rjF6*2UngApI;B){0

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/bitbucket.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/bitbucket.png
new file mode 100644
index 0000000000000000000000000000000000000000..d05ba1610eab6ec3f9a4dcae689d4d88bda5433f
GIT binary patch
literal 3714
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
YMmB*MwFfr>em`u4_ARY)4g0YF1Gb&y!T<mO

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/delicious.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/delicious.png
new file mode 100644
index 0000000000000000000000000000000000000000..3dccdd848ec99fba9950e8195d4e73867ada2738
GIT binary patch
literal 958
zcmV;v13~<WP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o
zcW-iQb09-gGzPNMpa1{>6?8>dbVG7wVRUJ4ZXi@?ZDjy5FfTVRFgbe517iRH0~bj|
zK~y*q1;M><8+9DO;m`f<=Zk&uOYFLC>!dcMNlRiXOAJIPLZ}-N2r=?6l!XNe7Ld9z
z6a-9cEObDHN_0a4!Gc7jsFEAnrb(blQ`d>p#Bb+&^WA-U9s{6QELO(jaU+wlmuj`y
zOSM|Pw6u7>?C5v1c7C;edel2@_h-|CVA`%`PmXKp)XB`5jeDpcel^zC-n+HDy!3vp
ze$j3;8sxHR%H=c6&oA=Vefai!sFa}BgS}_Mz552<V~<yxJwE>E)|xJtFMV+H<`)V8
z0000&I&H=CwkC7|1+Ht5N=8hoX|`Vs_~ouY)RRea08$5l2_gU{hT&pq6F<t)AA>W7
z_P)m??qXUg(&k9=<<+O!vJ60ggg6!eOcNj>n-Mylh$t3LyAecfGI@`Qt8oVzqjIjW
zs7s|O7Zgbn0tSWw5CbKQWRLbk7iAT&b4RGW3$c(&DZC)X=0EBkozJI+07|6+0002!
z96pEP9Emb;Mn1?1gf?J9LHxOMyT9w><KqXd*7{1n@3X!Alt&LYah#ByN58T8-!(EX
zeM4hmK&f2Co-UG2Tb#|!&^frRrmfotymF=S<Jrox6be@bDgs%7lmJpazbZR>A|jE9
z1R@fPNF*X6Uw!$hG@H#gbvAe5wL~g-eup^rQ51ogp);b<%&}090TY-2A(DWhOb(AU
zt=5*KY8U5!ilTtw@DL<MjD$#hz{7D2zyu(QAc`On00;xWyR!1ezDj58tuP!C_%3l0
zArcVy5n!|Pc#H1Q697N}Fq8rWf&TjXpQox`pPLQ>53MyKF(LtA0!3c*Cpe=q09vQf
z+Cmu?U@++SOV_V|XzTs`Ct)sEAP7&e6nI{jI35E>5T)?~0l@biEX!gz^cXoVei)W7
zR4cQ(UcdZcW8)ct>tJdR43DWPg=J>YsWP8^{+%q$SDl^R1C=DY=lj9GdwUzhVljPq
z<Hjd#ZQJ&4^Xk&qYj3}mtp9y?<FLDRyz=_B{$Q96eLtAe$~}E~zS_&?X3RTx{us1c
gKZgJSS1vdBA2JPvwdAdsW&i*H07*qoM6N<$g6#jH1ONa4

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/facebook.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/facebook.png
new file mode 100644
index 0000000000000000000000000000000000000000..74e7ad52f362b56d584df459bc5141395c32b7ed
GIT binary patch
literal 202
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU{r~^Jb>s{nN~l=<`rQ{G
z*EMNgZp)TeGt$L@YM4rb{DK+IJaKeh4CFB;dAqwXbg;^L06Clm9+AaB8pQTsa66f8
z2V~fKx;Tb#Tu)ADV02S85J*U9G7veylX_i&!&z12Q~+;~Q|gK~r==k=&T|S@G#cDE
lb^5gT;nTtbJUf;eFfcqx6@I<wZW_oS22WQ%mvv4FO#ou|K`{UT

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/github.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/github.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c52b486c5e392261c24d53fe2609e54d4f07c5d
GIT binary patch
literal 346
zcmV-g0j2(lP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000XT
z000XT0n*)m`~Uy}3`s;mR5;6()3HheVGso1uMG%RRzfO4uoA3<v_61sARwd?1Y28Q
z!qzGv2!XV=2ZA63u1yv20fbZm;cO=I6E3Izu-x(Q%-qiI9=lH;XNkUloFV3D@R?|G
zH|!$z@Qf91aa`n%a<>Ym*CsGUh074yEL{XMZ7cf&`*=*r72Z+j+2B5y<+hzU#(AFv
z+!m8y#^HcNtmEqdUmXGsPJ&&BYk)<>PJbac!3$@wEwC5mE`k2GKxqL+9X1|{k^fkb
zPG1EuO5&~{J{6@4w%#7&G9!Ay3~z<NYk_SYqmZh6{XEOE5vYraRl&Bd@+`Z5la<{F
sEO4FNbk`~?npn3quuksJ=TE=$H_pXv&+a*=O8@`>07*qoM6N<$f=VTic>n+a

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/gitorious.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/gitorious.png
new file mode 100644
index 0000000000000000000000000000000000000000..3eeb3ecec36a73ff505e04ecdecbcc4792ef6786
GIT binary patch
literal 227
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!O@L2`D?^o)dRwqYcev@q#DMvQ
z*(*AHH`kW0om8=NO8&uVRmbKn*uQ@5(H+Zf?%R0x*ww37FTJ_{>eZ{eAD{pK|9`68
zWgnn9NuDl_ArhBs&l(CfDDW^GWLD*36#n?Xe(OZZj60uZDW6tS-s!tZ;qA;Vf>oNe
zoO+M!7w(Q%nqK|iN%H(B6U8~-<?MdfvU!As@>_(gR#lieQ**`4zb(6ROF5mHl4iMd
b=se=)bK`s~y3?}<Xd8p4tDnm{r-UW|%u-w+

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/gittip.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/gittip.png
new file mode 100644
index 0000000000000000000000000000000000000000..af949625ac83d2441215c81650e897c97d9e5d95
GIT binary patch
literal 487
zcmV<D0T}*?P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyq(
z0|^AkZL;YA00C!7L_t(I%VS`Gf&_0HFrDaQqmtllJp)MJ0^(m#d<!b3f~*z}fD$l6
z7694*f%qSkM#f+<kQ!t?$TnY0z|@3+p=vIoxCCS>OmnQe`Ts~~BcM&z2u(nCq_gq=
z7&lY6AuyMK{funGm2)TmfBF3B|J(^}V8h})E&un_7XJV6?(P5kw{QH<2ysPrkqQGe
zaQ=a8*|2Qhe-QZh?;n_+)zkF9r6dC`2Exbo?ff4HG!&|51_Ly-!Oq;YV!?kH04e_c
z`xn?|n1LYr#DU#F11w-JxWxdCCa^$xYWRObptr6V*$cl=42W?z`+xTMA)r;58bP){
zesK4Hl#4Nj0k@C?G1=e#|F54v;Lb)4le}mj^k}^W4@6{%>dY9FfCGV^+9H&wMGiz2
zjKtz?1=auqi>CG<2OMfNq9-I62F3rB_Uiwu=1l{q2lUhkPe>?9*&EFzURJO;$Dfob
d%1o4IX8>>N|HqM7x0V0^002ovPDHLkV1m@;(I5Z-

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/google-groups.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/google-groups.png
new file mode 100644
index 0000000000000000000000000000000000000000..5de15e68f4d1e4176b46fe6346d42f53e3296b21
GIT binary patch
literal 803
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c
z!@6@aFM%9|WRD<U28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5)Mpyt
z6XFU~@c;jRouXIDNvA)3c>3}ElMnA6zkmDa-J1t*U*CKC>h7DDcV4}?_43)x7td}y
ze|qiNlPk|2Uv}&N<J$Y%sr#2h=TEz~AGR&ut(v}BG=4R&|6*GE*|_?XVb#Z{k1o0N
z{C4X6<<RldrscbN-4~OZ&rcp+bngD`2-Ma7)3)`8B~VxWSF^e=_U%9IT7P{1{@twZ
zvq{Y-qw0@_6(1fyxM0`*WAV}d3y=Ias`_Y9@!`?^^R}(u7ajS(=*U0I#%~r4Ul$zy
zx8Tsfhxg7~H-GEg@^|Lm-_v*hYTfwf!QFGOU)-{61S<HiU;h67owJ6O9}LRh-@AS0
z#nT%`)t~gr-rc!%+PLPEUg_K0H%={FIAg(r>GS4Ioi}&t+__Wd%$cHF^5*9C6Zh|&
zS-fcGqD3=xieDc*uvxqCB`~<QtYuvY3^<mOAU|M?e6KxrOC}M>XH4>TcVYa`q<as@
zdFbil7$R}m^h9MeW1vLa$MA2un|cb*v=~lWYdp0;VruOvk*OP}Xngs*-%0<~zvnyW
z$u}I$+H5^XZ~O7;H=pOvU|7?bpmE0ahejvoBh4mV34ayK&i-X7jy}pa&O6Qgyk^R2
z@qY&<a*FG#cy$(4mc}|2+$(r$<e#}JXyqoUrqy~Ydv9AWx?}Eo&8cAfPrvC&d+m~?
z4jo>+>QZfU<G+>%sx2Z(n*wUnoNHS?EYjGdv*%IzuiFv_(<LfgxBZ^1*%Uwf?DO~X
z-Tr@0i!vR!{=LfFATlq3|D~>s)h|m2&VR<uFU3DER#7b}zVrv^S=AEPh?11Vl2ohY
zqEsNoU}RuutZQJXYiJx|U}R-zXa!^&SXdbt9ArN;6-7gCeoAIqCAtO!D`PW=29XVF
QRX`04p00i_>zopr01MEB^#A|>

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/google-plus.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/google-plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c6b74324031611f20c0a3810131aa74fd0a5a9f
GIT binary patch
literal 527
zcmV+q0`UEbP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM0005jNkl<ZD9>ZK
z>upIAVz}dFal_O6CT?`r$q<OnIT-@kK$Q%)JnZh&Px^TL<hOT!|HHwDE3YcOueqB6
z(P;+*puibNLm>OAn;FBaOK-k!D!Jidayc;Y>7GYGxnGBxue+IChM|)V`ar=`j`~3M
zC07%M|NqZF^fS8TVssIRJYwIy1j>GXU1E8{UJs6dLU1-v!-3nb2Irih=+?6PK<TfG
zB2Rf*{>KJ@8lF5#&^v9fcghZg&b90USur#Ch_yBx0YzYJ9ftpZ|9@Mbb;3sH7#Llc
zapC{3OLv2zTp&7Rr3KUgB!TRsHrfndzX7?Q-YzOS8|-?va>A!K_nuYT9<<VgqkWbd
zKoxr}G!9s50ujTB;JBOfmb}=t_wzfT`1cp}c6-g#_aLENrfLub;W8XHSKncxy2B*+
z$(#TG{(pE>U;^giL<|Q^RJR%`Z!y$8yYa>Upa1{=xci{g2`qvgF`RFk`e^@wXB(G2
zShMW$$p`;HLHGV;SLhaf#f_+F1DIs^y0_<$oBBFk`Sl>Ab*Ovm_g^4AcawG2Lj|D-
zqK4swiTo;US!A@iaP1FZz%33(6Ney%eY$dMwPn_zpvZ?`|G(*ST!StSLI9gPlb*yp
RBR2p5002ovPDHLkV1g3B{|5j7

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/hackernews.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/hackernews.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc7a82d4d68068d5fb032885b93e670c385ae1b4
GIT binary patch
literal 3273
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

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/lastfm.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/lastfm.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a6c6262b644dadbcf6cce5dfe4fed9740a9ec1f
GIT binary patch
literal 975
zcmV;=12FuFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o
zcW-iQb09-gGzPNMpa1{>6?8>dbVG7wVRUJ4ZXi@?ZDjy5FfTVRFgbe517iRH11L#E
zK~y*q1;I~j6jdC+@$Y-{cJ_af?v|Cd&=58%RRW19jgdqNQ4(W7BPZ0vgC6ith#oz2
z<l@C}F@fj}i1E*<ghZnl0WB>wmQaM~wsz^Z-QCXa%<Rm2KR+L}`t{{KnbyYpezo$l
zE*DGMcusj{#-vn8(<kxNDvA~&G1jh;@j`O`I%(P@Yc3nV)jl`m`-eypSla-t0eJ#H
z1D*lcfpg#-C<RFh4oDN6a(7HFNgrpd27VTt1Lq(~5of_Ulu`g70)P|>DC5DyB?4oI
zHSqw7c|gHN7dAskEJO*20zV5*!N7txD5W7|ke~<M{<u+(l>#<<kjukl9qJQM$f1^+
zaC07l5Qa)HwI6E3FtY%SWh9Dl?M|#!F1wBuc<CS<+y^4CvIg}DIC=<L>+t+u*fj>r
ztH?8TXslr8?-TWV6(gOX%;6VdsD%CI2XwQA8l*5f0`DG!`c7!JVEYK^^e^<T{6;aK
zCE4telzpuuY|O54(%A))pKqWt2HRdIz4#;U<{WZ(iryFJaSs}pQzyy2bDX&Gh-jsS
z6Jp)^{nkJLy<<Bvh)I6^ljQc_1UK%|J9`0DERd8+Ebn=R?uBp3zHtQe!CQn2576ae
zS-bm<Lj2W5^zarkCyugt<vJVJW=Z!=60Uc#?JlL$?~%j-!P)Zwu=gnfJAme+BP<>`
zcD=D}N`gz%A|jG3Hzk<+OHvW}@9ocI<-{i<BH}gz5fQObEdRWDO6IeZ^6#rBm%NX6
zKK+r`jcWbxuaexkhc1^;oi5!o=Ln~-(O+0Z=kw^X5qjTUW%cwKf<JDds}%~n#~0Pz
zXJ4NwN3vgg8oSyd-t1zN7_X2=)vDOkq1M`HlfiZaWJ{hwwTx#S)z@D5$>fWL)N6Op
zl_6x*$4|GSoI{~dSr4lfE@RM%BU`HwdyYXEVvL7at4)4lw9&i$@PL;@=v)?SEfh1D
zasgHF@wCQe1o1p1(b(1+x;KE@R@B7!CDScsKTn?9J!|Sao$80mhEYbMc$-A=FpjF~
xhgEG<4rh((w99I&de5(oe5r7A)lWa1`5&mym2=&ymqP#m002ovPDHLkV1nRSx}g97

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/linkedin.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/linkedin.png
new file mode 100644
index 0000000000000000000000000000000000000000..d29c1201bcb0c278d49f573f9ef95ebfe932fb5b
GIT binary patch
literal 896
zcmV-`1AqL9P)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0006vP)t-s00000
zXtV%nvH)we0Bp1bYqSDvv;b|j1Z}kdZ?*t$w+L;u2yM0nZnXw(wF7Uq1aGzoZnXt(
zwgYgr0CBblZ?*t&w*+vu0CKhfa<>O?w*+yx0CTqhbhrm|xBzvz1a!FqcDf06xd(T;
z33s;)cDV|7y9#-^3VFK@c)AREx(#`{5P7-@d%OyJybgN24|=>3db|^QyApf54}859
zd%O~SycB-F6oS7Mg1{Mpz#M|W8-~Ilg~A_(!XJpjA&SHzio+v{!z7EtC5yx+i^M05
z#Vn4-Esn-Ak;gHT$1;-0GLy(NlgLGp$T^kDI+e;fmdQGn$vT$GJeSHnm&-hv%0ZaR
zL72=xnae?$%tn~XLYmA%o6JO<%t)NhPo2(7pw3U9&{Ck$Q=!sTqR>>M(N?3<R;1Ec
zq|{ud(_^L5S*X%pr_^4j)nBL8UZ~VwsMTPo)nTdCW~tL=s@7_()orfWYp>RCuhwv{
z*>JGebFkNQvDtL7*>thma<bTUvD$O8+jX+qc(d4iwcLBR+I+X#f4AL&x!Z!d-h;W_
zgSp;-y4{1i-h{i~gT38^z21nt--o^3ioM^Az~PI*-<8MWmdE0k$K#;M<e|&tqRZu<
z%;clZ=BLf(r_Sf6&*!Vo=c~`>snF-F(C4es=&jS~wAARd)#<j?>bKVFwb$yn*z3L7
z?7rLWzuWJ^-|oob@6YA&(B<*a=JM9)^VjM0*y{D#>-FC4_2%;U|Ns9Oj;1#N0004W
zQchC<K<3zH0002@Nkl<Z7}Ev8!Ae3w6b9h`oSCa$HEflT6=_799wq2;+PCNddXA_?
z@6aNsK!REYQsyGHn|Q~2XXec5`v{lhi5Q#!@aBpx22P9xz|ls^CwAcvhSOI|&`c5<
z1^+Eiy2ox&c~d!G&P%&;lhIePRh5$ewz-aGPd<LeUi=!pd|n1vujhx;+q2!-2=aa-
z8HaMG)35vOBO-e`C?l`k26c+i>pR786}b)xDJsVI4<4<s<`flDDQd$Bp%hL*p<Y3%
zgj5M@?4WBJ=&CX3NRy@U^7-hVXHQ&=zuzdMc5f3nkKQy<Nz3gM@@+}Xh*@BmW&IEI
W8i?#El2Z);0000<MNUMnLSTaIozvC;

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/reddit.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/reddit.png
new file mode 100644
index 0000000000000000000000000000000000000000..71ae1215ac8ea274f089cc4aa55eaf8a546dea67
GIT binary patch
literal 693
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c
z!@6@aFM%9|WRD<U28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5l=u_i
z6XJU9!~dgqznysSYyY)(LD8wHg|!_s7AIvDr=+IWbj|FUyDmPfbnU^D@i|oqvC+T2
zfAR7QKKbzX`4|5(OPiMMJXcWD5f&BKH-E#%6Zd-;ZmH~=t*LKT-acd2`lE+#eLng4
z-?H5&V^gy8DqHgFdQ!4-yLx+<E?&50^QQUp=2kZ}L?@=@6qMb&bIZ=gs<XZA^S3Ym
z{{1VjZYV6sU$<`Ezhz7Q3Gn|rd~m|z9q#V#|2A#-XJqj2+?l+BqPsu-1;?bGKXY=$
z%2k&xUHb6h!`<)y)*Qa>=H<6<_s-L&Pd7F;*45Q*JaIQPE<GzdXZ_mMmoJ{bdHw3*
z9p@@KW~3K4B<EJluQvk)5NCl$WHFHT0Ash4*>*t27Ec$)5Q)pF{a1yW0vK4|Z{2Op
zxVv9ALPN>y#sB}^FBbIe>i@l=m`}0(f_~hg1e2M%VYC10t~mU%sCtiG><?xWiA5$d
zov)O{{8fTq@|?Ak;yL~FQ)|-7n3c~grYSB7%QuOxxR7P`%GBxBT)nEljBJ19cFi?Y
zJS=E1@52N2<OGu|i-K!rWL>;j!>H3bbpwl7vG1Cry)A3^Ox`}h>{0RYe+4#k^`Bq<
zxS_r_@XG7AtF(UYlz;cYLxy?X@e@GjGpLrhMwFx^mZVxG7o`Fz1|tJQV_gGdT|?6l
zLklYdGb;lFT?2C<ImhI8H;RVb{FKbJN^}jTRwkwp4HtB7W`eBnboFyt=akR{0GX0A
AmjD0&

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/rss.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/rss.png
new file mode 100644
index 0000000000000000000000000000000000000000..7862c65afeb66ba9cc7e9576a3a62b850b2e184d
GIT binary patch
literal 879
zcmV-#1CacQP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o
zcW-iQb09-gGzPNMpa1{>6?8>dbVG7wVRUJ4ZXi@?ZDjy5FfTVRFgbe517iRH0?0{3
zK~y*q1;I;*Rb>DG;O{@@%$+f3oY85tfwDo(q6wk`g<SMNBHL8pB9Oo~5+u|jBHD$-
zENba8Fx=I`prFto0)-ydriUq(IF07a*xYgM<J^1hJ?H#=UjT?-A9=|5*z-0`OlU7}
zH*C#G>iZ?x7RltmpuHqGE2Ov7S;O>W=fV^3Ed_|@k1wcyde_(#VU$5hJ){~SMM3vE
z`3mV6d6!6h_{5>K{^g_nAzb{##4h4Atz`x+@?|<V>HbY`2^q;2h6QShC{*2hvJjfj
zNk-Xd(Y{3MG9@ZB0^>WVP_!vG5J*O7R18<<GTj>ow5~Ea&x6M(ayp9?tF$h&c7>5K
z>WU;q03evmbXTSntIWQ`uA?F#fQoNl=Fcyg9w7z*62w8B*nHn@<2%JaJ`lfonhURq
zw=ar_Ql9;S2M)3^Bp^gWR2P)>#BvgiT$A6V8ZiBc(EeWde4lt`PTaT(96Za+Zi+q;
zA*lPr#_VFEx7t*!3sdtvev(6%g(JTUw-+U69u><wB#Gg@FDchiMFe$CB9uv}i(t!M
z)_xE!92WmNC2pSQ=&G{Y6MlRX40pVssE}6TAnFwKI{(cku`$y%=nztdx$yHF!l!o&
zqca9io>2XEnzC(V_9^w`BzdLGqpGA|C0Rn+wz0^j?cy_E@k(x(WUQW7?tE3Zi_R5k
zBQ;EB<m<#bN>j2p9AqRn)QGiEcNEFEUOzK+@qNX}oQZ9LjYXYiQ|zvZ2|*AlVi;?O
z>etgdlS{`I>%1>i)A}(L@>OH~L>+3$+*Z|kU%u8eI?)iaRKKkJyErh|edyx=<#)&5
zPOhE&aPSXGvdN%`K^<$I9%YX#r5d4(<b68Rd#-Ieu&_S><mcYn6Utk!*UjrMhO)EN
z?KBldHCq(%uDY?cjOnJ8Zl`%Cnc5q&*?phQA6_^G{{t(DV2lcQ!aM)~002ovPDHLk
FV1f)<i^Tu{

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/slideshare.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/slideshare.png
new file mode 100644
index 0000000000000000000000000000000000000000..ecc97410138bb3c457a898b1e868b22ae9db9989
GIT binary patch
literal 535
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfjR2nz*S~-N{{H>@*RNkce*F0U
z{rk6X-@bnR`sK@)&!0bk{P^+1hY#=Hzkm1c-M6<d-oAbN>eZ{4FJC@?{`}dqXP+Kk
zfBg9I&8M#)J$iKg$*Tts9^Acq_w>EzpARqEaQ@!6eO+r#-}<z-?bG(EnMZEFU)j{U
z{o<QxDb?$a=dU@vZ2pulJ+g1Ryl2jw`L4q*WzoUcEgso(w|r`m{@5h-y21KGt>n8>
zu{U`lyUMLC`*)c4@4l3;wx-<Gq<7b=G@+FRjyfG%U&QjqSJgBY#cDUL(P>(%(zHRk
zY87AMB8Ie?|NsBbO`N?A=tqx|AirQBmq@T5pE`yXT^3ECnaey~977}|Sr4A{I}{+o
zaN%=YK67fKl);XLhVMN72>h>4j>!~t_j$}=vE_wj;Wj1)-!<nL8zwL@?458yC$D?*
z>S-z}KHD!>)!zx?ko4cYZua^>?$dWqKR+B>HaC57^UvfAaqpaV<uBr;H{$nQpPKaL
zwtfD!!1j*q@1|^-d1s2K;_0XI!p8)-c>es*Q+RSF`|DQgH%v`O+{1V2ALnUm<nUs4
dVP-J--|@jj(URrLY@mx7JYD@<);T3K0RY7iJHY?|

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/speakerdeck.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/speakerdeck.png
new file mode 100644
index 0000000000000000000000000000000000000000..087d0931caa301f8a1bba1497e1b91b7a7f105a4
GIT binary patch
literal 1049
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c
z!@6@aFM%9|WRD<U28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5)ORJo
zC&X36Qpczy)Vv|qtS-i^KE}L0*0?lOuQ1qcbDjH^di}y+y|QqP!eEVpVC8Ior7S<$
zRBzc7Z^?L1sRU2)Xm_y)H_-@J;Sd+WKxYAeM*&|)eqRTEZwEe4dwvgleoqH}M{A*k
zFrmaSekW@-6-5Cz2O#2iwYT3?W4EE&Zez8>rW*T=)%F`}tXEZ-FE2F%qGdo-V!pi0
zdUd7Ql2Vg}#l{PZj29FdFDNouRBSZ2NPl*|!JGnvIfaIE3w5UE>P*Se>d(~b&Cu#i
z*94*-AWGAokfk#vSF=A$y(3K`#!V!^PRQRzI?P!<(p@UlS<uf$GR94#GhMYKUAZwy
z$k#^P+a{nQciFD31rs_7C$z8FvpuLXPs-O`$j3&xAyKt6L#ZiMp*lgp%UUVGb?S;G
zpFV$Xnm4^^?zEY!mT8CkC{)MG)h5Z5#_)Ss@z@!QIGVep#5$zJxTeI3I$H498u7bZ
z$<-uDmBmXI#fZfD3PpGbMtJatx(bB4352=xhq;Nw`$-kYisi?M=0%GY#E1eJ`O#u|
z(Lxy!Lg^8L>EVLu5dvx9f@$GG8Ik-+VSI_9d<h}E2_XW>VSI6+ys<zO!V??J6BGQb
z?f5oe#A}oU`2|<sc=Gu1;~O{r{ks9AF~RkJ|E^a9l}zT~&jsq?Ebxdd2GSm2>~=ES
z4wz7QJY5_^BrYc>B%~yzC8jbmrirPUv9Xo$@%rlK%F4#-%F4>-`suOd+14`GGBZ2Z
zIx90L*9zyc$psr58y9nXdwUma8*2y0vDsxyM@uVg*vhOFU0uh<$nLJ5E*>6kZeE_w
z@6YbYrl_AUA8-G^q2YkS{Raa2iEI-uZ1~V|V#SLYH+KAJIie!ScJaxSD_g$woLSTJ
zX3mv6DTZtx_xx!(wCK^KNtZT#>iXkV$kw^))vQ~)ezhH2w(HijX<D9aE3a+acJ14>
zzH8ggT|2ifER${KyLs>Ky?eLs-#^Y;;oZMeB%i4H&a+A767ZjEQ~Byi<|iJmuFL6X
zSeha?J1&`I)ZEpyYSye-Rssx~p{$||UzYnt><E|>3Jf6C64!{5l*E!$tK_0oAjM#0
zU}&ssV61Cs8e(W+WoT$+XryakZe?KbBv`K%MMG|WN@iLmrUnB`h=%CJhhl*m7(8A5
KT-G@yGywnx3UT@X

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/twitter.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/twitter.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0ef3cc1b36ab79ac7931c2269b70f3662950a97
GIT binary patch
literal 830
zcmV-E1Ht@>P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000XT000XT0n*)m`~Uy|9CSrkbW?9;ba!ELWdK2BZ(?O2Mrm?o
zcW-iQb09-gGzPNMpa1{>6?8>dbVG7wVRUJ4ZXi@?ZDjy5FfTVRFgbe517iRH0+&fd
zK~y*q1;I;eT~!#z;orN~+WXwn#6*y$w(*h*ilq*eI<ylz7WC6N)6d|fvkpZB9V!J8
z2ZbWoL7^5epbbqgY2vx>v-e)>{rfz2>o|YjIakM#%UhMb+@bNp@nA+}SPdDo7O9oA
zGH1DQ=3VCA#gT5=SO4a&tyI0gXB<SK6xqg@0Z$}qgCQV6ClOuXu)#Q5+OJ_#^k7_r
zheE)Z$k+l7fkSs17jwZP7dAz7g1U~xI`DL(ozOXz2hl6>T8cdC;FG`L+ZpV~z_2(k
zy27+~*2T$!9(dBjs?l*Gs@^i^ycrPqX$n7{!nGav4CBKp&|ow~j<PdVAOX36;W=f=
zcg#5-A_DHOV0!@nWta;7X#<a2c(aE0Mv>oLoVsusArMnnq)x&OT0jOD0^FU!r)xMV
z@T`Lg@WUazJu+?=Xo^@Bc7w?~m$5A3q=>T&2}l_pF5!6#!NjS=iGu;#28{!#P2-AU
z0h%HbP#g*{cet?yAML`kY`i-ZA56r3H`W4*h|+12)Ju^?5tk}wyNb*^F%HHT7vW$4
z0AT#-;$9CI5)714(INy>lS^h8jI9{BG64bGL3}rZ+e`R<Djv3Q5R6?Dv%b(~$6Ps8
ziFv^wCRP|%$FOIRC2pR;#*Ccd)ggTS2D}rEpF2RJcTz|(EJ7S`+=>_3xqi;MG7(3u
z(Kz(IvnufS+IiH%<p?`C)9l1x!?Y@@CP3%#xPkq1#+R4G#}g-E?2iIPa5yyHs$ouH
z-K=@KsTg7VDI4PjuosQ9-uZ1|ygo8+yd+8~43bd+1^8v=JZK7MrDoZQ`Npr=H_sQ>
z|H$#?(3yDKFI$%htO#ZKU{k0-ZZa!IYoMLFnl`;oUNO7#KQyI_l_SgjkN^Mx07*qo
IM6N<$g7S@P4*&oF

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/vimeo.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/vimeo.png
new file mode 100644
index 0000000000000000000000000000000000000000..dba472022f0fcf7ecdd8f4847a8a3bde90789bc7
GIT binary patch
literal 544
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c
z!@6@aFM%9|WRD<U28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5l;{oc
z32_C|+_Uys@43gj_L}zg+illgm0x@zv+3s4+i(B>|Nr6VAFo3XmfU;0<iUsXQx7)X
zefj>&*Mqkod+xp6y#3gPyN@QHxXzy0-n4wn!XxLor|jgco@-h?@!*{&Jj>5-y7s_z
z@+$6G2Ohk5z2Vroh5JukeEmths6S=tPM4Z~$^H#Vee))+-^JCwnxk~8b9t9&bn*5L
zvT{HNF_r}R1v5B2yO9RsBze2LaDKeG^bL^H>FMGaB5^si|EAa>1s)gXg^zYT($l&Y
zn|<~Fe;e+k=x2)RJNb=;l_qw0c;tC<3C(%IzGPL~DJ!ccy{fL?3~Y=q61VnM<TQ9P
zT)rt2@!~001bc#cbi(rr{wEh77qIL(e)3=NIft^wo!2&+SKOT~$6qhLjqx34@RYU7
z{#4bU+Et}+?da|Ov-kaHT~opS;{5EL2Z4@KEpd$~Nl7e8wMs5Z1yT$~28PDE28OzZ
z#vukqRtDx)1{S&o7FGrZGx*g|HRR@}WTsW3YcR7iwuETV%lIh*w1L6X)z4*}Q$iB}
DsxjOm

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/static/images/icons/youtube.png b/pelican-plugins/test_data/themes/notmyidea/static/images/icons/youtube.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce6cbe4fdaf6e7dff56c0418a19bd1466a40a02e
GIT binary patch
literal 458
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!6%)r1HuVsG}$dN2@jVKAuPb(=;EJ|f?Ovz75
zRq)JBOiv9;O-!jQJeg_(RFo6o6XN<G2$Y3@ymvAT|3m%%D+}NF^Y6VZ!~b2o{$ITG
z?b)jTGiQATl1f60jy`rtTeEAD`~RCa|KGa#UWTFGi|75y|Nm#to?9UNf77O`>+{k&
zPwWILICuW)Iw1Sxx96+>e|Uf6_up&l^DbVzD4uS~541_8B*-rqWG?~05TV1%3sir^
z)5S5Q;#N{XT0%k!1BU`zox({D0S6wQ93LMAIc5h2!;S_HIkiHz2^JA8f(i{15>tM#
zJZaz(V9+^u@ZiY<CwN%ioO#2*ctqj!0d^r~sZ&Q7LQft!df?cx1}2F}NylYIn?7tZ
zFwkm{a5!=H#3=?7=8QfAWrv2wEuBUSvmPZTJ!X<R#bzEc&vT;VEYB{-NuBaXL{nNM
zxEc32IYdiHD1I|Il))y(7N(Gv@*pkYK?_HLfx(6o1|9}ojVx0n6Wba*QyHvlSq!fv
S^UDJL!{F)a=d#Wzp$P!fz0HvT

literal 0
HcmV?d00001

diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/analytics.html b/pelican-plugins/test_data/themes/notmyidea/templates/analytics.html
new file mode 100644
index 0000000..4de2c86
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/analytics.html
@@ -0,0 +1,12 @@
+{% if GOOGLE_ANALYTICS %}
+    <script type="text/javascript">
+    var _gaq = _gaq || [];
+    _gaq.push(['_setAccount', '{{GOOGLE_ANALYTICS}}']);
+    _gaq.push(['_trackPageview']);
+    (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+    </script>
+{% endif %}
\ No newline at end of file
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/archives.html b/pelican-plugins/test_data/themes/notmyidea/templates/archives.html
new file mode 100644
index 0000000..f678494
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/archives.html
@@ -0,0 +1,13 @@
+{% extends "base.html" %}
+{% block content %}
+<section id="content" class="body">
+<h1>Archives for {{ SITENAME }}</h1>
+
+<dl>
+{% for article in dates %}
+    <dt>{{ article.locale_date }}</dt>
+    <dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
+{% endfor %}
+</dl>
+</section>
+{% endblock %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/article.html b/pelican-plugins/test_data/themes/notmyidea/templates/article.html
new file mode 100644
index 0000000..516fd3b
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/article.html
@@ -0,0 +1,35 @@
+{% extends "base.html" %}
+{% block title %}{{ article.title|striptags }}{% endblock %}
+{% block content %}
+<section id="content" class="body">
+  <article>
+    <header>
+      <h1 class="entry-title">
+        <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
+           title="Permalink to {{ article.title|striptags }}">{{ article.title}}</a></h1>
+      {% include 'twitter.html' %}
+    </header>
+
+    <div class="entry-content">
+      {% include 'article_infos.html' %}
+      {{ article.content }}
+    </div><!-- /.entry-content -->
+    {% if DISQUS_SITENAME and SITEURL and article.status != "draft" %}
+    <div class="comments">
+      <h2>Comments !</h2>
+      <div id="disqus_thread"></div>
+      <script type="text/javascript">
+        var disqus_identifier = "{{ article.url }}";
+        var disqus_url = "{{ SITEURL }}/{{ article.url }}";
+        (function() {
+        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+        dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
+        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+        })();
+      </script>
+    </div>
+    {% endif %}
+
+  </article>
+</section>
+{% endblock %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/article_infos.html b/pelican-plugins/test_data/themes/notmyidea/templates/article_infos.html
new file mode 100644
index 0000000..4b86716
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/article_infos.html
@@ -0,0 +1,15 @@
+<footer class="post-info">
+        <abbr class="published" title="{{ article.date.isoformat() }}">
+                {{ article.locale_date }}
+        </abbr>
+
+        {% if article.author %}
+        <address class="vcard author">
+                By <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
+        </address>
+        {% endif %}
+<p>In <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>. {% if PDF_PROCESSOR %}<a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">get the pdf</a>{% endif %}</p>
+{% include 'taglist.html' %}
+{% import 'translations.html' as translations with context %}
+{{ translations.translations_for(article) }}
+</footer><!-- /.post-info -->
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/author.html b/pelican-plugins/test_data/themes/notmyidea/templates/author.html
new file mode 100644
index 0000000..0b37290
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/author.html
@@ -0,0 +1,2 @@
+{% extends "index.html" %}
+{% block title %}{{ SITENAME }} - {{ author }}{% endblock %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/authors.html b/pelican-plugins/test_data/themes/notmyidea/templates/authors.html
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/base.html b/pelican-plugins/test_data/themes/notmyidea/templates/base.html
new file mode 100644
index 0000000..42a2cec
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/base.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+        <title>{% block title %}{{ SITENAME }}{%endblock%}</title>
+        <meta charset="utf-8" />
+        <link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" />
+        {% if FEED_ALL_ATOM %}
+        <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
+        {% endif %}
+        {% if FEED_ALL_RSS %}
+        <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
+        {% endif %}
+
+        <!--[if IE]>
+                <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+
+        <!--[if lte IE 7]>
+                <link rel="stylesheet" type="text/css" media="all" href="{{ SITEURL }}/css/ie.css"/>
+                <script src="{{ SITEURL }}/js/IE8.js" type="text/javascript"></script><![endif]-->
+
+        <!--[if lt IE 7]>
+                <link rel="stylesheet" type="text/css" media="all" href="{{ SITEURL }}/css/ie6.css"/><![endif]-->
+
+</head>
+
+<body id="index" class="home">
+{% include 'github.html' %}
+        <header id="banner" class="body">
+                <h1><a href="{{ SITEURL }}/">{{ SITENAME }} {% if SITESUBTITLE %} <strong>{{ SITESUBTITLE }}</strong>{% endif %}</a></h1>
+                <nav><ul>
+                {% for title, link in MENUITEMS %}
+                    <li><a href="{{ link }}">{{ title }}</a></li>
+                {% endfor %}
+                {% if DISPLAY_PAGES_ON_MENU -%}
+                {% for page in PAGES %}
+                    <li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
+                {% endfor %}
+                {% endif %}
+                {% if DISPLAY_CATEGORIES_ON_MENU -%}
+                {% for cat, null in categories %}
+                    <li {% if cat == category %}class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
+                {% endfor %}
+                {% endif %}
+                </ul></nav>
+        </header><!-- /#banner -->
+        {% block content %}
+        {% endblock %}
+        <section id="extras" class="body">
+        {% if LINKS %}
+                <div class="blogroll">
+                        <h2>blogroll</h2>
+                        <ul>
+                        {% for name, link in LINKS %}
+                            <li><a href="{{ link }}">{{ name }}</a></li>
+                        {% endfor %}
+                        </ul>
+                </div><!-- /.blogroll -->
+        {% endif %}
+        {% if SOCIAL or FEED_ALL_ATOM or FEED_ALL_RSS %}
+                <div class="social">
+                        <h2>social</h2>
+                        <ul>
+                            <li><a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate">atom feed</a></li>
+                            {% if FEED_ALL_RSS %}
+                            <li><a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate">rss feed</a></li>
+                            {% endif %}
+
+                        {% for name, link in SOCIAL %}
+                            <li><a href="{{ link }}">{{ name }}</a></li>
+                        {% endfor %}
+                        </ul>
+                </div><!-- /.social -->
+        {% endif %}
+        </section><!-- /#extras -->
+
+        <footer id="contentinfo" class="body">
+                <address id="about" class="vcard body">
+                Proudly powered by <a href="http://getpelican.com/">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.
+                </address><!-- /#about -->
+
+                <p>The theme is by <a href="http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Smashing Magazine</a>, thanks!</p>
+        </footer><!-- /#contentinfo -->
+
+{% include 'analytics.html' %}
+{% include 'piwik.html' %}
+{% include 'disqus_script.html' %}
+</body>
+</html>
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/category.html b/pelican-plugins/test_data/themes/notmyidea/templates/category.html
new file mode 100644
index 0000000..56f8e93
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/category.html
@@ -0,0 +1,2 @@
+{% extends "index.html" %}
+{% block title %}{{ SITENAME }} - {{ category }}{% endblock %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/comments.html b/pelican-plugins/test_data/themes/notmyidea/templates/comments.html
new file mode 100644
index 0000000..bb033c0
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/comments.html
@@ -0,0 +1 @@
+{% if DISQUS_SITENAME %}<p>There are <a href="{{ SITEURL }}/{{ article.url }}#disqus_thread">comments</a>.</p>{% endif %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/disqus_script.html b/pelican-plugins/test_data/themes/notmyidea/templates/disqus_script.html
new file mode 100644
index 0000000..c4f442c
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/disqus_script.html
@@ -0,0 +1,11 @@
+{% if DISQUS_SITENAME %}
+<script type="text/javascript">
+    var disqus_shortname = '{{ DISQUS_SITENAME }}';
+    (function () {
+        var s = document.createElement('script'); s.async = true;
+        s.type = 'text/javascript';
+        s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+        (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+    }());
+</script>
+{% endif %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/github.html b/pelican-plugins/test_data/themes/notmyidea/templates/github.html
new file mode 100644
index 0000000..75592ac
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/github.html
@@ -0,0 +1,9 @@
+{% if GITHUB_URL %}
+<a href="{{ GITHUB_URL }}">
+{% if GITHUB_POSITION != "left" %}
+<img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" />
+{% else %}
+<img style="position: absolute; top: 0; left: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_left_white_ffffff.png" alt="Fork me on GitHub" />
+{% endif %}
+</a>
+{% endif %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/index.html b/pelican-plugins/test_data/themes/notmyidea/templates/index.html
new file mode 100644
index 0000000..8752a6b
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/index.html
@@ -0,0 +1,61 @@
+{% extends "base.html" %}
+{% block content_title %}{% endblock %}
+{% block content %}        
+{% if articles %}
+    {% for article in articles_page.object_list %}        
+
+        {# First item #}
+        {% if loop.first and not articles_page.has_previous() %}
+            <aside id="featured" class="body">
+                <article>
+                    <h1 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h1> 
+                    {% include 'article_infos.html' %}{{ article.content }}{% include 'comments.html' %}
+                </article>
+                {% if loop.length == 1 %}
+                    {% include 'pagination.html' %}
+                {% endif %}
+            </aside><!-- /#featured -->
+            {% if loop.length > 1 %}
+                <section id="content" class="body">
+                    <h1>Other articles</h1>
+                    <hr />
+                    <ol id="posts-list" class="hfeed">
+            {% endif %}
+        {# other items #}
+        {% else %} 
+            {% if loop.first and articles_page.has_previous %}
+                <section id="content" class="body">
+                    <ol id="posts-list" class="hfeed" start="{{ articles_paginator.per_page -1 }}">
+            {% endif %}
+            <li><article class="hentry">    
+                <header>
+                    <h1><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
+                           title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h1>
+                </header>
+                
+                <div class="entry-content">
+                {% include 'article_infos.html' %}
+                {{ article.summary }}
+                <a class="readmore" href="{{ SITEURL }}/{{ article.url }}">read more</a>
+                {% include 'comments.html' %}
+                </div><!-- /.entry-content -->
+            </article></li>
+        {% endif %}
+        {% if loop.last %}
+            </ol><!-- /#posts-list -->
+            {% if loop.last and (articles_page.has_previous() 
+            or not articles_page.has_previous() and loop.length > 1) %}
+                {% include 'pagination.html' %}
+            {% endif %}
+            </section><!-- /#content -->
+        {% endif %}
+    {% endfor %}
+{% else %}
+<section id="content" class="body">    
+<h2>Pages</h2>
+    {% for page in PAGES %}
+        <li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
+    {% endfor %}
+</section>
+{% endif %}
+{% endblock content %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/page.html b/pelican-plugins/test_data/themes/notmyidea/templates/page.html
new file mode 100644
index 0000000..60409d5
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/page.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+{% block title %}{{ page.title }}{% endblock %}
+{% block content %}        
+<section id="content" class="body">    
+    <h1 class="entry-title">{{ page.title }}</h1>
+    {% import 'translations.html' as translations with context %}
+    {{ translations.translations_for(page) }}
+    {% if PDF_PROCESSOR %}<a href="{{ SITEURL }}/pdf/{{ page.slug }}.pdf">get
+    the pdf</a>{% endif %}
+    {{ page.content }}
+</section>
+{% endblock %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/piwik.html b/pelican-plugins/test_data/themes/notmyidea/templates/piwik.html
new file mode 100644
index 0000000..ff459af
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/piwik.html
@@ -0,0 +1,16 @@
+{% if PIWIK_URL and PIWIK_SITE_ID %}
+    <script type="text/javascript">
+    {% if PIWIK_SSL_URL %}
+        var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ PIWIK_SSL_URL }}/" : "http://{{ PIWIK_URL }}/");
+    {% else %}
+        var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ PIWIK_URL }}/" : "http://{{ PIWIK_URL }}/");
+    {% endif %}
+    document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
+    </script><script type="text/javascript">
+    try {
+    var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {{ PIWIK_SITE_ID }});
+    piwikTracker.trackPageView();
+    piwikTracker.enableLinkTracking();
+    } catch( err ) {}
+    </script><noscript><p><img src="http://{{ PIWIK_URL }}/piwik.php?idsite={{ PIWIK_SITE_ID }}" style="border:0" alt="" /></p></noscript>
+{% endif %}
\ No newline at end of file
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/tag.html b/pelican-plugins/test_data/themes/notmyidea/templates/tag.html
new file mode 100644
index 0000000..68cdcba
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/tag.html
@@ -0,0 +1,2 @@
+{% extends "index.html" %}
+{% block title %}{{ SITENAME }} - {{ tag }}{% endblock %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/taglist.html b/pelican-plugins/test_data/themes/notmyidea/templates/taglist.html
new file mode 100644
index 0000000..c792fd7
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/taglist.html
@@ -0,0 +1,2 @@
+{% if article.tags %}<p>tags: {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>{% endfor %}</p>{% endif %}
+{% if PDF_PROCESSOR %}<p><a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">get the pdf</a></p>{% endif %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/translations.html b/pelican-plugins/test_data/themes/notmyidea/templates/translations.html
new file mode 100644
index 0000000..ca03a2c
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/translations.html
@@ -0,0 +1,8 @@
+{% macro translations_for(article) %}
+{% if article.translations %}
+Translations: 
+    {% for translation in article.translations %}
+        <a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
+    {% endfor %}
+{% endif %}
+{% endmacro %}
diff --git a/pelican-plugins/test_data/themes/notmyidea/templates/twitter.html b/pelican-plugins/test_data/themes/notmyidea/templates/twitter.html
new file mode 100644
index 0000000..c6b159f
--- /dev/null
+++ b/pelican-plugins/test_data/themes/notmyidea/templates/twitter.html
@@ -0,0 +1,3 @@
+{% if TWITTER_USERNAME %}
+<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="{{TWITTER_USERNAME}}">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
+{% endif %}
\ No newline at end of file
diff --git a/pelican-plugins/test_data/themes/simple/templates/archives.html b/pelican-plugins/test_data/themes/simple/templates/archives.html
new file mode 100644
index 0000000..050f268
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/archives.html
@@ -0,0 +1,11 @@
+{% extends "base.html" %}
+{% block content %}
+<h1>Archives for {{ SITENAME }}</h1>
+
+<dl>
+{% for article in dates %}
+    <dt>{{ article.locale_date }}</dt>
+    <dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
+{% endfor %}
+</dl>
+{% endblock %}
diff --git a/pelican-plugins/test_data/themes/simple/templates/article.html b/pelican-plugins/test_data/themes/simple/templates/article.html
new file mode 100644
index 0000000..98cc852
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/article.html
@@ -0,0 +1,25 @@
+{% extends "base.html" %}
+{% block content %}
+<section id="content" class="body">
+  <header>
+    <h2 class="entry-title">
+      <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
+         title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2>
+ {% import 'translations.html' as translations with context %}
+ {{ translations.translations_for(article) }}
+  </header>
+  <footer class="post-info">
+    <abbr class="published" title="{{ article.date.isoformat() }}">
+      {{ article.locale_date }}
+    </abbr>
+    {% if article.author %}
+    <address class="vcard author">
+      By <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
+    </address>
+    {% endif %}
+  </footer><!-- /.post-info -->
+  <div class="entry-content">
+    {{ article.content }}
+  </div><!-- /.entry-content -->
+</section>
+{% endblock %}
diff --git a/pelican-plugins/test_data/themes/simple/templates/author.html b/pelican-plugins/test_data/themes/simple/templates/author.html
new file mode 100644
index 0000000..e9f7870
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/author.html
@@ -0,0 +1,7 @@
+{% extends "index.html" %}
+
+{% block title %}{{ SITENAME }} - Articles by {{ author }}{% endblock %}
+{% block content_title %}
+<h2>Articles by {{ author }}</h2>
+{% endblock %}
+
diff --git a/pelican-plugins/test_data/themes/simple/templates/base.html b/pelican-plugins/test_data/themes/simple/templates/base.html
new file mode 100644
index 0000000..7973d77
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/base.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="{{ DEFAULT_LANG }}">
+<head>
+        {% block head %}
+        <title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
+        <meta charset="utf-8" />
+        {% if FEED_ALL_ATOM %}
+        <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
+        {% endif %}
+        {% if FEED_ALL_RSS %}
+        <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
+        {% endif %}
+        {% if FEED_ATOM %}
+        <link href="{{ FEED_DOMAIN }}/{{ FEED_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
+        {% endif %}
+        {% if FEED_RSS %}
+        <link href="{{ FEED_DOMAIN }}/{{ FEED_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
+        {% endif %}
+        {% if CATEGORY_FEED_ATOM and category %}
+        <link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_ATOM|format(category.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
+        {% endif %}
+        {% if CATEGORY_FEED_RSS and category %}
+        <link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_RSS|format(category.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
+        {% endif %}
+        {% if TAG_FEED_ATOM and tag %}
+        <link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_ATOM|format(tag.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
+        {% endif %}
+        {% if TAG_FEED_RSS and tag %}
+        <link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_RSS|format(tag.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
+        {% endif %}
+        {% endblock head %}
+</head>
+
+<body id="index" class="home">
+        <header id="banner" class="body">
+                <h1><a href="{{ SITEURL }}">{{ SITENAME }} <strong>{{ SITESUBTITLE }}</strong></a></h1>
+        </header><!-- /#banner -->
+        <nav id="menu"><ul>
+        {% for title, link in MENUITEMS %}
+            <li><a href="{{ link }}">{{ title }}</a></li>
+        {% endfor %}
+        {% if DISPLAY_PAGES_ON_MENU %}
+          {% for p in PAGES %}
+            <li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
+          {% endfor %}
+        {% else %}
+          {% if DISPLAY_CATEGORIES_ON_MENU %}
+            {% for cat, null in categories %}
+              <li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
+            {% endfor %}
+          {% endif %}
+        {% endif %}
+        </ul></nav><!-- /#menu -->
+        {% block content %}
+        {% endblock %}
+        <footer id="contentinfo" class="body">
+                <address id="about" class="vcard body">
+                Proudly powered by <a href="http://getpelican.com/">Pelican</a>,
+                which takes great advantage of <a href="http://python.org">Python</a>.
+                </address><!-- /#about -->
+        </footer><!-- /#contentinfo -->
+</body>
+</html>
diff --git a/pelican-plugins/test_data/themes/simple/templates/categories.html b/pelican-plugins/test_data/themes/simple/templates/categories.html
new file mode 100644
index 0000000..e29be0c
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/categories.html
@@ -0,0 +1,8 @@
+{% extends "base.html" %}
+{% block content %}
+<ul>
+{% for category, articles in categories %}
+    <li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a></li>
+{% endfor %}
+</ul>
+{% endblock %}
diff --git a/pelican-plugins/test_data/themes/simple/templates/category.html b/pelican-plugins/test_data/themes/simple/templates/category.html
new file mode 100644
index 0000000..4e6fd24
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/category.html
@@ -0,0 +1,5 @@
+{% extends "index.html" %}
+{% block content_title %}
+<h2>Articles in the {{ category }} category</h2>
+{% endblock %}
+
diff --git a/pelican-plugins/test_data/themes/simple/templates/gosquared.html b/pelican-plugins/test_data/themes/simple/templates/gosquared.html
new file mode 100644
index 0000000..f47efcf
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/gosquared.html
@@ -0,0 +1,14 @@
+{% if GOSQUARED_SITENAME %}
+<script type="text/javascript">
+    var GoSquared={};
+    GoSquared.acct = "{{ GOSQUARED_SITENAME }}";
+    (function(w){
+        function gs(){
+            w._gstc_lt=+(new Date); var d=document;
+            var g = d.createElement("script"); g.type = "text/javascript"; g.async = true; g.src = "//d1l6p2sc9645hc.cloudfront.net/tracker.js";
+            var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(g, s);
+        }
+        w.addEventListener?w.addEventListener("load",gs,false):w.attachEvent("onload",gs);
+    })(window);
+</script>
+{% endif %}
diff --git a/pelican-plugins/test_data/themes/simple/templates/index.html b/pelican-plugins/test_data/themes/simple/templates/index.html
new file mode 100644
index 0000000..5bb94df
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/index.html
@@ -0,0 +1,22 @@
+{% extends "base.html" %}
+{% block content %}
+<section id="content">
+{% block content_title %}
+<h2>All articles</h2>
+{% endblock %}
+
+<ol id="post-list">
+{% for article in articles_page.object_list %}
+        <li><article class="hentry">
+                <header> <h2 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2> </header>
+                <footer class="post-info">
+                    <abbr class="published" title="{{ article.date.isoformat() }}"> {{ article.locale_date }} </abbr>
+                    {% if article.author %}<address class="vcard author">By <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a></address>{% endif %}
+                </footer><!-- /.post-info -->
+                <div class="entry-content"> {{ article.summary }} </div><!-- /.entry-content -->
+        </article></li>
+{% endfor %}
+</ol><!-- /#posts-list -->
+{% include 'pagination.html' %}
+</section><!-- /#content -->
+{% endblock content %}
diff --git a/pelican-plugins/test_data/themes/simple/templates/page.html b/pelican-plugins/test_data/themes/simple/templates/page.html
new file mode 100644
index 0000000..3a0dc4a
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/page.html
@@ -0,0 +1,9 @@
+{% extends "base.html" %}
+{% block title %}{{ page.title }}{%endblock%}
+{% block content %}
+    <h1>{{ page.title }}</h1>
+    {% import 'translations.html' as translations with context %}
+    {{ translations.translations_for(page) }}
+
+    {{ page.content }}
+{% endblock %}
diff --git a/pelican-plugins/test_data/themes/simple/templates/pagination.html b/pelican-plugins/test_data/themes/simple/templates/pagination.html
new file mode 100644
index 0000000..83c587a
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/pagination.html
@@ -0,0 +1,15 @@
+{% if DEFAULT_PAGINATION %}
+<p class="paginator">
+    {% if articles_page.has_previous() %}
+        {% if articles_page.previous_page_number() == 1 %}
+            <a href="{{ SITEURL }}/{{ page_name }}.html">&laquo;</a>
+        {% else %}
+            <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.previous_page_number() }}.html">&laquo;</a>
+        {% endif %}
+    {% endif %}
+    Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
+    {% if articles_page.has_next() %}
+        <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.next_page_number() }}.html">&raquo;</a>
+    {% endif %}
+</p>
+{% endif %}
diff --git a/pelican-plugins/test_data/themes/simple/templates/tag.html b/pelican-plugins/test_data/themes/simple/templates/tag.html
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/test_data/themes/simple/templates/tags.html b/pelican-plugins/test_data/themes/simple/templates/tags.html
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/test_data/themes/simple/templates/translations.html b/pelican-plugins/test_data/themes/simple/templates/translations.html
new file mode 100644
index 0000000..db8c372
--- /dev/null
+++ b/pelican-plugins/test_data/themes/simple/templates/translations.html
@@ -0,0 +1,9 @@
+{% macro translations_for(article) %}
+{% if article.translations %}
+Translations: 
+{% for translation in article.translations %}
+<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
+{% endfor %}
+{% endif %}
+{% endmacro %}
+
diff --git a/pelican-plugins/textile_reader/Readme.textile b/pelican-plugins/textile_reader/Readme.textile
new file mode 100644
index 0000000..8a60b65
--- /dev/null
+++ b/pelican-plugins/textile_reader/Readme.textile
@@ -0,0 +1,16 @@
+h1. Textile Reader Plugin for Pelican
+
+p. This plugin adds support for "Textile markup":https://github.com/netcarver/textile via the "textile egg on pypi":https://pypi.python.org/pypi/textile .
+
+p. Input files are similar in format to Markdown files, in that they start with the post metadata in "Key: value" pairs, one per line. However, the metadata is ended by a line containing only "----", and then all that follows is the body content.  If the separator line is missing then the whole file is assumed to be content.
+
+h2. Example Input File
+
+<pre>Title: An Example Textile-formatted Input for Pelican
+Date: 2013-08-12
+Category: Plugins
+Tags: textile, pelican
+Author: Joey Coleman
+----
+p. Lorem ipsum dolor sit amet...
+</pre>
diff --git a/pelican-plugins/textile_reader/__init__.py b/pelican-plugins/textile_reader/__init__.py
new file mode 100644
index 0000000..5798041
--- /dev/null
+++ b/pelican-plugins/textile_reader/__init__.py
@@ -0,0 +1 @@
+from .textile_reader import *
diff --git a/pelican-plugins/textile_reader/textile_reader.py b/pelican-plugins/textile_reader/textile_reader.py
new file mode 100644
index 0000000..9737202
--- /dev/null
+++ b/pelican-plugins/textile_reader/textile_reader.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals, print_function
+
+from pelican import signals
+from pelican.readers import BaseReader
+from pelican.utils import pelican_open
+
+try:
+    from textile import textile
+except ImportError:
+    textile = False
+
+
+class TextileReader(BaseReader):
+    """Reader for Textile files.  Written using the core MarkdownReader as
+a template.  Textile input files must be of the form:
+
+Title: An example
+Date: 2013-08-10
+----
+p. Lorem ipsum dolar sit amet...
+
+Specifically, the header values as with Markdown files, then four
+dashes, then the body.
+
+    """
+
+    enabled = bool(textile)
+    file_extensions = ['textile']
+
+    def __init__(self, *args, **kwargs):
+        super(TextileReader, self).__init__(*args, **kwargs)
+
+    def _parse_metadata(self, meta):
+        """Process the metadata dict, lowercasing the keys and textilizing the
+value of the 'summary' key (if present).  Keys that share the same
+lowercased form will be overridden in some arbitrary order.
+
+        """
+        output = {}
+        for name, value in meta.items():
+            name = name.lower()
+            if name == "summary":
+                value = textile(value)
+            output[name] = self.process_metadata(name, value)
+        return output
+
+    def read(self, source_path):
+        """Parse content and metadata of textile files."""
+
+        with pelican_open(source_path) as text:
+            parts = text.split('----', 1)
+            if len(parts) == 2:
+                headerlines = parts[0].splitlines()
+                headerpairs = map(lambda l: l.split(':', 1), headerlines)
+                headerdict = {pair[0]: pair[1].strip()
+                              for pair in headerpairs
+                              if len(pair) == 2}
+                metadata = self._parse_metadata(headerdict)
+                content = textile(parts[1])
+            else:
+                metadata = {}
+                content = textile(text)
+
+        return content, metadata
+
+
+def add_reader(readers):
+    readers.reader_classes['textile'] = TextileReader
+
+
+def register():
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/thumbnailer/Readme.md b/pelican-plugins/thumbnailer/Readme.md
new file mode 100644
index 0000000..c4297ed
--- /dev/null
+++ b/pelican-plugins/thumbnailer/Readme.md
@@ -0,0 +1,37 @@
+Thumbnail Creation of images
+============================
+
+**NOTE:** [This plugin has been moved to its own repository](https://github.com/pelican-plugins/thumbnailer). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.
+
+-------------------------------------------------------------------------------
+
+This plugin creates thumbnails for all of the images found under a specific directory, in various thumbnail sizes.
+It requires `PIL` to function properly since `PIL` is used to resize the images, and the thumbnail will only be re-built
+if it doesn't already exist (to save processing time).
+
+Installation
+-------------
+
+Set up like any other plugin, making sure to set `PLUGIN_PATH` and add `thumbnailer` to the `PLUGINS` list.
+
+[PIL](http://www.pythonware.com/products/pil/) or [Pillow](http://pillow.readthedocs.org/en/latest/installation.html#)
+is required. If you choose Pillow, you need to install some additional
+[external libraries](http://www.pythonware.com/products/pil/) to add support for image types like `jpg`.
+
+Configuration
+-------------
+
+* `IMAGE_PATH` is the path to the image directory. It should reside inside your content directory, and defaults to "pictures".
+* `THUMBNAIL_DIR` is the path to the output sub-directory where the thumbnails are generated.
+* `THUMBNAIL_SIZES` is a dictionary mapping size name to size specifications.
+  The generated filename will be `originalname_thumbnailname.ext` unless `THUMBNAIL_KEEP_NAME` is set.
+* `THUMBNAIL_KEEP_NAME` is a Boolean that, if set, puts the file with the original name in a thumbnailname folder, named like the key in `THUMBNAIL_SIZES`.
+* `THUMBNAIL_KEEP_TREE` is a Boolean that, if set, saves the image directory tree.
+* `THUMBNAIL_INCLUDE_REGEX` is an optional string that is used as regular expression to restrict thumbnailing to matching files. By default all files not starting with a dot are respected.
+
+Sizes can be specified using any of the following formats:
+
+* wxh will resize to exactly wxh cropping as necessary to get that size
+* wx? will resize so that the width is the specified size, and the height will scale to retain aspect ratio
+* ?xh same as wx? but will height being a set size
+* s is a shorthand for wxh where w=h
diff --git a/pelican-plugins/thumbnailer/__init__.py b/pelican-plugins/thumbnailer/__init__.py
new file mode 100644
index 0000000..20797b1
--- /dev/null
+++ b/pelican-plugins/thumbnailer/__init__.py
@@ -0,0 +1 @@
+from .thumbnailer import *
\ No newline at end of file
diff --git a/pelican-plugins/thumbnailer/test_data/expected_exact.jpg b/pelican-plugins/thumbnailer/test_data/expected_exact.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..58197925c41b08a12247d05bd2b86904ea0fb2b1
GIT binary patch
literal 3670
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
LR(Xxh_M86z%C@%y

literal 0
HcmV?d00001

diff --git a/pelican-plugins/thumbnailer/test_data/expected_height.jpg b/pelican-plugins/thumbnailer/test_data/expected_height.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6459410b349d9d9a44215f26d8794fb0213b38bf
GIT binary patch
literal 9783
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
b4H(4%d9+hHW@be74}iwTl~q7RPbU5cKR+(Q

literal 0
HcmV?d00001

diff --git a/pelican-plugins/thumbnailer/test_data/expected_square.jpg b/pelican-plugins/thumbnailer/test_data/expected_square.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..de99e5bed56612c19f34802f7c50a03a98260afe
GIT binary patch
literal 2122
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
XIQtKkXW&a9eU4H2NPTK{{hH)Y(Co8b

literal 0
HcmV?d00001

diff --git a/pelican-plugins/thumbnailer/test_data/expected_width.jpg b/pelican-plugins/thumbnailer/test_data/expected_width.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9c2efc6d486b2af07c33ec3699c7d007b3d6f075
GIT binary patch
literal 5298
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
b`|T1l4$_+3<K#y#*cSp6P#kQoo=p7*19-#u

literal 0
HcmV?d00001

diff --git a/pelican-plugins/thumbnailer/test_data/sample_image.jpg b/pelican-plugins/thumbnailer/test_data/sample_image.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cc83880237a931fab0f16ca56250769e87fb3f04
GIT binary patch
literal 338291
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%0DTaT8lvd%cHy|OniSh;Q307NCwomW`$cj9d;
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
W-+<;x65r-POH&zdj;LiPrv4A@)3U7q

literal 0
HcmV?d00001

diff --git a/pelican-plugins/thumbnailer/test_data/subdir/sample_image.jpg b/pelican-plugins/thumbnailer/test_data/subdir/sample_image.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cc83880237a931fab0f16ca56250769e87fb3f04
GIT binary patch
literal 338291
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%0DTaT8lvd%cHy|OniSh;Q307NCwomW`$cj9d;
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
W-+<;x65r-POH&zdj;LiPrv4A@)3U7q

literal 0
HcmV?d00001

diff --git a/pelican-plugins/thumbnailer/test_thumbnails.py b/pelican-plugins/thumbnailer/test_thumbnails.py
new file mode 100644
index 0000000..090036e
--- /dev/null
+++ b/pelican-plugins/thumbnailer/test_thumbnails.py
@@ -0,0 +1,61 @@
+from thumbnailer import Resizer
+from unittest import TestCase, main
+import os
+from PIL import Image
+
+class ThumbnailerTests(TestCase):
+
+    def path(self, filename):
+        return os.path.join(self.img_path, filename)
+
+    def setUp(self):
+        self.img_path = os.path.join(os.path.dirname(__file__), "test_data")
+        self.img = Image.open(self.path("sample_image.jpg"))
+
+    def testSquare(self):
+        r = Resizer('square', '100', self.img_path)
+        output = r.resize(self.img)
+        self.assertEqual((100, 100), output.size)
+
+    def testExact(self):
+        r = Resizer('exact', '250x100', self.img_path)
+        output = r.resize(self.img)
+        self.assertEqual((250, 100), output.size)
+
+    def testWidth(self):
+        r = Resizer('aspect', '250x?', self.img_path)
+        output = r.resize(self.img)
+        self.assertEqual((250, 166), output.size)
+
+    def testHeight(self):
+        r = Resizer('aspect', '?x250', self.img_path)
+        output = r.resize(self.img)
+        self.assertEqual((376, 250), output.size)
+
+class ThumbnailerFilenameTest(TestCase):
+
+    def path(self, *parts):
+        return os.path.join(self.img_path, *parts)
+
+    def setUp(self):
+        self.img_path = os.path.join(os.path.dirname(__file__), "test_data")
+
+    def testRoot(self):
+        """Test a file that is in the root of img_path."""
+        r = Resizer('square', '100', self.img_path)
+        new_name = r.get_thumbnail_name(self.path('sample_image.jpg'))
+        self.assertEqual('sample_image_square.jpg', new_name)
+
+    def testRootWithSlash(self):
+        r = Resizer('square', '100', self.img_path + '/')
+        new_name = r.get_thumbnail_name(self.path('sample_image.jpg'))
+        self.assertEqual('sample_image_square.jpg', new_name)
+
+    def testSubdir(self):
+        """Test a file that is in a sub-directory of img_path."""
+        r = Resizer('square', '100', self.img_path)
+        new_name = r.get_thumbnail_name(self.path('subdir', 'sample_image.jpg'))
+        self.assertEqual('subdir/sample_image_square.jpg', new_name)
+
+if __name__=="__main__":
+    main()
diff --git a/pelican-plugins/thumbnailer/thumbnailer.py b/pelican-plugins/thumbnailer/thumbnailer.py
new file mode 100644
index 0000000..5925c54
--- /dev/null
+++ b/pelican-plugins/thumbnailer/thumbnailer.py
@@ -0,0 +1,210 @@
+import os
+import os.path as path
+import re
+from pelican import signals
+
+import logging
+logger = logging.getLogger(__name__)
+
+try:
+    from PIL import Image, ImageOps
+    enabled = True
+except ImportError:
+    logger.warning("Unable to load PIL, disabling thumbnailer")
+    enabled = False
+
+DEFAULT_IMAGE_DIR = "pictures"
+DEFAULT_THUMBNAIL_DIR = "thumbnails"
+DEFAULT_THUMBNAIL_SIZES = {
+    'thumbnail_square': '150',
+    'thumbnail_wide': '150x?',
+    'thumbnail_tall': '?x150',
+}
+DEFAULT_TEMPLATE = """<a href="{url}" rel="shadowbox" title="{filename}"><img src="{thumbnail}" alt="{filename}"></a>"""
+DEFAULT_GALLERY_THUMB = "thumbnail_square"
+
+class Resizer(object):
+    """ Resizes based on a text specification, see readme """
+
+    REGEX = re.compile(r'(\d+|\?)x(\d+|\?)')
+
+    def __init__(self, name, spec, root):
+        self._name = name
+        self._spec = spec
+        # The location of input images from _image_path.
+        self._root = root
+
+    def _null_resize(self, w, h, image):
+        return image
+
+    def _exact_resize(self, w, h, image):
+        retval = ImageOps.fit(image, (w,h), Image.BICUBIC)
+        return retval
+
+    def _aspect_resize(self, w, h, image):
+        retval = image.copy()
+        retval.thumbnail((w, h), Image.ANTIALIAS)
+
+        return retval
+
+    def resize(self, image):
+        resizer = self._null_resize
+
+        # Square resize and crop
+        if 'x' not in self._spec:
+            resizer = self._exact_resize
+            targetw = int(self._spec)
+            targeth = targetw
+        else:
+            matches = self.REGEX.search(self._spec)
+            tmpw = matches.group(1)
+            tmph = matches.group(2)
+
+            # Full Size
+            if tmpw == '?' and tmph == '?':
+                targetw = image.size[0]
+                targeth = image.size[1]
+                resizer = self._null_resize
+
+            # Set Height Size
+            if tmpw == '?':
+                targetw = image.size[0]
+                targeth = int(tmph)
+                resizer = self._aspect_resize
+
+            # Set Width Size
+            elif tmph == '?':
+                targetw = int(tmpw)
+                targeth = image.size[1]
+                resizer = self._aspect_resize
+
+            # Scale and Crop
+            else:
+                targetw = int(tmpw)
+                targeth = int(tmph)
+                resizer = self._exact_resize
+
+        logger.debug("Using resizer {0}".format(resizer.__name__))
+        return resizer(targetw, targeth, image)
+
+    def get_thumbnail_name(self, in_path):
+        # Find the partial path + filename beyond the input image directory.
+        prefix = path.commonprefix([in_path, self._root])
+        new_filename = in_path[len(prefix):]
+        if new_filename.startswith('/'):
+            new_filename = new_filename[1:]
+
+        # Generate the new filename.
+        (basename, ext) = path.splitext(new_filename)
+        return "{0}_{1}{2}".format(basename, self._name, ext)
+
+    def resize_file_to(self, in_path, out_path, keep_filename=False):
+        """ Given a filename, resize and save the image per the specification into out_path
+
+        :param in_path: path to image file to save.  Must be supported by PIL
+        :param out_path: path to the directory root for the outputted thumbnails to be stored
+        :return: None
+        """
+        if keep_filename:
+            filename = path.join(out_path, path.basename(in_path))
+        else:
+            filename = path.join(out_path, self.get_thumbnail_name(in_path))
+        out_path = path.dirname(filename)
+        if not path.exists(out_path):
+            os.makedirs(out_path)
+        if not path.exists(filename):
+            try:
+                image = Image.open(in_path)
+                thumbnail = self.resize(image)
+                thumbnail.save(filename)
+                logger.info("Generated Thumbnail {0}".format(path.basename(filename)))
+            except IOError:
+                logger.info("Generating Thumbnail for {0} skipped".format(path.basename(filename)))
+
+
+def resize_thumbnails(pelican):
+    """ Resize a directory tree full of images into thumbnails
+
+    :param pelican: The pelican instance
+    :return: None
+    """
+    global enabled
+    if not enabled:
+        return
+
+    in_path = _image_path(pelican)
+
+    include_regex = pelican.settings.get('THUMBNAIL_INCLUDE_REGEX')
+    if include_regex:
+        pattern = re.compile(include_regex)
+        is_included = lambda name: pattern.match(name)
+    else:
+        is_included = lambda name: not name.startswith('.')
+
+    sizes = pelican.settings.get('THUMBNAIL_SIZES', DEFAULT_THUMBNAIL_SIZES)
+    resizers = dict((k, Resizer(k, v, in_path)) for k,v in sizes.items())
+    logger.debug("Thumbnailer Started")
+    for dirpath, _, filenames in os.walk(in_path):
+        for filename in filenames:
+            if is_included(filename):
+                for name, resizer in resizers.items():
+                    in_filename = path.join(dirpath, filename)
+                    out_path = get_out_path(pelican, in_path, in_filename, name)
+                    resizer.resize_file_to(
+                        in_filename,
+                        out_path, pelican.settings.get('THUMBNAIL_KEEP_NAME'))
+
+
+def get_out_path(pelican, in_path, in_filename, name):
+    base_out_path = path.join(pelican.settings['OUTPUT_PATH'],
+                         pelican.settings.get('THUMBNAIL_DIR', DEFAULT_THUMBNAIL_DIR))
+    logger.debug("Processing thumbnail {0}=>{1}".format(in_filename, name))
+    if pelican.settings.get('THUMBNAIL_KEEP_NAME', False):
+        if pelican.settings.get('THUMBNAIL_KEEP_TREE', False):
+            return path.join(base_out_path, name, path.dirname(path.relpath(in_filename, in_path)))
+        else:
+            return path.join(base_out_path, name)
+    else:
+        return base_out_path
+
+
+def _image_path(pelican):
+    return path.join(pelican.settings['PATH'],
+        pelican.settings.get("IMAGE_PATH", DEFAULT_IMAGE_DIR)).rstrip('/')
+
+
+def expand_gallery(generator, metadata):
+    """ Expand a gallery tag to include all of the files in a specific directory under IMAGE_PATH
+
+    :param pelican: The pelican instance
+    :return: None
+    """
+    if "gallery" not in metadata or metadata['gallery'] is None:
+        return  # If no gallery specified, we do nothing
+
+    lines = [ ]
+    base_path = _image_path(generator)
+    in_path = path.join(base_path, metadata['gallery'])
+    template = generator.settings.get('GALLERY_TEMPLATE', DEFAULT_TEMPLATE)
+    thumbnail_name = generator.settings.get("GALLERY_THUMBNAIL", DEFAULT_GALLERY_THUMB)
+    thumbnail_prefix = generator.settings.get("")
+    resizer = Resizer(thumbnail_name, '?x?', base_path)
+    for dirpath, _, filenames in os.walk(in_path):
+        for filename in filenames:
+            if not filename.startswith('.'):
+                url = path.join(dirpath, filename).replace(base_path, "")[1:]
+                url = path.join('/static', generator.settings.get('IMAGE_PATH', DEFAULT_IMAGE_DIR), url).replace('\\', '/')
+                logger.debug("GALLERY: {0}".format(url))
+                thumbnail = resizer.get_thumbnail_name(filename)
+                thumbnail = path.join('/', generator.settings.get('THUMBNAIL_DIR', DEFAULT_THUMBNAIL_DIR), thumbnail).replace('\\', '/')
+                lines.append(template.format(
+                    filename=filename,
+                    url=url,
+                    thumbnail=thumbnail,
+                ))
+    metadata['gallery_content'] = "\n".join(lines)
+
+
+def register():
+    signals.finalized.connect(resize_thumbnails)
+    signals.article_generator_context.connect(expand_gallery)
diff --git a/pelican-plugins/tipue_search/README.md b/pelican-plugins/tipue_search/README.md
new file mode 100644
index 0000000..61291ed
--- /dev/null
+++ b/pelican-plugins/tipue_search/README.md
@@ -0,0 +1,99 @@
+Tipue Search
+============
+
+> :warning: **Instead of this plugin, please use the [Pelican Search](https://github.com/pelican-plugins/search) plugin.**
+
+> :warning: **This plugin, and the jQuery code upon which it depends, _is abandoned and no longer maintained_.**
+
+
+Purpose
+-------
+
+Serialize generated HTML content to a JS variable for use by the Tipue static search jQuery plugin.
+
+
+Installation
+------------
+
+This plugin can be installed via:
+
+    python -m pip install -e "git+https://github.com/getpelican/pelican-plugins/#egg=pelican-tipue-search&subdirectory=tipue_search"
+
+
+Why Do You Need It?
+-------------------
+
+Static sites do not offer search feature out of the box. [Tipue Search](https://web.archive.org/web/20200703134724/https://tipue.com/search/)
+is a jQuery plugin that search the static site without using any third party service, like DuckDuckGo or Google.
+
+Tipue search requires the textual content of site in a JS variable.
+
+
+How Tipue Search Works
+----------------------
+
+Tipue Search serializes the generated HTML into JSON and saves it into a JS variable. Format of JSON is as follows
+
+```javascript
+var tipuesearch = {
+    "pages": [
+        {
+            "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero.",
+            "tags": "Example Category",
+            "url" : "http://oncrashreboot.com/plugin-example.html",
+            "title": "Everything you want to know about Lorem Ipsum"
+        },
+        {
+            "text": "Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh.",
+            "tags": "Example Category",
+            "url" : "http://oncrashreboot.com/plugin-example-2.html",
+            "title": "Review of the book Lorem Ipsum"
+        }
+    ]
+};
+```
+
+JS variable is written to file `tipuesearch_content.js` which is created in the root of `output` directory.
+
+
+How to Use
+----------
+
+Your theme needs to have Tipue Search properly configured in it. [Official documentation](https://web.archive.org/web/20200703134724/https://tipue.com/search/help/) has the required details.
+
+In addition to the instructions from Tipue, the following has to be added in `pelicanconf.py`.
+
+```python
+DIRECT_TEMPLATES = ['index', 'tags', 'categories', 'authors', 'archives', 'search']
+```
+
+Furthermore, the generated JavaScript variable has to be sourced in the relevant HTML pages.
+
+```html
+<script src="{{ SITEURL }}tipuesearch_content.js"></script>
+```
+
+Pelican [Plumage theme](https://github.com/kdeldycke/plumage) has Tipue Search configured. Check out its code to understand the configuration.
+
+
+Backward Compatibility
+----------------------
+
+This plugin requires Tipue Search Version 7.0 or higher.
+
+Tipue used to expect content in a JSON file. Around Version 7.0, Tipue maintainers made a switch to JavaScript variable. tipue_search plugin was updated to reflect this change in commit `4a5f171fc`. Latest version of tipue_search plugin will not work with older versions of Tipue Search.
+
+If you are using older Tipue Search, prior to 7.0 release, then you will find old version of tipue_search plugin in commit `2dcdca8c8`.
+
+
+Source Archive
+--------------
+
+The Tipue Search project itself seems to have been long abandoned. There is no
+longer any official canonical reference of source code or documentation. There
+only some artifacts left that were archived by the community:
+
+* [Archived Tipue Search homepage](https://web.archive.org/web/20200703134724/https://tipue.com/search/)
+* [Archived Tipue plugin help page](https://web.archive.org/web/20200703134724/https://tipue.com/search/help/)
+* [Archived Tipue Search code v7.1](https://web.archive.org/web/20200703134724/https://www.tipue.com/search/tipuesearch.zip)
+* [GitHub repository copy](https://notabug.org/jorgesumle/Tipue-Search)
diff --git a/pelican-plugins/tipue_search/__init__.py b/pelican-plugins/tipue_search/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/tipue_search/pelican/__init__.py b/pelican-plugins/tipue_search/pelican/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/tipue_search/pelican/plugins/__init__.py b/pelican-plugins/tipue_search/pelican/plugins/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/pelican-plugins/tipue_search/pelican/plugins/tipue_search/__init__.py b/pelican-plugins/tipue_search/pelican/plugins/tipue_search/__init__.py
new file mode 100644
index 0000000..ebd6c06
--- /dev/null
+++ b/pelican-plugins/tipue_search/pelican/plugins/tipue_search/__init__.py
@@ -0,0 +1 @@
+from .tipue_search import *
diff --git a/pelican-plugins/tipue_search/pelican/plugins/tipue_search/tipue_search.py b/pelican-plugins/tipue_search/pelican/plugins/tipue_search/tipue_search.py
new file mode 100644
index 0000000..11e3261
--- /dev/null
+++ b/pelican-plugins/tipue_search/pelican/plugins/tipue_search/tipue_search.py
@@ -0,0 +1,111 @@
+# -*- coding: utf-8 -*-
+"""
+Tipue Search
+============
+
+A Pelican plugin to serialize generated HTML to JSON
+that can be used by jQuery plugin - Tipue Search.
+
+Copyright (c) Talha Mansoor
+"""
+
+from __future__ import unicode_literals
+
+import os.path
+import json
+from bs4 import BeautifulSoup
+from codecs import open
+try:
+    from urlparse import urljoin
+except ImportError:
+    from urllib.parse import urljoin
+
+from pelican import signals
+
+
+class Tipue_Search_JSON_Generator(object):
+
+    def __init__(self, context, settings, path, theme, output_path, *null):
+
+        self.output_path = output_path
+        self.context = context
+        self.siteurl = settings.get('SITEURL')
+        self.relative_urls = settings.get('RELATIVE_URLS')
+        self.tpages = settings.get('TEMPLATE_PAGES')
+        self.output_path = output_path
+        self.json_nodes = []
+
+
+    def create_json_node(self, page):
+
+        if getattr(page, 'status', 'published') != 'published':
+            return
+
+        soup_title = BeautifulSoup(page.title.replace('&nbsp;', ' '), 'html.parser')
+        page_title = soup_title.get_text(' ', strip=True).replace('“', '"').replace('”', '"').replace('’', "'").replace('^', '&#94;')
+
+        soup_text = BeautifulSoup(page.content, 'html.parser')
+        page_text = soup_text.get_text(' ', strip=True).replace('“', '"').replace('”', '"').replace('’', "'").replace('¶', ' ').replace('^', '&#94;')
+        page_text = ' '.join(page_text.split())
+
+        page_category = page.category.name if getattr(page, 'category', 'None') != 'None' else ''
+
+        page_url = '.'
+        if page.url:
+            page_url = page.url if self.relative_urls else (self.siteurl + '/' + page.url)
+
+        node = {'title': page_title,
+                'text': page_text,
+                'tags': page_category,
+                'url': page_url,
+                'loc': page_url} # changed from 'url' following http://blog.siphos.be/2015/08/updates-on-my-pelican-adventure/ (an update to Pelican made it not work, because the update (e.g., in the theme folder, static/tipuesearch/tipuesearch.js is looking for the 'loc' attribute.
+
+        self.json_nodes.append(node)
+
+
+    def create_tpage_node(self, srclink):
+
+        srcfile = open(os.path.join(self.output_path, self.tpages[srclink]), encoding='utf-8')
+        soup = BeautifulSoup(srcfile, 'html.parser')
+        page_title = soup.title.string if soup.title is not None else ''
+        page_text = soup.get_text()
+
+        # Should set default category?
+        page_category = ''
+        page_url = urljoin(self.siteurl, self.tpages[srclink])
+
+        node = {'title': page_title,
+                'text': page_text,
+                'tags': page_category,
+                'url': page_url}
+
+        self.json_nodes.append(node)
+
+
+    def generate_output(self, writer):
+        path = os.path.join(self.output_path, 'tipuesearch_content.js')
+
+        pages = self.context['pages'] + self.context['articles']
+
+        for article in self.context['articles']:
+            pages += article.translations
+
+        for srclink in self.tpages:
+            self.create_tpage_node(srclink)
+
+        for page in pages:
+            self.create_json_node(page)
+        root_node = {'pages': self.json_nodes}
+        
+        root_node_js = 'var tipuesearch = ' + json.dumps(root_node, separators=(',', ':'), ensure_ascii=False) + ';'
+
+        with open(path, 'w', encoding='utf-8') as fd:
+            fd.write(root_node_js)
+
+
+def get_generators(generators):
+    return Tipue_Search_JSON_Generator
+
+
+def register():
+    signals.get_generators.connect(get_generators)
diff --git a/pelican-plugins/tipue_search/setup.py b/pelican-plugins/tipue_search/setup.py
new file mode 100644
index 0000000..e6a85dc
--- /dev/null
+++ b/pelican-plugins/tipue_search/setup.py
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+from setuptools import setup
+
+packages = \
+['pelican', 'pelican.plugins.tipue_search']
+
+package_data = \
+{'': ['*']}
+
+install_requires = \
+['beautifulsoup4>=4.9.1,<5.0.0', 'pelican>=4.5,<5.0']
+
+extras_require = \
+{'markdown': ['markdown>=3.2.2,<4.0.0']}
+
+setup_kwargs = {
+    'name': 'pelican-tipue-search',
+    'version': '0.0.0',
+    'description': 'Serialize generated HTML content to a JS variable for use by the Tipue static search jQuery plugin',
+    'long_description': 'Tipue Search\n============\n\nA Pelican plugin to serialize generated HTML to a JS variable that can be used by jQuery plugin - Tipue Search.\n\nCopyright (c) Talha Mansoor\n\nAuthor          | Talha Mansoor\n----------------|-----\nAuthor Email    | talha131@gmail.com \nAuthor Homepage | http://onCrashReboot.com \nGithub Account  | https://github.com/talha131 \n\nWhy do you need it?\n===================\n\nStatic sites do not offer search feature out of the box. [Tipue Search](http://www.tipue.com/search/)\nis a jQuery plugin that search the static site without using any third party service, like DuckDuckGo or Google.\n\nTipue search requires the textual content of site in a JS variable.\n\nRequirements\n============\n\nTipue Search requires BeautifulSoup.\n\n```bash\npip install beautifulsoup4\n```\n\nHow Tipue Search works\n=========================\n\nTipue Search serializes the generated HTML into JSON and saves it into a JS variable. Format of JSON is as follows\n\n```javascript\nvar tipuesearch = {\n    "pages": [\n        { \n            "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero.",\n            "tags": "Example Category",\n            "url" : "http://oncrashreboot.com/plugin-example.html",\n            "title": "Everything you want to know about Lorem Ipsum"\n        },\n        { \n            "text": "Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh.",\n            "tags": "Example Category",\n            "url" : "http://oncrashreboot.com/plugin-example-2.html",\n            "title": "Review of the book Lorem Ipsum"\n        }\n    ]\n};\n```\n\nJS variable is written to file `tipuesearch_content.js` which is created in the root of `output` directory.\n\nHow to use\n==========\n\nYour theme needs to have Tipue Search properly configured in it. [Official documentation](http://www.tipue.com/search/help/) has the required details.\n\nIn addition to the instructions from Tipue, the following has to be added in `pelicanconf.py`.\n\n```python\nPLUGIN_PATH = \'plugins\'\nPLUGINS = [\'tipue_search\']\nDIRECT_TEMPLATES = [\'index\', \'tags\', \'categories\', \'authors\', \'archives\', \'search\']\n```\n\nFurthermore, the generated JavaScript variable has to be sourced in the relevant html pages.\n\n```html\n<script src="{{ SITEURL }}tipuesearch_content.js"></script>\n```\n\nPelican [Elegant Theme](https://github.com/talha131/pelican-elegant) and [Plumage theme](https://github.com/kdeldycke/plumage) have Tipue Search configured. You can view their code to understand the configuration.\n\nBackward Compatibility\n======================\n\nThis plugin requires Tipue Search Version 7.0 or higher.\n\nTipue used to expect content in a json file. Around Version 7.0, Tipue maintainers made a switch to JavaScript variable. tipue_search plugin was updated to reflect this change in commit `4a5f171fc`. Latest version of tipue_search plugin will not work with older versions of Tipue Search.\n\nIf you are using older Tipue Search, prior to 7.0 release, then you will find old version of tipue_search plugin in commit `2dcdca8c8`. \n',
+    'author': 'Talha Mansoor',
+    'author_email': 'talha131@gmail.com',
+    'url': 'https://github.com/getpelican/pelican-plugins/tree/master/tipue_search',
+    'packages': packages,
+    'package_data': package_data,
+    'install_requires': install_requires,
+    'extras_require': extras_require,
+    'python_requires': '>=3.6,<4.0',
+}
+
+
+setup(**setup_kwargs)
diff --git a/pelican-plugins/touch/README.rst b/pelican-plugins/touch/README.rst
new file mode 100644
index 0000000..2f23219
--- /dev/null
+++ b/pelican-plugins/touch/README.rst
@@ -0,0 +1,12 @@
+Touch Plugin
+############
+
+**NOTE:** `This plugin has been moved to its own repository <https://github.com/pelican-plugins/touch>`_.
+Please file any issues/PRs there. Once all plugins have been migrated to the
+`new Pelican Plugins organization <https://github.com/pelican-plugins>`_,
+this monolithic repository will be archived.
+
+A simple plugin doing a touch on your generated files using the date metadata
+from the content.
+
+This helps, among other things, to have the web server gently manage the cache.
diff --git a/pelican-plugins/touch/__init__.py b/pelican-plugins/touch/__init__.py
new file mode 100644
index 0000000..49b1fd2
--- /dev/null
+++ b/pelican-plugins/touch/__init__.py
@@ -0,0 +1,36 @@
+from pelican import signals
+
+import logging
+import os
+import time
+
+
+logger = logging.getLogger(__name__)
+
+
+def set_file_utime(path, datetime):
+    mtime = time.mktime(datetime.timetuple())
+    logger.info('touching %s', path)
+    os.utime(path, (mtime, mtime))
+
+
+def touch_file(path, context):
+    content = context.get('article', context.get('page'))
+    page = context.get('articles_page')
+    dates = context.get('dates')
+
+    if content and hasattr(content, 'date'):
+        set_file_utime(path, content.date)
+    elif page:
+        set_file_utime(path, max(x.date for x in page.object_list))
+    elif dates:
+        set_file_utime(path, max(x.date for x in dates))
+
+
+def touch_feed(path, context, feed):
+    set_file_utime(path, max(x['pubdate'] for x in feed.items))
+
+
+def register():
+    signals.content_written.connect(touch_file)
+    signals.feed_written.connect(touch_feed)
diff --git a/pelican-plugins/twitter_bootstrap_rst_directives/Demo.rst b/pelican-plugins/twitter_bootstrap_rst_directives/Demo.rst
new file mode 100644
index 0000000..c38ae10
--- /dev/null
+++ b/pelican-plugins/twitter_bootstrap_rst_directives/Demo.rst
@@ -0,0 +1,118 @@
+This will be turned into :abbr:`HTML (HyperText Markup Language)`.
+
+Love this music :glyph:`music` 
+
+.. role:: story_time_glyph(glyph)
+    :target: http://www.youtube.com/watch?v=5g8ykQLYnX0
+    :class: small text-info  
+
+Love this music :story_time_glyph:`music` 
+
+This is an example of code: :code:`<example>`.
+
+This is an example of kbd: :kbd:`<example>`.
+
+
+.. label-default::
+    
+    This is a default label content
+
+.. label-primary::
+    
+    This is a primary label content
+
+.. label-success::
+    
+    This is a success label content
+
+.. label-info::
+    
+    This is a info label content
+
+.. label-warning::
+    
+    This is a warning label content
+
+.. label-danger::
+    
+    This is a danger label content
+
+
+.. panel-default::
+    :title: panel default title
+    
+    This is a default panel content
+
+.. panel-primary::
+    :title: panel primary title
+    
+    This is a primary panel content
+
+.. panel-success::
+    :title: panel success title
+    
+    This is a success panel content
+
+.. panel-info::
+    :title: panel info title
+    
+    This is a info panel content
+
+.. panel-warning::
+    :title: panel warning title
+    
+    This is a warning panel content
+
+.. panel-danger::
+    :title: panel danger title
+    
+    This is a danger panel content
+
+
+.. alert-success::
+    
+    This is a success alert content
+
+.. alert-info::
+    
+    This is a info alert content
+
+.. alert-warning::
+    
+    This is a warning alert content
+
+.. alert-danger::
+    
+    This is a danger alert content
+
+        
+.. media:: http://stuffkit.com/wp-content/uploads/2012/11/Worlds-Most-Beautiful-Lady-Camilla-Belle-HD-Photos-4.jpg
+                :height: 750
+                :width: 1000
+                :scale: 20
+                :target: http://www.google.com
+                :alt: Camilla Belle
+                :position: left
+
+                .. class:: h3
+
+                    left position
+
+                This image is not mine. Credit goes to http://stuffkit.com
+                
+
+
+.. media:: http://stuffkit.com/wp-content/uploads/2012/11/Worlds-Most-Beautiful-Lady-Camilla-Belle-HD-Photos-4.jpg
+                :height: 750
+                :width: 1000
+                :scale: 20
+                :target: http://www.google.com
+                :alt: Camilla Belle
+                :position: right
+
+                .. class:: h3
+
+                    right position
+
+
+                This image is not mine. Credit goes to http://stuffkit.com
\ No newline at end of file
diff --git a/pelican-plugins/twitter_bootstrap_rst_directives/Readme.rst b/pelican-plugins/twitter_bootstrap_rst_directives/Readme.rst
new file mode 100644
index 0000000..f84417c
--- /dev/null
+++ b/pelican-plugins/twitter_bootstrap_rst_directives/Readme.rst
@@ -0,0 +1,46 @@
+Twitter Bootstrap Directive for restructured text
+-------------------------------------------------
+
+This plugin defines some rst directive that enable a clean usage of the twitter bootstrap CSS and Javascript components.
+
+Directives
+----------
+
+Implemented directives:
+
+    label,
+    alert,
+    panel,
+    media
+
+Implemented roles:
+
+    glyph,
+    code,
+    kbd
+
+Usage
+-----
+
+For more informations about the usage of each directive, read the corresponding class description.
+Or checkout this demo page.
+
+Dependencies
+------------
+
+In order to use this plugin, you need to use a template that supports bootstrap 3.1.1 with the glyph font setup
+correctly. Usually you should have this structure::
+
+    static
+    ├──  css
+    |     └──  bootstrap.min.css
+    ├──  font
+    |     └──  glyphicons-halflings-regular.ttf
+    └──  js
+          └──     
+
+Warning
+-------
+
+In order to support some unique features and avoid conflicts with bootstrap, this plugin will use a custom html writer which
+is modifying the traditional docutils output.
\ No newline at end of file
diff --git a/pelican-plugins/twitter_bootstrap_rst_directives/__init__.py b/pelican-plugins/twitter_bootstrap_rst_directives/__init__.py
new file mode 100644
index 0000000..7dfdc27
--- /dev/null
+++ b/pelican-plugins/twitter_bootstrap_rst_directives/__init__.py
@@ -0,0 +1,4 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from .bootstrap_rst_directives import *
diff --git a/pelican-plugins/twitter_bootstrap_rst_directives/bootstrap_rst_directives.py b/pelican-plugins/twitter_bootstrap_rst_directives/bootstrap_rst_directives.py
new file mode 100644
index 0000000..830b841
--- /dev/null
+++ b/pelican-plugins/twitter_bootstrap_rst_directives/bootstrap_rst_directives.py
@@ -0,0 +1,543 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+"""
+Twitter Bootstrap RST directives Plugin For Pelican
+===================================================
+
+This plugin defines rst directives for different CSS and Javascript components from
+the twitter bootstrap framework.
+
+"""
+
+from uuid import uuid1
+
+from cgi import escape
+from docutils import nodes, utils
+import docutils
+from docutils.parsers import rst
+from docutils.parsers.rst import directives, roles, Directive
+from pelican import signals
+from pelican.readers import RstReader, PelicanHTMLTranslator
+
+
+
+class CleanHTMLTranslator(PelicanHTMLTranslator):
+
+    """
+        A custom HTML translator based on the Pelican HTML translator.
+        Used to clean up some components html classes that could conflict 
+        with the bootstrap CSS classes.
+        Also defines new tags that are not handleed by the current implementation of 
+        docutils.
+
+        The most obvious example is the Container component
+    """
+
+    def visit_literal(self, node):
+        classes = node.get('classes', node.get('class', []))
+        if 'code' in classes:
+            self.body.append(self.starttag(node, 'code'))
+        elif 'kbd' in classes:
+            self.body.append(self.starttag(node, 'kbd'))
+        else:
+            self.body.append(self.starttag(node, 'pre'))
+
+    def depart_literal(self, node):
+        classes = node.get('classes', node.get('class', []))
+        if 'code' in classes:
+            self.body.append('</code>\n')
+        elif 'kbd' in classes:
+            self.body.append('</kbd>\n')
+        else:
+            self.body.append('</pre>\n')
+
+    def visit_container(self, node):
+        self.body.append(self.starttag(node, 'div'))
+
+
+class CleanRSTReader(RstReader):
+
+    """
+        A custom RST reader that behaves exactly like its parent class RstReader with
+        the difference that it uses the CleanHTMLTranslator
+    """
+
+    def _get_publisher(self, source_path):
+        extra_params = {'initial_header_level': '2',
+                        'syntax_highlight': 'short',
+                        'input_encoding': 'utf-8'}
+        user_params = self.settings.get('DOCUTILS_SETTINGS')
+        if user_params:
+            extra_params.update(user_params)
+
+        pub = docutils.core.Publisher(
+            destination_class=docutils.io.StringOutput)
+        pub.set_components('standalone', 'restructuredtext', 'html')
+        pub.writer.translator_class = CleanHTMLTranslator
+        pub.process_programmatic_settings(None, extra_params, None)
+        pub.set_source(source_path=source_path)
+        pub.publish()
+        return pub
+
+
+def keyboard_role(name, rawtext, text, lineno, inliner,
+                  options={}, content=[]):
+    """
+        This function creates an inline console input block as defined in the twitter bootstrap documentation
+        overrides the default behaviour of the kbd role
+
+        *usage:*
+            :kbd:`<your code>`
+
+        *Example:*
+
+            :kbd:`<section>`
+
+        This code is not highlighted
+    """
+    new_element = nodes.literal(rawtext, text)
+    new_element.set_class('kbd')
+
+    return [new_element], []
+
+
+def code_role(name, rawtext, text, lineno, inliner,
+              options={}, content=[]):
+    """
+        This function creates an inline code block as defined in the twitter bootstrap documentation
+        overrides the default behaviour of the code role
+
+        *usage:*
+            :code:`<your code>`
+
+        *Example:*
+
+            :code:`<section>`
+
+        This code is not highlighted
+    """
+    new_element = nodes.literal(rawtext, text)
+    new_element.set_class('code')
+
+    return [new_element], []
+
+
+def glyph_role(name, rawtext, text, lineno, inliner,
+               options={}, content=[]):
+    """
+        This function defines a glyph inline role that show a glyph icon from the 
+        twitter bootstrap framework
+
+        *Usage:*
+
+            :glyph:`<glyph_name>`
+
+        *Example:*
+
+            Love this music :glyph:`music` :)
+
+        Can be subclassed to include a target
+
+        *Example:*
+
+            .. role:: story_time_glyph(glyph)
+                :target: http://www.youtube.com/watch?v=5g8ykQLYnX0
+                :class: small text-info
+
+            Love this music :story_time_glyph:`music` :)
+
+    """
+
+    target = options.get('target', None)
+    glyph_name = 'glyphicon-{}'.format(text)
+
+    if target:
+        target = utils.unescape(target)
+        new_element = nodes.reference(rawtext, ' ', refuri=target)
+    else:
+        new_element = nodes.container()
+    classes = options.setdefault('class', [])
+    classes += ['glyphicon', glyph_name]
+    for custom_class in classes:
+        new_element.set_class(custom_class)
+    return [new_element], []
+
+glyph_role.options = {
+    'target': rst.directives.unchanged,
+}
+glyph_role.content = False
+
+
+class Label(rst.Directive):
+
+    '''
+        generic Label directive class definition.
+        This class define a directive that shows 
+        bootstrap Labels around its content
+
+        *usage:*
+
+            .. label-<label-type>::
+
+                <Label content>
+
+        *example:*
+
+            .. label-default::
+
+                This is a default label content
+
+    '''
+
+    has_content = True
+    custom_class = ''
+
+    def run(self):
+        # First argument is the name of the glyph
+        label_name = 'label-{}'.format(self.custom_class)
+        # get the label content
+        text = '\n'.join(self.content)
+        # Create a new container element (div)
+        new_element = nodes.container(text)
+        # Update its content
+        self.state.nested_parse(self.content, self.content_offset,
+                                new_element)
+        # Set its custom bootstrap classes
+        new_element['classes'] += ['label ', label_name]
+        # Return one single element
+        return [new_element]
+
+
+class DefaultLabel(Label):
+
+    custom_class = 'default'
+
+
+class PrimaryLabel(Label):
+
+    custom_class = 'primary'
+
+
+class SuccessLabel(Label):
+
+    custom_class = 'success'
+
+
+class InfoLabel(Label):
+
+    custom_class = 'info'
+
+
+class WarningLabel(Label):
+
+    custom_class = 'warning'
+
+
+class DangerLabel(Label):
+
+    custom_class = 'danger'
+
+
+class Panel(rst.Directive):
+
+    """
+        generic Panel directive class definition.
+        This class define a directive that shows 
+        bootstrap Labels around its content
+
+        *usage:*
+
+            .. panel-<panel-type>:: 
+                :title: <title>
+
+                <Panel content>
+
+        *example:*
+
+            .. panel-default:: 
+                :title: panel title
+
+                This is a default panel content
+
+    """
+
+    has_content = True
+    option_spec = {
+        'title': rst.directives.unchanged,
+    }
+    custom_class = ''
+
+    def run(self):
+        # First argument is the name of the glyph
+        panel_name = 'panel-{}'.format(self.custom_class)
+        # get the label title
+        title_text = self.options.get('title', self.custom_class.title())
+        # get the label content
+        text = '\n'.join(self.content)
+        # Create the panel element
+        panel_element = nodes.container()
+        panel_element['classes'] += ['panel', panel_name]
+        # Create the panel headings
+        heading_element = nodes.container(title_text)
+        title_nodes, messages = self.state.inline_text(title_text,
+                                                       self.lineno)
+        title = nodes.paragraph(title_text, '', *title_nodes)
+        heading_element.append(title)
+        heading_element['classes'] += ['panel-heading']
+        # Create a new container element (div)
+        body_element = nodes.container(text)
+        # Update its content
+        self.state.nested_parse(self.content, self.content_offset,
+                                body_element)
+        # Set its custom bootstrap classes
+        body_element['classes'] += ['panel-body']
+        # add the heading and body to the panel
+        panel_element.append(heading_element)
+        panel_element.append(body_element)
+        # Return the panel element
+        return [panel_element]
+
+
+class DefaultPanel(Panel):
+
+    custom_class = 'default'
+
+
+class PrimaryPanel(Panel):
+
+    custom_class = 'primary'
+
+
+class SuccessPanel(Panel):
+
+    custom_class = 'success'
+
+
+class InfoPanel(Panel):
+
+    custom_class = 'info'
+
+
+class WarningPanel(Panel):
+
+    custom_class = 'warning'
+
+
+class DangerPanel(Panel):
+
+    custom_class = 'danger'
+
+
+class Alert(rst.Directive):
+
+    """
+        generic Alert directive class definition.
+        This class define a directive that shows 
+        bootstrap Labels around its content
+
+        *usage:*
+
+            .. alert-<alert-type>::
+
+                <alert content>
+
+        *example:*
+
+            .. alert-warning::
+
+                This is a warning alert content
+
+    """
+    has_content = True
+    custom_class = ''
+
+    def run(self):
+        # First argument is the name of the glyph
+        alert_name = 'alert-{}'.format(self.custom_class)
+        # get the label content
+        text = '\n'.join(self.content)
+        # Create a new container element (div)
+        new_element = nodes.compound(text)
+        # Update its content
+        self.state.nested_parse(self.content, self.content_offset,
+                                new_element)
+        # Recurse inside its children and change the hyperlinks classes
+        for child in new_element.traverse(include_self=False):
+            if isinstance(child, nodes.reference):
+                child.set_class('alert-link')
+        # Set its custom bootstrap classes
+        new_element['classes'] += ['alert ', alert_name]
+        # Return one single element
+        return [new_element]
+
+
+class SuccessAlert(Alert):
+
+    custom_class = 'success'
+
+
+class InfoAlert(Alert):
+
+    custom_class = 'info'
+
+
+class WarningAlert(Alert):
+
+    custom_class = 'warning'
+
+
+class DangerAlert(Alert):
+
+    custom_class = 'danger'
+
+
+class Media(rst.Directive):
+
+    '''
+        generic Media directive class definition.
+        This class define a directive that shows 
+        bootstrap media image with text according
+        to the media component on bootstrap
+
+        *usage*:
+            .. media:: <image_uri>
+                :position: <position>
+                :alt: <alt>
+                :height: <height>
+                :width: <width>
+                :scale: <scale>
+                :target: <target>
+
+                <text content>
+
+        *example*:
+            .. media:: http://stuffkit.com/wp-content/uploads/2012/11/Worlds-Most-Beautiful-Lady-Camilla-Belle-HD-Photos-4.jpg
+                :height: 750
+                :width: 1000
+                :scale: 20
+                :target: www.google.com
+                :alt: Camilla Belle
+                :position: left
+
+                This image is not mine. Credit goes to http://stuffkit.com
+
+
+
+    '''
+
+    has_content = True
+    required_arguments = 1
+
+    option_spec = {
+        'position': str,
+        'alt': rst.directives.unchanged,
+        'height': rst.directives.length_or_unitless,
+        'width': rst.directives.length_or_percentage_or_unitless,
+        'scale': rst.directives.percentage,
+        'target': rst.directives.unchanged_required,
+    }
+
+    def get_image_element(self):
+        # Get the image url
+        image_url = self.arguments[0]
+        image_reference = rst.directives.uri(image_url)
+        self.options['uri'] = image_reference
+
+        reference_node = None
+        messages = []
+        if 'target' in self.options:
+            block = rst.states.escape2null(
+                self.options['target']).splitlines()
+            block = [line for line in block]
+            target_type, data = self.state.parse_target(
+                block, self.block_text, self.lineno)
+            if target_type == 'refuri':
+                container_node = nodes.reference(refuri=data)
+            elif target_type == 'refname':
+                container_node = nodes.reference(
+                    refname=fully_normalize_name(data),
+                    name=whitespace_normalize_name(data))
+                container_node.indirect_reference_name = data
+                self.state.document.note_refname(container_node)
+            else:                           # malformed target
+                messages.append(data)       # data is a system message
+            del self.options['target']
+        else:
+            container_node = nodes.container()
+
+        # get image position
+        position = self.options.get('position', 'left')
+        position_class = 'pull-{}'.format(position)
+
+        container_node.set_class(position_class)
+
+        image_node = nodes.image(self.block_text, **self.options)
+        image_node['classes'] += ['media-object']
+
+        container_node.append(image_node)
+        return container_node
+
+    def run(self):
+        # now we get the content
+        text = '\n'.join(self.content)
+
+        # get image alternative text
+        alternative_text = self.options.get('alternative-text', '')
+
+        # get container element
+        container_element = nodes.container()
+        container_element['classes'] += ['media']
+
+        # get image element
+        image_element = self.get_image_element()
+
+        # get body element
+        body_element = nodes.container(text)
+        body_element['classes'] += ['media-body']
+        self.state.nested_parse(self.content, self.content_offset,
+                                body_element)
+
+        container_element.append(image_element)
+        container_element.append(body_element)
+        return [container_element, ]
+
+
+def register_directives():
+    rst.directives.register_directive('label-default', DefaultLabel)
+    rst.directives.register_directive('label-primary', PrimaryLabel)
+    rst.directives.register_directive('label-success', SuccessLabel)
+    rst.directives.register_directive('label-info', InfoLabel)
+    rst.directives.register_directive('label-warning', WarningLabel)
+    rst.directives.register_directive('label-danger', DangerLabel)
+
+    rst.directives.register_directive('panel-default', DefaultPanel)
+    rst.directives.register_directive('panel-primary', PrimaryPanel)
+    rst.directives.register_directive('panel-success', SuccessPanel)
+    rst.directives.register_directive('panel-info', InfoPanel)
+    rst.directives.register_directive('panel-warning', WarningPanel)
+    rst.directives.register_directive('panel-danger', DangerPanel)
+
+    rst.directives.register_directive('alert-success', SuccessAlert)
+    rst.directives.register_directive('alert-info', InfoAlert)
+    rst.directives.register_directive('alert-warning', WarningAlert)
+    rst.directives.register_directive('alert-danger', DangerAlert)
+
+    rst.directives.register_directive( 'media', Media )
+
+
+def register_roles():
+    rst.roles.register_local_role('glyph', glyph_role)
+    rst.roles.register_local_role('code', code_role)
+    rst.roles.register_local_role('kbd', keyboard_role)
+
+
+def add_reader(readers):
+    readers.reader_classes['rst'] = CleanRSTReader
+
+
+def register():
+    register_directives()
+    register_roles()
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/txt2tags_reader/LICENSE b/pelican-plugins/txt2tags_reader/LICENSE
new file mode 100644
index 0000000..20efd1b
--- /dev/null
+++ b/pelican-plugins/txt2tags_reader/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/pelican-plugins/txt2tags_reader/README.md b/pelican-plugins/txt2tags_reader/README.md
new file mode 100644
index 0000000..942390d
--- /dev/null
+++ b/pelican-plugins/txt2tags_reader/README.md
@@ -0,0 +1,12 @@
+# txt2tags_reader
+A [txt2tags] reader plugin for the [Pelican static site generator](http://docs.getpelican.com/en/latest/).
+
+Requirements
+------------
+[txt2tags] in $PATH
+
+Installation
+------------
+Instructions on installing pelican plugins can be found in the [pelican plugin manual](https://github.com/getpelican/pelican-plugins/blob/master/Readme.rst).
+
+[txt2tags]:http://txt2tags.org/
diff --git a/pelican-plugins/txt2tags_reader/__init__.py b/pelican-plugins/txt2tags_reader/__init__.py
new file mode 100644
index 0000000..f44a2f0
--- /dev/null
+++ b/pelican-plugins/txt2tags_reader/__init__.py
@@ -0,0 +1 @@
+from .txt2tags_reader import *
diff --git a/pelican-plugins/txt2tags_reader/txt2tags_reader.py b/pelican-plugins/txt2tags_reader/txt2tags_reader.py
new file mode 100644
index 0000000..354f390
--- /dev/null
+++ b/pelican-plugins/txt2tags_reader/txt2tags_reader.py
@@ -0,0 +1,42 @@
+import subprocess
+from pelican import signals
+from pelican.readers import BaseReader
+from pelican.utils import pelican_open
+
+class Txt2tagsReader(BaseReader):
+    enabled = True
+    file_extensions = ['t2t', 'txt2tags']
+
+    def read(self, filename):
+        with pelican_open(filename) as fp:
+            text = list(fp.splitlines())
+
+        metadata = {}
+        for i, line in enumerate(text):
+            kv = line.split(':', 1)
+            if len(kv) == 2:
+                name, value = kv[0].lower(), kv[1].strip()
+                metadata[name] = self.process_metadata(name, value)
+            else:
+                content = "\n".join(text[i:])
+                break
+
+        t2t_cmd = [r"txt2tags", r"--encoding=utf-8", r"--target=html", r"--infile=-", r"--outfile=-", r"--no-headers"]
+
+        proc = subprocess.Popen(t2t_cmd,
+                                stdin = subprocess.PIPE,
+                                stdout = subprocess.PIPE)
+
+        output = proc.communicate(content.encode('utf-8'))[0].decode('utf-8')
+        status = proc.wait()
+        if status:
+            raise subprocess.CalledProcessError(status, t2t_cmd)
+
+        return output, metadata
+
+def add_reader(readers):
+    for ext in Txt2tagsReader.file_extensions:
+        readers.reader_classes[ext] = Txt2tagsReader
+
+def register():
+    signals.readers_init.connect(add_reader)
diff --git a/pelican-plugins/video_privacy_enhancer/Readme.md b/pelican-plugins/video_privacy_enhancer/Readme.md
new file mode 100644
index 0000000..24dfb56
--- /dev/null
+++ b/pelican-plugins/video_privacy_enhancer/Readme.md
@@ -0,0 +1,71 @@
+# Video Privacy Enhancer
+
+This plugin is a conceptual port of the Electronic Frontier Foundation's (EFF's) [MyTube Drupal plugin](https://www.eff.org/pages/mytube-limit-privacy-risks-embedded-video "EFF blog post about the MyTube Plugin") to Pelican. **It increases user privacy by stopping video services (e.g., for YouTube, Google) from placing cookies on a user's system through an embedded video without that user explicitly opting-in to viewing the video (by clicking on it).**
+
+
+## Copyright, Contact, and Acknowledgements
+
+This plugin is copyright 2014 Jacob Levernier  
+It is released under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (as is the default for Pelican Plugins in the getpelican/pelican-plugins repository).
+
+Although not required by the license, I would very much appreciate it if you placed a note in the "About" page of your website that you use this plugin, in order to raise user awareness of web tracking issues.
+
+### To contact the author:
+
+* jleverni at uoregon dot edu  
+* http://AdUnumDatum.org  
+* BitBucket: https://bitbucket.org/jlev_uo/  
+* Github: https://github.com/publicus  
+
+This is the first plugin that I've written for Pelican, and it was intended as a training project for learning Pelican as well as Python better. I would be very happy to hear constructive feedback on the plugin and for suggestions for making it more efficient and/or expandable. Also, I've heavily annotated all of the Python and jQuery code in order to make it easier to understand for others looking to learn more, like I was when I wrote the plugin.
+
+### Acknowledgements
+
+I'm grateful to [Jordi Burgos](http://jordiburgos.com/post/2014/first-pelican-plugin-readtime.html "Blog post on writing plugins for Pelican") and [Duncan Lock](http://duncanlock.net/blog/2013/10/18/how-i-upgraded-this-website-to-pelican-33/ "Another blog post on writing plugins for Pelican") for writing helpful introductory blog posts on writing Pelican plugins. Both of these posts helped to decrease the intimidation factor associated with learning a new system like Pelican.
+
+I'm also grateful to the authors of the plugins in the pelican-plugins repo; being able to look over other plugins' authors' code helped me immensely in learning more about how Pelican's [signals](http://docs.getpelican.com/en/3.3.0/plugins.html#how-to-create-plugins "Pelican documentation on creating plugins") system works.
+
+
+## Explanation and Rationale
+
+Many videos (e.g., from YouTube) that are embedded in a website are capable of placing a cookie (or using other tracking methods) on a visitor's computer even if that visitor does not play the movie. For certain sites that deal with political or other potentially sensitive topics, this automatic tracking could raise privacy concerns among users. Thus, this plugin fetches and stores, on your server, a copy of the thumbnail image of each embedded YouTube video on your website. It then displays that image instead of the video until the user "opts-in" to watching the video by clicking on the thumbnail (at which point the image is replaced by the youtube embed iframe).
+
+This plugin allows video shortcodes to be used in any Pelican page or article.
+
+The currently-allowed shortcodes are as follows:
+
+* **YouTube:** `!youtube(video_id)`
+* **Vimeo:** `!vimeo(video_id)`
+
+For example, `!youtube(2XID_W4neJo)` can be used to embed and privacy-protect the video available at [https://www.youtube.com/watch?v=2XID_W4neJo](https://www.youtube.com/watch?v=2XID_W4neJo). During the `make html` process, the plugin will find every instance of each supported shortcode, and for each instance, will automatically download the video's thumbnail if it hasn't been downloaded previously, and will save the thumbnail to the Pelican output folder (by default, to /output/images/video-thumbnails). It will then replace the shortcode with the thumbnail image. A jQuery script then watches for thumbnail image clicks; when a user clicks a thumbnail image, the jQuery script will fade the image out, and replace it with the actual video iframe.
+
+YouTube does have a ["privacy-enhanced mode"](https://support.google.com/youtube/answer/171780?expand=PrivacyEnhancedMode#privacy) that purports not to place cookies on a user's page until the user clicks on a video. However, if you are a website author who wants to *ensure* that no cookies are initially placed, this plugin puts that power in your hands.
+
+
+## Usage
+
+`!youtube(2XID_W4neJo)` written anywhere in the content of a page or post will become `<img class="video-embed-dummy-image" id="2XID_W4neJo" src="YOUR_SITEURL/images/video-thumbnails/2XID_W4neJo.jpg" alt="Embedded Video - Click to view" title="Embedded Video - Click to view"></img>` during the `make html` process ('YOUR_SITEURL' is replaced by your actual `SITEURL` from pelicanconf.py). The plugin will take care of downloading `2XID_W4neJo.jpg`.
+
+The plugin comes with an example jQuery file to copy into your theme's static folder. **With this jQuery script, anytime a thumbnail image is clicked by a user, the thumbnail will fade out and then be replaced by the actual video embed.** Thus, the `<img>...</img>` code above will become `<iframe width="853" height="480" src="https://www.youtube-nocookie.com/embed/2XID_W4neJo" frameborder="0" allowfullscreen></iframe>` when clicked.
+
+To set the plugin up, just read the instructions at the top of youtube_privacy_enhancer.py. That file also includes some example CSS to copy into your theme's CSS file, as well as a setting or two for you to look over.
+
+**If you would like to add support for a new video service,** there are just a few steps:
+
+1. Look up how to download the thumbnail for a video from that service (e.g., through searching through the documentation for that service).
+2. Write a function in video_service_thumbnail_url_generating_functions.py (you can use one of the existing functions there as a template) that, when given the ID of a video from that service, will give back the URL for that video's thumbnail.
+3. Add the video service's name, shortcode, and name of the function you just created to the dictionary in the "SETTINGS" section of video_privacy_enhancer.py (you can use the existing entries in the dictionary as templates).
+4. Add the video service's name and URL to embed videos for it (you can find this using the "Share" button in many video websites) to the jQuery code that you copied from `video_privacy_enhancer_jQuery.js` when you first set up the plugin by following the instructions at the top of video_privacy_enhancer.py.
+
+
+## To Do
+
+As noted in an EFF [blog post](https://www.eff.org/deeplinks/2010/08/upgrade-mytube "EFF blog post about updates to MyTube"), the Drupal MyTube plugin from which this plugin takes its idea is capable of handling videos not only from YouTube and Vimeo but also Comedy Central and other sites. It would be nice to expand this Pelican plugin in the future to do the same.
+
+## Changelog
+
+* 2015-07-16: 
+	* Added support for Vimeo videos, refactored all of the code to make it easier to extend the plugin for new video services in the future.
+	* **NOTE WELL:** If you were using this plugin before this change, please note that several changes have been made that may require you to update your Pelican site:
+		1. The example CSS has changed to use 'embedded_privacy_video' instead of 'embedded_youtube_video', as well as 'video-embed-dummy-image' instead of 'youtube-embed-dummy-image'.
+		2. The default thumbnail directory has been changed from 'youtube-thumbnails' to 'video-thumbnails'.
diff --git a/pelican-plugins/video_privacy_enhancer/__init__.py b/pelican-plugins/video_privacy_enhancer/__init__.py
new file mode 100644
index 0000000..5e687ae
--- /dev/null
+++ b/pelican-plugins/video_privacy_enhancer/__init__.py
@@ -0,0 +1 @@
+from .video_privacy_enhancer import *
diff --git a/pelican-plugins/video_privacy_enhancer/video_privacy_enhancer.py b/pelican-plugins/video_privacy_enhancer/video_privacy_enhancer.py
new file mode 100644
index 0000000..28ee872
--- /dev/null
+++ b/pelican-plugins/video_privacy_enhancer/video_privacy_enhancer.py
@@ -0,0 +1,173 @@
+"""
+Video Privacy Enhancer
+--------------------------
+
+Authored by Jacob Levernier, 2014
+Released under the GNU AGPLv3
+
+For more information on this plugin, please see the attached Readme.md file.
+
+"""
+
+"""
+LIBRARIES FOR PYTHON TO USE
+"""
+
+from pelican import signals # For making this plugin work with Pelican.
+
+import os.path # For checking whether files are present in the filesystem.
+
+import re # For using regular expressions.
+
+import logging
+logger = logging.getLogger(__name__) # For using logger.debug() to log errors or other notes.
+
+import six
+# import urllib.request
+import six.moves.urllib.request 
+
+from . import video_service_thumbnail_url_generating_functions as video_thumbnail_functions # These are functions defined in 'video_service_thumbnail_url_generating_functions.py', which is located in the same directory as this file. 
+
+"""
+END OF LIBRARIES
+"""
+
+"""
+SETTINGS
+"""
+
+# Do not use a leading or trailing slash below (e.g., use "images/video-thumbnails"):
+output_directory_for_thumbnails = "images/video-thumbnails"
+
+# See the note in the Readme file re: adding support for other video services to this list.
+supported_video_services = {
+	"youtube": {
+		"shortcode_not_including_exclamation_point": "youtube",
+		"function_for_generating_thumbnail_url": video_thumbnail_functions.generate_thumbnail_download_link_youtube,
+	},
+	"vimeo": {
+		"shortcode_not_including_exclamation_point": "vimeo",
+		"function_for_generating_thumbnail_url": video_thumbnail_functions.generate_thumbnail_download_link_vimeo,
+	},
+}
+
+""" 
+In order for this plugin to work optimally, you need to do just a few things:
+
+1. Enable the plugn in pelicanconf.py (see http://docs.getpelican.com/en/3.3.0/plugins.html for documentation):  
+	PLUGIN_PATH = "/pelican-plugins"  
+	PLUGINS = ["video_privacy_enhancer"]
+
+2a. If necessary, install jQuery on your site (See https://stackoverflow.com/questions/1458349/installing-jquery -- the jQuery base file should go into your Pelican theme's 'static' directory)
+
+2b. Copy the jQuery file in this folder into, for example, your_theme_folder/static/video_privacy_enhancer_jQuery.js, and add a line like this to the <head></head> element of your website's base.html (or equivalent) template:
+	`<script src="{{ SITEURL }}/theme/video_privacy_enhancer_jquery.js"></script> <!--Load jQuery functions for the Video Privacy Enhancer Pelican plugin -->`
+
+3. Choose a default video embed size and add corresponding CSS to your theme's CSS file:
+
+Youtube allows the following sizes in its embed GUI (as of this writing, in March 2014). I recommend choosing one, and then having the iframe for the actual video embed match it (so that it's a seamless transition). This can be handled with CSS in both cases, so I haven't hard-coded it here:
+	1280 W x 720 H
+	853 W x 480 H
+	640 W x 360 H
+	560 W x 315 H
+
+Here's an example to add to your CSS file:
+
+```
+/* For use with the video-privacy-enhancer Pelican plugin */
+img.video-embed-dummy-image,
+iframe.embedded_privacy_video {
+	width: 853px;
+	max-height: 480px;
+
+	/* Center the element on the screen */
+	display: block;
+	margin-top: 2em;
+	margin-bottom: 2em;
+	margin-left: auto;
+	margin-right: auto;
+}
+iframe.embedded_privacy_video {
+	width: 843px;
+	height: 480px;
+}
+```
+
+"""
+
+"""
+END SETTINGS
+"""
+
+# A function to check whtether output_directory_for_thumbnails (a variable set above in the SETTINGS section) exists. If it doesn't exist, we'll create it.
+def check_for_thumbnail_directory(pelican_output_path):
+	# Per http://stackoverflow.com/a/84173, check if a file exists. isfile() works on files, and exists() works on files and directories.
+	try:
+		if not os.path.exists(pelican_output_path + "/" + output_directory_for_thumbnails): # If the directory doesn't exist already...
+			os.makedirs(pelican_output_path + "/" + output_directory_for_thumbnails) # Create the directory to hold the video thumbnails.
+			return True
+	except Exception as e:
+		logger.error("Video Privacy Enhancer Plugin: Error in checking if thumbnail folder exists and making the directory if it doesn't: %s", e) # In case something goes wrong.
+		return False
+
+
+def download_thumbnail(video_id_from_shortcode, video_thumbnail_url, video_service_name, pelican_output_path):
+	# Check if the thumbnail directory exists already:
+	check_for_thumbnail_directory(pelican_output_path)
+	
+	# Check if the thumbnail for this video exists already (if it's been previously downloaded). If it doesn't, download it:
+	if not os.path.exists(pelican_output_path + "/" + output_directory_for_thumbnails + "/" + video_service_name + "_" + video_id_from_shortcode + ".jpg"): # If the thumbnail doesn't already exist...
+		logger.debug("Video Privacy Enhancer Plugin: Downloading thumbnail from the following url: " + video_thumbnail_url)
+		six.moves.urllib.request.urlretrieve(video_thumbnail_url, pelican_output_path + "/" + output_directory_for_thumbnails + "/" + video_service_name + "_" + video_id_from_shortcode + ".jpg") # Download the thumbnail. This follows the instructions at http://www.reelseo.com/youtube-thumbnail-image/ for downloading YouTube thumbnail images.
+
+
+# A function to read through each page and post as it comes through from Pelican, find all instances of a shortcode (e.g., `!youtube(...)`) and change it into an HTML <img> element with the video thumbnail.
+# 'dictionary_of_services' below should be the dictionary defined in the settings above, which includes the service's name as the dictionary key, and, for each service, has a dictionary containing 'shortcode_to_search_for_not_including_exclamation_point' and 'function_for_generating_thumbnail_url'
+def process_shortcodes(data_passed_from_pelican):
+	dictionary_of_services = supported_video_services # This should be defined in the settings section above.
+	
+	if not data_passed_from_pelican._content: # If the item passed from Pelican has a "content" attribute (i.e., if it's not an image file or something else like that). NOTE: data_passed_from_pelican.content (without an underscore in front of 'content') seems to be read-only, whereas data_passed_from_pelican._content is able to be overwritten. This is somewhat explained in an IRC log from 2013-02-03 from user alexis to user webdesignhero_ at https://botbot.me/freenode/pelican/2013-02-01/?tz=America/Los_Angeles.
+		return # Exit the function, essentially passing over the (non-text) file.
+	
+	# Loop through services (e.g., youtube, vimeo), processing the output for each:
+	for video_service_name, video_service_information in six.iteritems(dictionary_of_services):
+		
+		# Good for debugging:
+		logger.debug("Video Privacy Enhancer Plugin: The name of the current service being processed is '" + video_service_name + "'")
+		
+		shortcode_to_search_for_not_including_exclamation_point = video_service_information['shortcode_not_including_exclamation_point']
+		logger.debug("Video Privacy Enhancer Plugin: Currently looking for the shortcode '" + shortcode_to_search_for_not_including_exclamation_point + "'")
+		
+		function_for_generating_thumbnail_url = video_service_information['function_for_generating_thumbnail_url']
+		
+		all_instances_of_the_shortcode = re.findall(r'(?<!\\\)\!' + shortcode_to_search_for_not_including_exclamation_point + r'.*?\)', data_passed_from_pelican._content) # Use a regular expression to find every instance of, e.g., '!youtube' followed by anything up to the first matching ')'.
+		
+		if(len(all_instances_of_the_shortcode) > 0): # If the article/page HAS any shortcodes, go on. Otherwise, don't (to do so would inadvertantly wipe out the output content for that article/page).
+			replace_shortcode_in_text = "" # This just gives this an initial value before going into the loop below.
+
+			# Go through each shortcode instance that we found above, and parse it:
+			for shortcode_to_parse in all_instances_of_the_shortcode:
+
+				video_id_from_shortcode = re.findall('(?<=' + shortcode_to_search_for_not_including_exclamation_point + r'\().*?(?=\))', shortcode_to_parse)[0] # Get what's inside of the parentheses in, e.g., '!youtube(...).'
+				
+				# print "Video ID is " + video_id_from_shortcode # Good for debugging purposes.
+				
+				# Use the Pelican pelicanconf.py settings:
+				pelican_output_path = data_passed_from_pelican.settings['OUTPUT_PATH']
+				pelican_site_url = data_passed_from_pelican.settings['SITEURL']
+				
+				# Download the video thumbnail if it's not already on the filesystem:
+				video_thumbnail_url = function_for_generating_thumbnail_url(video_id_from_shortcode)
+				
+				download_thumbnail(video_id_from_shortcode, video_thumbnail_url, video_service_name, pelican_output_path)
+				
+				# Replace the shortcode (e.g., '!youtube(...)') with '<img>...</img>'. Note that the <img> is given a class that the jQuery file mentioned at the top of this file will watch over. Any time an image with that class is clicked, the jQuery function will trigger and turn it into the full video embed.
+				replace_shortcode_in_text = re.sub(r'\!' + shortcode_to_search_for_not_including_exclamation_point + r'\(' + video_id_from_shortcode + r'\)', r'<img class="video-embed-dummy-image" id="' + video_id_from_shortcode + '" src="' +  pelican_site_url + '/' + output_directory_for_thumbnails + '/' + video_service_name + '_' + video_id_from_shortcode + '.jpg" alt="Embedded Video - Click to view" title="Embedded Video - Click to view" embed-service="' + video_service_name + '"></img>', data_passed_from_pelican._content)
+				
+				# Replace the content of the page or post with our now-updated content (having gone through all instances of the shortcode and updated them all, exiting the loop above.
+				data_passed_from_pelican._content = replace_shortcode_in_text
+
+
+# Make Pelican work (see http://docs.getpelican.com/en/3.3.0/plugins.html#how-to-create-plugins):
+def register():
+	signals.content_object_init.connect(process_shortcodes)
diff --git a/pelican-plugins/video_privacy_enhancer/video_privacy_enhancer_jquery.js b/pelican-plugins/video_privacy_enhancer/video_privacy_enhancer_jquery.js
new file mode 100644
index 0000000..3fab23d
--- /dev/null
+++ b/pelican-plugins/video_privacy_enhancer/video_privacy_enhancer_jquery.js
@@ -0,0 +1,39 @@
+$(document).ready(function() {
+// NOTE WELL: This is wrapped in a `$(document).ready(function() {...})` function (i.e., a "Document Ready" function that starts a section that won't load until the rest of the document/page has loaded (i.e., is "ready")). HOWEVER, this makes it so that jQuery functions from different .js files here are not able to see and talk to functions within this Document Ready function. Within a Document Ready function, functions and variables lose global scope. See http://stackoverflow.com/a/6547906 for more information.
+    
+///////////////////////////
+// SETTINGS
+///////////////////////////
+
+	// NOTE WELL: It's expected to use the code 'VIDEO_ID_GOES_HERE' in the URLs below where the video ID should go. This phrase will be replaced by the video id below.
+	// NOTE WELL: The URLS below should have 'http://' or 'https://' in front of them:
+	var dictionary_of_embed_urls_for_different_services = {
+		"youtube" : 'https://www.youtube-nocookie.com/embed/VIDEO_ID_GOES_HERE',
+		"vimeo" : 'https://player.vimeo.com/video/VIDEO_ID_GOES_HERE'
+	};
+
+///////////////////////////
+// END OF SETTINGS
+///////////////////////////
+
+
+// Whenever a link for an image created with the video_privacy_enhancer plugin is clicked, transform it into a video embed:
+$('body').on("click",'img.video-embed-dummy-image',function(event) // Whenever an image with the class "video-embed-dummy-image" is clicked...
+	{
+	    // '$(this)' below refers to the image that's been clicked. Before we go down into the function below, where the definition/scope of '$(this)' will change, we'll set it in a variable so that we can refer to it within the function below.
+	    var image_that_was_clicked = $(this);
+	    
+	    var video_id = $(this).attr('id'); // This assumes that the img ID attribute is set to the (e.g., youtube, Vimeo, etc.) video id.
+		var service_name = $(this).attr('embed-service'); // This assumes that the 'embed-service' attribute is set to a name (e.g., youtube, vimeo), and that that name is in the dictionary below.
+		
+		
+		var src_for_this_video = dictionary_of_embed_urls_for_different_services[service_name].replace("VIDEO_ID_GOES_HERE", video_id);
+
+        // Fade out the image, and replace it with the iframe embed code for the actual video:
+	    $(this).fadeOut(250, function() {
+	        image_that_was_clicked.replaceWith('<iframe class="embedded_privacy_video" src="' + src_for_this_video + '" frameborder="0" allowfullscreen></iframe>') // This will automatically show again.
+			}); // End fadeOut.
+	});
+
+
+}) // End Document Ready wrapper.
diff --git a/pelican-plugins/video_privacy_enhancer/video_service_thumbnail_url_generating_functions.py b/pelican-plugins/video_privacy_enhancer/video_service_thumbnail_url_generating_functions.py
new file mode 100644
index 0000000..87b452f
--- /dev/null
+++ b/pelican-plugins/video_privacy_enhancer/video_service_thumbnail_url_generating_functions.py
@@ -0,0 +1,33 @@
+"""A function for each service to download the video thumbnail
+
+Each function should accept one argument (the video id from that service) and should return the download URL for the video's thumbnail.
+
+"""
+
+"""
+LIBRARIES
+"""
+
+# from urllib.request import urlopen # For downloading the video thumbnails. Not as clean as, e.g., the requests module, but installed by default in many Python distributions.
+from six.moves.urllib.request import urlopen
+
+import json
+
+"""
+END OF LIBRARIES
+"""
+
+def generate_thumbnail_download_link_youtube(video_id_from_shortcode):
+	"""Thumbnail URL generator for YouTube videos."""
+	
+	thumbnail_download_link="https://img.youtube.com/vi/" + video_id_from_shortcode + "/0.jpg"
+	return thumbnail_download_link
+
+def generate_thumbnail_download_link_vimeo(video_id_from_shortcode):
+	"""Thumbnail URL generator for Vimeo videos."""
+	
+	# Following the Vimeo API at https://developer.vimeo.com/api#video-request, we need to request the video's metadata and get the thumbnail from that. First, then, we'll get the metadata in JSON format, and then will parse it to find the thumbnail URL.
+	video_metadata = urlopen("https://vimeo.com/api/v2/video/" + str(video_id_from_shortcode) + ".json").read() # Download the video's metadata in JSON format.
+	video_metadata_parsed = json.loads(video_metadata.decode('utf-8')) # Parse the JSON
+	video_thumbnail_large_location = video_metadata_parsed[0]['thumbnail_large'] # Go into the JSON and get the URL of the thumbnail.
+	return video_thumbnail_large_location	
diff --git a/pelican-plugins/w3c_validate/README.md b/pelican-plugins/w3c_validate/README.md
new file mode 100644
index 0000000..a06d961
--- /dev/null
+++ b/pelican-plugins/w3c_validate/README.md
@@ -0,0 +1,34 @@
+# w3c_validate plugin
+
+This is a plugin for Pelican that submits generated HTML content to the
+[W3C Markup Validation Service](http://validator.w3.org/).
+
+After all content is generated, the output folder is traversed for HTML files,
+and the content is submitted to the W3C validator, after which the results
+are displayed. For example:
+
+    -> writing /tmp/_output/sitemap.xml
+    -> Validating: /tmp/_output/archives.html
+    ERROR: line: 2; col: 52; message: Bad value http://www.w3.org/1999/html for the attribute xmlns (only http://www.w3.
+    -> Validating: /tmp/_output/categories.html
+    ERROR: line: 2; col: 52; message: Bad value http://www.w3.org/1999/html for the attribute xmlns (only http://www.w3.
+
+**Note**: The above output assumes you have called Pelican with the ``--debug``
+flag. Otherwise, you will see errors (if any) but not the file currently being
+validated.
+
+## Dependencies
+
+* [py_w3c](https://pypi.python.org/pypi/py_w3c/0.1.0), which can be installed with pip:
+
+    $ pip install py_w3c
+    
+## Instructions
+
+Add `w3c_validate` to your config file's plugins after installing dependencies - `PLUGINS = ['w3c_validate']`
+
+## Tests
+
+To execute them:
+
+    nosetests -w w3c_validate
diff --git a/pelican-plugins/w3c_validate/__init__.py b/pelican-plugins/w3c_validate/__init__.py
new file mode 100644
index 0000000..f01ad6e
--- /dev/null
+++ b/pelican-plugins/w3c_validate/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from .wc3_validate import *
diff --git a/pelican-plugins/w3c_validate/requirements.txt b/pelican-plugins/w3c_validate/requirements.txt
new file mode 100644
index 0000000..86ebba4
--- /dev/null
+++ b/pelican-plugins/w3c_validate/requirements.txt
@@ -0,0 +1 @@
+py_w3c
diff --git a/pelican-plugins/w3c_validate/test_content/getpelican.html b/pelican-plugins/w3c_validate/test_content/getpelican.html
new file mode 100644
index 0000000..c1bc04d
--- /dev/null
+++ b/pelican-plugins/w3c_validate/test_content/getpelican.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+        <meta charset="utf-8">
+        <title>Pelican Static Site Generator, Powered by Python</title>
+        <link rel="stylesheet" href="/theme/css/A.main.css.pagespeed.cf.zFbdR40MwZ.css" type="text/css"/>
+        <link href="/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Pelican Development Blog Atom Feed"/>
+
+        <!--[if IE]>
+            <script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+        <![endif]-->
+</head>
+
+<body id="index" class="home">
+        <header id="banner" class="body">
+                <h1><a href="/">Pelican Development Blog </a></h1>
+                <nav><ul>
+                    <li><a href="https://docs.getpelican.com">documentation</a></li>
+                    <li><a href="https://donate.getpelican.com">contribute</a></li>
+                    <li><a href="/category/news.html">news</a></li>
+                </ul></nav>
+        </header><!-- /#banner -->
+        
+<section id="content" class="body">    
+    <h1 class="entry-title">Pelican Static Site Generator, Powered by Python</h1>
+    
+    <p>Maintained by <a class="reference external" href="https://justinmayer.com/">Justin Mayer</a> (<a class="reference external" href="https://twitter.com/jmayer">&#64;jmayer</a>), Pelican is a static site generator
+that requires no database or server-side logic.</p>
+<p>Some of the features include:</p>
+<ul class="simple">
+<li>Write content in <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> or <a class="reference external" href="http://daringfireball.net/projects/markdown/">Markdown</a> markup</li>
+<li>Completely static output is easy to host anywhere</li>
+<li><a class="reference external" href="https://github.com/getpelican/pelican-themes">Themes</a> that can be customized via <a class="reference external" href="http://jinja.pocoo.org/">Jinja</a> templates</li>
+<li>Publish content in multiple languages</li>
+<li>Atom/RSS feeds</li>
+<li>Code syntax highlighting</li>
+<li>Import from WordPress, RSS feeds, and other services</li>
+<li>Modular plugin system and corresponding <a class="reference external" href="https://github.com/getpelican/pelican-plugins">plugin repository</a></li>
+</ul>
+<p>… and many other features.</p>
+<div class="section" id="next-steps">
+<h2>Next Steps</h2>
+<p>Learn more about the Pelican static site generator via:</p>
+<ul class="simple">
+<li><a class="reference external" href="http://blog.getpelican.com/category/news.html">Pelican news</a></li>
+<li>the extensive <a class="reference external" href="http://docs.getpelican.com/">documentation</a></li>
+<li><a class="reference external" href="https://github.com/getpelican/pelican">source code on GitHub</a></li>
+<li><a class="reference external" href="https://twitter.com/getpelican">Pelican on Twitter</a></li>
+</ul>
+</div>
+<div class="section" id="support-pelican-development">
+<h2>Support Pelican Development</h2>
+<p>Following are ways you can support Pelican’s development:</p>
+<ul class="simple">
+<li><a class="reference external" href="https://donate.getpelican.com">donate</a> to Pelican Dev Team</li>
+<li>follow <a class="reference external" href="https://twitter.com/jmayer">&#64;jmayer</a> and <a class="reference external" href="https://twitter.com/getpelican">Pelican on Twitter</a></li>
+<li>contribute pull requests, help triage issues, and improve documentation</li>
+</ul>
+<p><a class="reference external" href="https://donate.getpelican.com"><img alt="donate-fosspay" src="https://badgen.net/badge/fosspay/donate/yellow"/></a> <a class="reference external" href="https://liberapay.com/Pelican/donate"><img alt="donate-liberapay" src="https://badgen.net/badge/liberapay/donate/yellow"/></a></p>
+</div>
+
+</section>
+        <section id="extras" class="body">
+                <div class="blogroll">
+                        <h2>links</h2>
+                        <ul>
+                            <li><a href="https://docs.getpelican.com/">Pelican Docs</a></li>
+                            <li><a href="https://donate.getpelican.com/">Support Pelican</a></li>
+                            <li><a href="https://justinmayer.com/">Justin Mayer</a></li>
+                        </ul>
+                </div><!-- /.blogroll -->
+                <div class="social">
+                        <h2>follow</h2>
+                        <ul>
+                            <li><a href="/feeds/all.atom.xml" type="application/atom+xml" rel="alternate">atom feed</a></li>
+
+                            <li><a href="https://twitter.com/getpelican">twitter</a></li>
+                            <li><a href="https://twitter.com/jmayer">@jmayer</a></li>
+                            <li><a href="https://github.com/getpelican">github</a></li>
+                        </ul>
+                </div><!-- /.social -->
+        </section><!-- /#extras -->
+
+        <footer id="contentinfo" class="body">
+                <address id="about" class="vcard body">
+                Proudly powered by <a href="http://getpelican.com/">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.
+                </address><!-- /#about -->
+
+                <p>The theme is by <a href="http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Smashing Magazine</a>, thanks!</p>
+        </footer><!-- /#contentinfo -->
+
+</body>
+</html>
diff --git a/pelican-plugins/w3c_validate/test_w3c_validate.py b/pelican-plugins/w3c_validate/test_w3c_validate.py
new file mode 100644
index 0000000..91c9f72
--- /dev/null
+++ b/pelican-plugins/w3c_validate/test_w3c_validate.py
@@ -0,0 +1,24 @@
+import os
+
+from pelican.tests.support import unittest
+
+from w3c_validate import validate_files
+
+
+CUR_DIR = os.path.dirname(__file__)
+TEST_CONTENT_DIR = os.path.join(CUR_DIR, 'test_content')
+
+
+class W3CValidateTest(unittest.TestCase):
+
+    def test_validate_ok(self):
+        with self.assertLogs('w3c_validate.wc3_validate', level='INFO') as logs:
+            validate_files(PelicanMock({'OUTPUT_PATH': TEST_CONTENT_DIR}))
+
+        self.assertEqual(logs.output, ['INFO:w3c_validate.wc3_validate:Validating: {}/getpelican.html'.format(TEST_CONTENT_DIR)])
+
+
+class PelicanMock:
+    'A dummy class exposing the only attribute needed by w3c_validate.validate_files'
+    def __init__(self, settings):
+        self.settings = settings
diff --git a/pelican-plugins/w3c_validate/wc3_validate.py b/pelican-plugins/w3c_validate/wc3_validate.py
new file mode 100644
index 0000000..b2f67d3
--- /dev/null
+++ b/pelican-plugins/w3c_validate/wc3_validate.py
@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+"""
+W3C HTML Validator plugin for genrated content.
+"""
+
+
+from pelican import signals
+import logging
+import os
+
+LOG = logging.getLogger(__name__)
+
+INCLUDE_TYPES = ['html']
+
+
+def validate_files(pelican):
+    """
+    Validate a generated HTML file
+    :param pelican: pelican object
+    """
+    for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']):
+        for name in filenames:
+            if should_validate(name):
+                filepath = os.path.join(dirpath, name)
+                validate(filepath)
+
+
+def validate(filename):
+    """
+    Use W3C validator service: https://bitbucket.org/nmb10/py_w3c/ .
+    :param filename: the filename to validate
+    """
+    try:
+        from html.parser import HTMLParser
+    except ImportError:  # fallback for Python 2:
+        from HTMLParser import HTMLParser
+    from py_w3c.validators.html.validator import HTMLValidator
+
+    h = HTMLParser()  # for unescaping WC3 messages
+
+    vld = HTMLValidator()
+    LOG.info("Validating: {0}".format(filename))
+
+    # call w3c webservice
+    vld.validate_file(filename)
+
+    # display errors and warning
+    for err in vld.errors:
+        line = err.get('line') or err['lastLine']
+        col = err.get('col') or '{}-{}'.format(err['firstColumn'], err['lastColumn'])
+        LOG.error(u'line: {0}; col: {1}; message: {2}'.
+                  format(line, col, h.unescape(err['message']))
+                  )
+    for err in vld.warnings:
+        line = err.get('line') or err['lastLine']
+        col = err.get('col') or '{}-{}'.format(err['firstColumn'], err['lastColumn'])
+        LOG.warning(u'line: {0}; col: {1}; message: {2}'.
+                    format(line, col, h.unescape(err['message']))
+                    )
+
+
+def should_validate(filename):
+    """Check if the filename is a type of file that should be validated.
+    :param filename: A file name to check against
+    """
+    for extension in INCLUDE_TYPES:
+        if filename.endswith(extension):
+            return True
+    return False
+
+
+def register():
+    """
+    Register Pelican signal for validating content after it is generated.
+    """
+    signals.finalized.connect(validate_files)
diff --git a/pelican-plugins/webring/README.md b/pelican-plugins/webring/README.md
new file mode 100644
index 0000000..087a88f
--- /dev/null
+++ b/pelican-plugins/webring/README.md
@@ -0,0 +1,107 @@
+# Webring Plugin
+
+**NOTE: [This plugin has been moved to its own repository](https://github.com/pelican-plugins/webring). Please file any issues/PRs there. Once all plugins have been migrated to the [new Pelican Plugins organization](https://github.com/pelican-plugins), this monolithic repository will be archived.**
+
+This plugin retrieves the latest posts from a list of web feeds and makes
+them available in templates, effectively creating a [partial webring][1]. Posts
+are sorted from newer to older.
+
+It is inspired by [openring](https://git.sr.ht/~sircmpwn/openring), a tool for
+generating an HTML file to include in your [SSG][2] from a template and a list of
+web feeds.
+
+## Requirements
+
+It requires the `feedparser` module:
+
+    $ pip install feedparser
+
+`feedparser` supports many common and not so common feed formats (e.g RSS/Atom). [See a list here](https://pythonhosted.org/feedparser/introduction.html).
+
+## Settings
+
+```
+WEBRING_FEED_URLS = []
+```
+A list of web feeds in the form of a URL or local file.
+
+```
+WEBRING_MAX_ARTICLES = 3
+```
+The maximum number of articles.
+
+```
+WEBRING_ARTICLES_PER_FEED = 1
+```
+The maximum number of articles per feed.
+
+```
+WEBRING_SUMMARY_LENGTH = 128
+```
+The maximum length of post summaries.
+
+```
+WEBRING_CLEAN_SUMMARY_HTML = True
+```
+Whether to clean html tags from post summaries or not.
+
+### Example
+Let's suppose we have two blogs in our webring and want to show two articles
+per blog. We would also like to show a quite short summary.
+
+```
+WEBRING_FEED_URLS = [
+    'https://justinmayer.com/feeds/all.atom.xml',
+    'https://danluu.com/atom.xml'
+]
+WEBRING_ARTICLES_PER_FEED = 2
+WEBRING_MAX_ARTICLES = 4
+WEBRING_SUMMARY_LENGTH = 25
+```
+
+## Templates
+The plugin makes available the resulting web feed articles in the variable
+`webring_articles`, which is a list of `Article` objects whose attributes are:
+
+- `title`: The article title.
+- `link`: The article URL.
+- `date`: The article date as a Pelican `utils.SafeDatetime` object, which can
+be used with [Pelican's Jinja filter `strftime`](https://docs.getpelican.com/en/stable/themes.html#date-formatting).
+- `summary`: The article summary, as provided in the web feed and modified
+according to this plugin's settings.
+- `source_title`: The title of the web feed.
+- `source_link`: A link to the web feed.
+- `source_id`: An identification field provided in some web feeds.
+
+See the following section for an example on how to iterate the article list.
+
+### Example
+Imagine we'd like to put our webring in the bottom of the default Pelican
+template (ie. notmyidea). To simplify, we'll use the existing CSS classes.
+
+Edit the `notmyidea/templates/base.html` file and make it look like this:
+
+```
+        ...
+        <section id="extras" class="body">
+        {% if WEBRING_FEED_URLS %}
+            <div class="webring">
+                <h2>Webring</h2>
+                {% for article in webring_articles %}
+                <p><a href="{{ article.link }}">{{ article.title }}</a></p>
+                <p>{{ article.date|strftime('%d %B %Y') }} - {{ article.summary}}</p>
+                {% endfor %}
+            </div>
+        {% endif %}
+        {% if LINKS %}
+        ...
+```
+
+If there were no links or social widgets, the result would be like in the
+image below:
+
+![Example of Webring](https://github.com/getpelican/pelican-plugins/raw/master/webring/example.png)
+
+
+[1]: https://en.wikipedia.org/wiki/Webring "In a proper webring, websites would be linked in a circular structure."
+[2]: https://en.wikipedia.org/wiki/Category:Static_website_generators "Static Site Generator"
diff --git a/pelican-plugins/webring/__init__.py b/pelican-plugins/webring/__init__.py
new file mode 100644
index 0000000..42eceb8
--- /dev/null
+++ b/pelican-plugins/webring/__init__.py
@@ -0,0 +1 @@
+from .webring import *
diff --git a/pelican-plugins/webring/example.png b/pelican-plugins/webring/example.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8ce5f0bb43b26a843fd560408812d5cf6a52a41
GIT binary patch
literal 39327
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
A!~g&Q

literal 0
HcmV?d00001

diff --git a/pelican-plugins/webring/requirements.txt b/pelican-plugins/webring/requirements.txt
new file mode 100644
index 0000000..1b25361
--- /dev/null
+++ b/pelican-plugins/webring/requirements.txt
@@ -0,0 +1 @@
+feedparser
diff --git a/pelican-plugins/webring/test_data/pelican-atom.xml b/pelican-plugins/webring/test_data/pelican-atom.xml
new file mode 100644
index 0000000..7430094
--- /dev/null
+++ b/pelican-plugins/webring/test_data/pelican-atom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom"><title>Site with Pelican sample content</title><link href="http://example.com/" rel="alternate"></link><link href="http://example.com/pelican-atom.xml" rel="self"></link><id>http://example.com/</id><updated>2013-11-17T23:29:00+01:00</updated><entry><title>FILENAME_METADATA example</title><link href="http://example.com/filename_metadata-example.html" rel="alternate"></link><published>2012-11-30T00:00:00+01:00</published><updated>2012-11-30T00:00:00+01:00</updated><author><name>davidag</name></author><id>tag:example.com,2012-11-30:/filename_metadata-example.html</id><content type="html">&lt;p&gt;Some cool stuff!&lt;/p&gt;
+</content></entry><entry><title>Second article</title><link href="http://example.com/second-article.html" rel="alternate"></link><published>2012-02-29T00:00:00+01:00</published><updated>2012-02-29T00:00:00+01:00</updated><author><name>davidag</name></author><id>tag:example.com,2012-02-29:/second-article.html</id><content type="html">&lt;p&gt;This is some article, in english&lt;/p&gt;
+</content><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>Deuxième article</title><link href="http://example.com/second-article-fr.html" rel="alternate"></link><published>2012-02-29T00:00:00+01:00</published><updated>2012-02-29T00:00:00+01:00</updated><author><name>davidag</name></author><id>tag:example.com,2012-02-29:/second-article-fr.html</id><content type="html">&lt;p&gt;Ceci est un article, en français.&lt;/p&gt;
+</content><category term="foo"></category><category term="bar"></category><category term="baz"></category></entry><entry><title>A markdown powered article</title><link href="http://example.com/a-markdown-powered-article.html" rel="alternate"></link><published>2011-04-20T00:00:00+02:00</published><updated>2011-04-20T00:00:00+02:00</updated><author><name>davidag</name></author><id>tag:example.com,2011-04-20:/a-markdown-powered-article.html</id><content type="html">&lt;p&gt;You're mutually oblivious.&lt;/p&gt;
+&lt;p&gt;&lt;a href="http://example.com/unbelievable.html"&gt;a root-relative link to unbelievable&lt;/a&gt;
+&lt;a href="http://example.com/unbelievable.html"&gt;a file-relative link to unbelievable&lt;/a&gt;&lt;/p&gt;</content></entry><entry><title>Article 1</title><link href="http://example.com/article-1.html" rel="alternate"></link><published>2011-02-17T00:00:00+01:00</published><updated>2011-02-17T00:00:00+01:00</updated><author><name>davidag</name></author><id>tag:example.com,2011-02-17:/article-1.html</id><content type="html">&lt;p&gt;Article 1&lt;/p&gt;
+</content></entry><entry><title>Article 2</title><link href="http://example.com/article-2.html" rel="alternate"></link><published>2011-02-17T00:00:00+01:00</published><updated>2011-02-17T00:00:00+01:00</updated><author><name>davidag</name></author><id>tag:example.com,2011-02-17:/article-2.html</id><content type="html">&lt;p&gt;Article 2&lt;/p&gt;
+</content></entry><entry><title>Article 3</title><link href="http://example.com/article-3.html" rel="alternate"></link><published>2011-02-17T00:00:00+01:00</published><updated>2011-02-17T00:00:00+01:00</updated><author><name>davidag</name></author><id>tag:example.com,2011-02-17:/article-3.html</id><content type="html">&lt;p&gt;Article 3&lt;/p&gt;
+</content></entry><entry><title>This is a super article !</title><link href="http://example.com/this-is-a-super-article.html" rel="alternate"></link><published>2010-12-02T10:14:00+01:00</published><updated>2013-11-17T23:29:00+01:00</updated><author><name>Alexis Métaireau</name></author><id>tag:example.com,2010-12-02:/this-is-a-super-article.html</id><summary type="html">&lt;p class="first last"&gt;Multi-line metadata should be supported
+as well as &lt;strong&gt;inline markup&lt;/strong&gt;.&lt;/p&gt;
+</summary><content type="html">&lt;p&gt;Some content here !&lt;/p&gt;
+&lt;div class="section" id="this-is-a-simple-title"&gt;
+&lt;h2&gt;This is a simple title&lt;/h2&gt;
+&lt;p&gt;And here comes the cool &lt;a class="reference external" href="http://books.couchdb.org/relax/design-documents/views"&gt;stuff&lt;/a&gt;.&lt;/p&gt;
+&lt;img alt="alternate text" src="http://example.com/pictures/Sushi.jpg" style="width: 600px; height: 450px;" /&gt;
+&lt;img alt="alternate text" src="http://example.com/pictures/Sushi_Macro.jpg" style="width: 600px; height: 450px;" /&gt;
+&lt;pre class="literal-block"&gt;
+&amp;gt;&amp;gt;&amp;gt; from ipdb import set_trace
+&amp;gt;&amp;gt;&amp;gt; set_trace()
+&lt;/pre&gt;
+&lt;p&gt;→ And now try with some utf8 hell: ééé&lt;/p&gt;
+&lt;/div&gt;
+</content><category term="foo"></category><category term="bar"></category><category term="foobar"></category></entry><entry><title>Oh yeah !</title><link href="http://example.com/oh-yeah.html" rel="alternate"></link><published>2010-10-20T10:14:00+02:00</published><updated>2010-10-20T10:14:00+02:00</updated><author><name>Alexis Métaireau</name></author><id>tag:example.com,2010-10-20:/oh-yeah.html</id><content type="html">&lt;div class="section" id="why-not"&gt;
+&lt;h2&gt;Why not ?&lt;/h2&gt;
+&lt;p&gt;After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
+YEAH !&lt;/p&gt;
+&lt;img alt="alternate text" src="http://example.com/pictures/Sushi.jpg" style="width: 600px; height: 450px;" /&gt;
+&lt;/div&gt;
+</content><category term="oh"></category><category term="bar"></category><category term="yeah"></category></entry><entry><title>Unbelievable !</title><link href="http://example.com/unbelievable.html" rel="alternate"></link><published>2010-10-15T20:30:00+02:00</published><updated>2010-10-15T20:30:00+02:00</updated><author><name>davidag</name></author><id>tag:example.com,2010-10-15:/unbelievable.html</id><summary type="html">&lt;p&gt;Or completely awesome. Depends the needs.&lt;/p&gt;
+&lt;p&gt;&lt;a class="reference external" href="http://example.com/a-markdown-powered-article.html"&gt;a root-relative link to markdown-article&lt;/a&gt;
+&lt;a class="reference external" href="http://example.com/a-markdown-powered-article.html"&gt;a file-relative link to markdown-article&lt;/a&gt;&lt;/p&gt;
+&lt;div class="section" id="testing-sourcecode-directive"&gt;
+&lt;h2&gt;Testing sourcecode directive&lt;/h2&gt;
+&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;formatter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;VARIANTS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
+&lt;/pre&gt;&lt;/div&gt;
+&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
+&lt;div class="section" id="testing-another-case"&gt;
+&lt;h2&gt;Testing another case&lt;/h2&gt;
+&lt;p&gt;This will now have a line number in 'custom' since it's the default in
+pelican.conf, it will …&lt;/p&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;Or completely awesome. Depends the needs.&lt;/p&gt;
+&lt;p&gt;&lt;a class="reference external" href="http://example.com/a-markdown-powered-article.html"&gt;a root-relative link to markdown-article&lt;/a&gt;
+&lt;a class="reference external" href="http://example.com/a-markdown-powered-article.html"&gt;a file-relative link to markdown-article&lt;/a&gt;&lt;/p&gt;
+&lt;div class="section" id="testing-sourcecode-directive"&gt;
+&lt;h2&gt;Testing sourcecode directive&lt;/h2&gt;
+&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;formatter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;VARIANTS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
+&lt;/pre&gt;&lt;/div&gt;
+&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
+&lt;div class="section" id="testing-another-case"&gt;
+&lt;h2&gt;Testing another case&lt;/h2&gt;
+&lt;p&gt;This will now have a line number in 'custom' since it's the default in
+pelican.conf, it will have nothing in default.&lt;/p&gt;
+&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;formatter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;VARIANTS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
+&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Lovely.&lt;/p&gt;
+&lt;/div&gt;
+&lt;div class="section" id="testing-more-sourcecode-directives"&gt;
+&lt;h2&gt;Testing more sourcecode directives&lt;/h2&gt;
+&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span id="foo-8"&gt;&lt;a name="foo-8"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt; 8 &lt;/span&gt;&lt;span class="testingk"&gt;def&lt;/span&gt; &lt;span class="testingnf"&gt;run&lt;/span&gt;&lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingp"&gt;):&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-9"&gt;&lt;a name="foo-9"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;    &lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;assert_has_content&lt;/span&gt;&lt;span class="testingp"&gt;()&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-10"&gt;&lt;a name="foo-10"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;10 &lt;/span&gt;    &lt;span class="testingk"&gt;try&lt;/span&gt;&lt;span class="testingp"&gt;:&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-11"&gt;&lt;a name="foo-11"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;        &lt;span class="testingn"&gt;lexer&lt;/span&gt; &lt;span class="testingo"&gt;=&lt;/span&gt; &lt;span class="testingn"&gt;get_lexer_by_name&lt;/span&gt;&lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;arguments&lt;/span&gt;&lt;span class="testingp"&gt;[&lt;/span&gt;&lt;span class="testingmi"&gt;0&lt;/span&gt;&lt;span class="testingp"&gt;])&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-12"&gt;&lt;a name="foo-12"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;12 &lt;/span&gt;    &lt;span class="testingk"&gt;except&lt;/span&gt; &lt;span class="testingne"&gt;ValueError&lt;/span&gt;&lt;span class="testingp"&gt;:&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-13"&gt;&lt;a name="foo-13"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;        &lt;span class="testingc1"&gt;# no lexer found - use the text one instead of an exception&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-14"&gt;&lt;a name="foo-14"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;14 &lt;/span&gt;        &lt;span class="testingn"&gt;lexer&lt;/span&gt; &lt;span class="testingo"&gt;=&lt;/span&gt; &lt;span class="testingn"&gt;TextLexer&lt;/span&gt;&lt;span class="testingp"&gt;()&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-15"&gt;&lt;a name="foo-15"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-16"&gt;&lt;a name="foo-16"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;16 &lt;/span&gt;    &lt;span class="testingk"&gt;if&lt;/span&gt; &lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;linenos&amp;#39;&lt;/span&gt; &lt;span class="testingow"&gt;in&lt;/span&gt; &lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;options&lt;/span&gt; &lt;span class="testingow"&gt;and&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-17"&gt;&lt;a name="foo-17"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;            &lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;options&lt;/span&gt;&lt;span class="testingp"&gt;[&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;linenos&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;]&lt;/span&gt; &lt;span class="testingow"&gt;not&lt;/span&gt; &lt;span class="testingow"&gt;in&lt;/span&gt; &lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;table&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;,&lt;/span&gt; &lt;span class="testings1"&gt;&amp;#39;inline&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;)):&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-18"&gt;&lt;a name="foo-18"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;18 &lt;/span&gt;        &lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;options&lt;/span&gt;&lt;span class="testingp"&gt;[&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;linenos&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;]&lt;/span&gt; &lt;span class="testingo"&gt;=&lt;/span&gt; &lt;span class="testings1"&gt;&amp;#39;table&amp;#39;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-19"&gt;&lt;a name="foo-19"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-20"&gt;&lt;a name="foo-20"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;20 &lt;/span&gt;    &lt;span class="testingk"&gt;for&lt;/span&gt; &lt;span class="testingn"&gt;flag&lt;/span&gt; &lt;span class="testingow"&gt;in&lt;/span&gt; &lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;nowrap&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;,&lt;/span&gt; &lt;span class="testings1"&gt;&amp;#39;nobackground&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;,&lt;/span&gt; &lt;span class="testings1"&gt;&amp;#39;anchorlinenos&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;):&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-21"&gt;&lt;a name="foo-21"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;        &lt;span class="testingk"&gt;if&lt;/span&gt; &lt;span class="testingn"&gt;flag&lt;/span&gt; &lt;span class="testingow"&gt;in&lt;/span&gt; &lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;options&lt;/span&gt;&lt;span class="testingp"&gt;:&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-22"&gt;&lt;a name="foo-22"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;22 &lt;/span&gt;            &lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;options&lt;/span&gt;&lt;span class="testingp"&gt;[&lt;/span&gt;&lt;span class="testingn"&gt;flag&lt;/span&gt;&lt;span class="testingp"&gt;]&lt;/span&gt; &lt;span class="testingo"&gt;=&lt;/span&gt; &lt;span class="testingbp"&gt;True&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-23"&gt;&lt;a name="foo-23"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-24"&gt;&lt;a name="foo-24"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;24 &lt;/span&gt;    &lt;span class="testingc1"&gt;# noclasses should already default to False, but just in case...&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-25"&gt;&lt;a name="foo-25"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;    &lt;span class="testingn"&gt;formatter&lt;/span&gt; &lt;span class="testingo"&gt;=&lt;/span&gt; &lt;span class="testingn"&gt;HtmlFormatter&lt;/span&gt;&lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testingn"&gt;noclasses&lt;/span&gt;&lt;span class="testingo"&gt;=&lt;/span&gt;&lt;span class="testingbp"&gt;False&lt;/span&gt;&lt;span class="testingp"&gt;,&lt;/span&gt; &lt;span class="testingo"&gt;**&lt;/span&gt;&lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;options&lt;/span&gt;&lt;span class="testingp"&gt;)&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-26"&gt;&lt;a name="foo-26"&gt;&lt;/a&gt;&lt;span class="lineno special"&gt;26 &lt;/span&gt;    &lt;span class="testingn"&gt;parsed&lt;/span&gt; &lt;span class="testingo"&gt;=&lt;/span&gt; &lt;span class="testingn"&gt;highlight&lt;/span&gt;&lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="testingse"&gt;\n&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;join&lt;/span&gt;&lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testingbp"&gt;self&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;content&lt;/span&gt;&lt;span class="testingp"&gt;),&lt;/span&gt; &lt;span class="testingn"&gt;lexer&lt;/span&gt;&lt;span class="testingp"&gt;,&lt;/span&gt; &lt;span class="testingn"&gt;formatter&lt;/span&gt;&lt;span class="testingp"&gt;)&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;span id="foo-27"&gt;&lt;a name="foo-27"&gt;&lt;/a&gt;&lt;span class="lineno"&gt;   &lt;/span&gt;    &lt;span class="testingk"&gt;return&lt;/span&gt; &lt;span class="testingp"&gt;[&lt;/span&gt;&lt;span class="testingn"&gt;nodes&lt;/span&gt;&lt;span class="testingo"&gt;.&lt;/span&gt;&lt;span class="testingn"&gt;raw&lt;/span&gt;&lt;span class="testingp"&gt;(&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;,&lt;/span&gt; &lt;span class="testingn"&gt;parsed&lt;/span&gt;&lt;span class="testingp"&gt;,&lt;/span&gt; &lt;span class="testingn"&gt;format&lt;/span&gt;&lt;span class="testingo"&gt;=&lt;/span&gt;&lt;span class="testings1"&gt;&amp;#39;html&amp;#39;&lt;/span&gt;&lt;span class="testingp"&gt;)]&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Lovely.&lt;/p&gt;
+&lt;/div&gt;
+&lt;div class="section" id="testing-even-more-sourcecode-directives"&gt;
+&lt;h2&gt;Testing even more sourcecode directives&lt;/h2&gt;
+&lt;span class="n"&gt;formatter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;VARIANTS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
+&lt;p&gt;Lovely.&lt;/p&gt;
+&lt;/div&gt;
+&lt;div class="section" id="testing-overriding-config-defaults"&gt;
+&lt;h2&gt;Testing overriding config defaults&lt;/h2&gt;
+&lt;p&gt;Even if the default is line numbers, we can override it here&lt;/p&gt;
+&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;formatter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;VARIANTS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
+&lt;/pre&gt;&lt;/div&gt;
+&lt;p&gt;Lovely.&lt;/p&gt;
+&lt;/div&gt;
+</content></entry><entry><title>The baz tag</title><link href="http://example.com/tag/baz.html" rel="alternate"></link><published>2010-03-14T00:00:00+01:00</published><updated>2010-03-14T00:00:00+01:00</updated><author><name>davidag</name></author><id>tag:example.com,2010-03-14:/tag/baz.html</id><content type="html">&lt;p&gt;This article overrides the listening of the articles under the &lt;em&gt;baz&lt;/em&gt; tag.&lt;/p&gt;
+</content></entry></feed>
\ No newline at end of file
diff --git a/pelican-plugins/webring/test_data/pelican-rss.xml b/pelican-plugins/webring/test_data/pelican-rss.xml
new file mode 100644
index 0000000..264a537
--- /dev/null
+++ b/pelican-plugins/webring/test_data/pelican-rss.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0"><channel><title>Site with Pelican sample content</title><link>http://example.com/</link><description></description><lastBuildDate>Sun, 17 Nov 2013 23:29:00 +0100</lastBuildDate><item><title>FILENAME_METADATA example</title><link>http://example.com/filename_metadata-example.html</link><description>&lt;p&gt;Some cool stuff!&lt;/p&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Fri, 30 Nov 2012 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:example.com,2012-11-30:/filename_metadata-example.html</guid></item><item><title>Second article</title><link>http://example.com/second-article.html</link><description>&lt;p&gt;This is some article, in english&lt;/p&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Wed, 29 Feb 2012 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:example.com,2012-02-29:/second-article.html</guid><category>foo</category><category>bar</category><category>baz</category></item><item><title>Deuxième article</title><link>http://example.com/second-article-fr.html</link><description>&lt;p&gt;Ceci est un article, en français.&lt;/p&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Wed, 29 Feb 2012 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:example.com,2012-02-29:/second-article-fr.html</guid><category>foo</category><category>bar</category><category>baz</category></item><item><title>A markdown powered article</title><link>http://example.com/a-markdown-powered-article.html</link><description>&lt;p&gt;You're mutually oblivious.&lt;/p&gt;
+&lt;p&gt;&lt;a href="http://example.com/unbelievable.html"&gt;a root-relative link to unbelievable&lt;/a&gt;
+&lt;a href="http://example.com/unbelievable.html"&gt;a file-relative link to unbelievable&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Wed, 20 Apr 2011 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:example.com,2011-04-20:/a-markdown-powered-article.html</guid></item><item><title>Article 1</title><link>http://example.com/article-1.html</link><description>&lt;p&gt;Article 1&lt;/p&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:example.com,2011-02-17:/article-1.html</guid></item><item><title>Article 2</title><link>http://example.com/article-2.html</link><description>&lt;p&gt;Article 2&lt;/p&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:example.com,2011-02-17:/article-2.html</guid></item><item><title>Article 3</title><link>http://example.com/article-3.html</link><description>&lt;p&gt;Article 3&lt;/p&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Thu, 17 Feb 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:example.com,2011-02-17:/article-3.html</guid></item><item><title>This is a super article !</title><link>http://example.com/this-is-a-super-article.html</link><description>&lt;p class="first last"&gt;Multi-line metadata should be supported
+as well as &lt;strong&gt;inline markup&lt;/strong&gt;.&lt;/p&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Thu, 02 Dec 2010 10:14:00 +0100</pubDate><guid isPermaLink="false">tag:example.com,2010-12-02:/this-is-a-super-article.html</guid><category>foo</category><category>bar</category><category>foobar</category></item><item><title>Oh yeah !</title><link>http://example.com/oh-yeah.html</link><description>&lt;div class="section" id="why-not"&gt;
+&lt;h2&gt;Why not ?&lt;/h2&gt;
+&lt;p&gt;After all, why not ? It's pretty simple to do it, and it will allow me to write my blogposts in rst !
+YEAH !&lt;/p&gt;
+&lt;img alt="alternate text" src="http://example.com/pictures/Sushi.jpg" style="width: 600px; height: 450px;" /&gt;
+&lt;/div&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexis Métaireau</dc:creator><pubDate>Wed, 20 Oct 2010 10:14:00 +0200</pubDate><guid isPermaLink="false">tag:example.com,2010-10-20:/oh-yeah.html</guid><category>oh</category><category>bar</category><category>yeah</category></item><item><title>Unbelievable !</title><link>http://example.com/unbelievable.html</link><description>&lt;p&gt;Or completely awesome. Depends the needs.&lt;/p&gt;
+&lt;p&gt;&lt;a class="reference external" href="http://example.com/a-markdown-powered-article.html"&gt;a root-relative link to markdown-article&lt;/a&gt;
+&lt;a class="reference external" href="http://example.com/a-markdown-powered-article.html"&gt;a file-relative link to markdown-article&lt;/a&gt;&lt;/p&gt;
+&lt;div class="section" id="testing-sourcecode-directive"&gt;
+&lt;h2&gt;Testing sourcecode directive&lt;/h2&gt;
+&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;formatter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;VARIANTS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
+&lt;/pre&gt;&lt;/div&gt;
+&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
+&lt;div class="section" id="testing-another-case"&gt;
+&lt;h2&gt;Testing another case&lt;/h2&gt;
+&lt;p&gt;This will now have a line number in 'custom' since it's the default in
+pelican.conf, it will …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Fri, 15 Oct 2010 20:30:00 +0200</pubDate><guid isPermaLink="false">tag:example.com,2010-10-15:/unbelievable.html</guid></item><item><title>The baz tag</title><link>http://example.com/tag/baz.html</link><description>&lt;p&gt;This article overrides the listening of the articles under the &lt;em&gt;baz&lt;/em&gt; tag.&lt;/p&gt;
+</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">davidag</dc:creator><pubDate>Sun, 14 Mar 2010 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:example.com,2010-03-14:/tag/baz.html</guid></item></channel></rss>
\ No newline at end of file
diff --git a/pelican-plugins/webring/test_webring.py b/pelican-plugins/webring/test_webring.py
new file mode 100644
index 0000000..fe3083d
--- /dev/null
+++ b/pelican-plugins/webring/test_webring.py
@@ -0,0 +1,107 @@
+# -*- coding: utf-8 -*-
+"""Tests for webring plugin
+
+Test Atom and RSS feeds have been generated using Pelican itself using the
+contents of its `samples/content` folder.
+"""
+import unittest
+import os
+from collections import Counter
+from operator import itemgetter, attrgetter
+
+from pelican.settings import DEFAULT_CONFIG
+from pelican.generators import Generator
+from pelican.tests.support import (
+    module_exists,
+    get_settings,
+    get_context,
+)
+
+import webring
+
+
+class NullGenerator(Generator):
+    pass
+
+
+@unittest.skipUnless(module_exists('feedparser'), 'install feedparser module')
+class WebringTest(unittest.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        webring.initialized(None)
+        cls.generators = [NullGenerator(
+            get_context(), get_settings(), '', '', '')]
+        cls.settings = cls.generators[0].settings
+
+    def setUp(self):
+        self.reset_settings()
+        self.set_feeds()
+
+    def reset_settings(self):
+        for name, value in self.settings.items():
+            if name.startswith('WEBRING'):
+                self.settings[name] = DEFAULT_CONFIG[name]
+
+    def set_feeds(self):
+        test_data_path = os.path.join(os.path.dirname(__file__), 'test_data')
+        # Contents will be duplicated but still different, as they come from
+        # two different feed URLs.
+        self.settings[webring.WEBRING_FEED_URLS_STR] = [
+            'file://' + os.path.join(test_data_path, 'pelican-rss.xml'),
+            'file://' + os.path.join(test_data_path, 'pelican-atom.xml'),
+        ]
+
+    def get_fetched_articles(self):
+        return self.generators[0].context['webring_articles']
+
+    def test_max_articles(self):
+        webring.fetch_feeds(self.generators)
+        articles = self.get_fetched_articles()
+        self.assertLessEqual(len(articles),
+                             self.settings[webring.WEBRING_MAX_ARTICLES_STR])
+
+    def test_articles_per_feed(self):
+        self.settings[webring.WEBRING_MAX_ARTICLES_STR] = 6
+        self.settings[webring.WEBRING_ARTICLES_PER_FEED_STR] = 3
+        webring.fetch_feeds(self.generators)
+        articles = self.get_fetched_articles()
+        feed_counts = Counter(a.source_id for a in articles)
+        self.assertEqual(list(map(itemgetter(1), feed_counts.items())), [3, 3])
+
+    def test_clean_summary(self):
+        webring.fetch_feeds(self.generators)
+        articles = self.get_fetched_articles()
+        summaries = list(map(attrgetter('summary'), articles))
+        self.assertTrue(all(s.find('<') < 0 for s in summaries))
+
+    def test_dont_clean_summary(self):
+        self.settings[webring.WEBRING_CLEAN_SUMMARY_HTML_STR] = False
+        webring.fetch_feeds(self.generators)
+        articles = self.get_fetched_articles()
+        summaries = list(map(attrgetter('summary'), articles))
+        self.assertTrue(all(s.find('<') >= 0 for s in summaries))
+
+    def test_summary_length(self):
+        self.settings[webring.WEBRING_SUMMARY_LENGTH_STR] = 10
+        webring.fetch_feeds(self.generators)
+        articles = self.get_fetched_articles()
+        self.assertTrue(all(
+            len(a.summary) - len('...') <= 10 for a in articles))
+
+    def test_long_summary_length(self):
+        self.settings[webring.WEBRING_SUMMARY_LENGTH_STR] = 1000
+        webring.fetch_feeds(self.generators)
+        articles = self.get_fetched_articles()
+        self.assertTrue(not any(a.summary.endswith('...') for a in articles))
+
+    def test_malformed_url(self):
+        self.settings[webring.WEBRING_FEED_URLS_STR] = [
+            '://pelican-atom.xml',
+        ]
+        webring.fetch_feeds(self.generators)
+        self.assertEqual(len(self.get_fetched_articles()), 0)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/pelican-plugins/webring/webring.py b/pelican-plugins/webring/webring.py
new file mode 100644
index 0000000..3b6aa76
--- /dev/null
+++ b/pelican-plugins/webring/webring.py
@@ -0,0 +1,170 @@
+# -*- coding: utf-8 -*-
+"""
+Webring plugin for Pelican
+==========================
+
+A plugin to create a webring in your web site from a list of web feeds.
+"""
+import re
+from six.moves.urllib.request import Request, urlopen
+from six.moves.urllib.error import URLError
+from collections import namedtuple
+import logging
+from operator import attrgetter
+
+from pelican import signals, utils
+
+log = logging.getLogger(__name__)
+
+try:
+    import feedparser
+except ImportError:
+    log.warning('Webring Plugin: Failed to load dependency (feedparser)')
+
+WEBRING_VERSION = '0.1'
+
+WEBRING_FEED_URLS_STR = 'WEBRING_FEED_URLS'
+WEBRING_MAX_ARTICLES_STR = 'WEBRING_MAX_ARTICLES'
+WEBRING_ARTICLES_PER_FEED_STR = 'WEBRING_ARTICLES_PER_FEED'
+WEBRING_SUMMARY_LENGTH_STR = 'WEBRING_SUMMARY_LENGTH'
+WEBRING_CLEAN_SUMMARY_HTML_STR = 'WEBRING_CLEAN_SUMMARY_HTML'
+
+Article = namedtuple(
+    'Article',
+    ['title', 'link', 'date', 'summary',
+     'source_title', 'source_link', 'source_id'])
+
+
+def register():
+    """Signal registration."""
+    signals.initialized.connect(initialized)
+    signals.all_generators_finalized.connect(fetch_feeds)
+
+
+def initialized(pelican):
+    from pelican.settings import DEFAULT_CONFIG
+    DEFAULT_CONFIG.setdefault(WEBRING_FEED_URLS_STR, [])
+    DEFAULT_CONFIG.setdefault(WEBRING_MAX_ARTICLES_STR, 3)
+    DEFAULT_CONFIG.setdefault(WEBRING_ARTICLES_PER_FEED_STR, 1)
+    DEFAULT_CONFIG.setdefault(WEBRING_SUMMARY_LENGTH_STR, 128)
+    DEFAULT_CONFIG.setdefault(WEBRING_CLEAN_SUMMARY_HTML_STR, True)
+    if pelican:
+        for name, value in DEFAULT_CONFIG.items():
+            if name.startswith('WEBRING'):
+                pelican.settings.setdefault(name, value)
+
+
+def fetch_feeds(generators):
+    settings = get_pelican_settings(generators)
+
+    fetched_articles = []
+    for feed_url in settings[WEBRING_FEED_URLS_STR]:
+        feed_html = get_feed_html(feed_url)
+        if feed_html:
+            fetched_articles.extend(
+                get_feed_articles(feed_html, feed_url, settings)
+            )
+
+    fetched_articles = sorted(
+        fetched_articles, key=attrgetter('date'), reverse=True)
+
+    max_articles = settings[WEBRING_MAX_ARTICLES_STR]
+    if len(fetched_articles) > max_articles:
+        fetched_articles = fetched_articles[:max_articles]
+
+    for generator in generators:
+        generator.context['webring_articles'] = fetched_articles
+
+
+def get_pelican_settings(generators):
+    """All generators contain a reference to the Pelican settings."""
+    assert len(generators) > 0
+    return generators[0].settings
+
+
+def get_feed_html(feed_url):
+    try:
+        req = Request(feed_url)
+        req.add_header(
+            'User-Agent',
+            (
+                'Webring Pelican plugin/{} '
+                + '+https://github.com/pelican/pelican-plugins'
+            ).format(WEBRING_VERSION)
+        )
+        return urlopen(req).read().decode('utf-8')
+    except URLError as e:
+        if hasattr(e, 'reason'):
+            log.warning('webring plugin: failed to connect to feed url (%s).',
+                        feed_url, e.reason)
+        if hasattr(e, 'code'):
+            log.warning('webring plugin: server returned %s error (%s).',
+                        e.code, feed_url)
+    except ValueError as e:
+        log.warning('webring plugin: wrong url provided (%s).', e)
+
+
+def get_feed_articles(feed_html, feed_url, settings):
+    parsed_feed = feedparser.parse(feed_html)
+
+    if parsed_feed.bozo:
+        log.warning('webring plugin: possible malformed or invalid feed (%s). '
+                    'Error=%s', feed_url, parsed_feed.bozo_exception)
+
+    articles = []
+    for n, entry in enumerate(parsed_feed.entries):
+        if n == settings[WEBRING_ARTICLES_PER_FEED_STR]:
+            break
+
+        published_dt = get_entry_datetime(entry)
+        truncated_summary = get_entry_summary(entry, settings)
+
+        articles.append(
+            Article(
+                title=entry.get('title', ''),
+                link=entry.get('link', ''),
+                date=published_dt,
+                summary=truncated_summary,
+                source_title=parsed_feed.feed.get('title', ''),
+                source_link=parsed_feed.feed.get('link', ''),
+                source_id=parsed_feed.feed.get('id', '')))
+
+    return articles
+
+
+def get_entry_datetime(entry):
+    try:
+        return utils.get_date(entry.get('published', ''))
+    except ValueError:
+        log.warning(
+            'Webring Plugin: Invalid date on feed entry titled "%s"'
+            % entry.get('title', 'Unknown title'))
+        return utils.SafeDatetime.now()
+
+
+def get_entry_summary(entry, settings):
+    # https://stackoverflow.com/a/12982689/11441
+    def cleanhtml(raw_html):
+        cleanr = re.compile('<.*?>')
+        cleantext = re.sub(cleanr, '', raw_html)
+        return cleantext
+
+    summary = entry.get('description', '')
+
+    # feedparser sanitizes html by default, but it can still contain html tags.
+    if settings[WEBRING_CLEAN_SUMMARY_HTML_STR]:
+        summary = cleanhtml(summary)
+
+    if len(summary) > settings[WEBRING_SUMMARY_LENGTH_STR]:
+        words = summary.split()
+        summary = ''
+        for w in words:
+            chars_left = settings[WEBRING_SUMMARY_LENGTH_STR] - len(summary)
+            if chars_left > 0:
+                summary += w if chars_left < len(w) else w[:chars_left]
+                summary += ' '
+            else:
+                break
+        summary = summary[:len(summary)-1] + "..."
+
+    return summary
diff --git a/pelican-plugins/yuicompressor/.gitignore b/pelican-plugins/yuicompressor/.gitignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/pelican-plugins/yuicompressor/.gitignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/pelican-plugins/yuicompressor/README.md b/pelican-plugins/yuicompressor/README.md
new file mode 100644
index 0000000..1b7101f
--- /dev/null
+++ b/pelican-plugins/yuicompressor/README.md
@@ -0,0 +1,37 @@
+# YUI Compressor Plugin
+
+A pelican plugin that minifies CSS/JS files using YUI Compressor during the
+building step.
+
+# Installation
+
+YUI Compressor needs to be present on your system. One way to obtain it is by
+installing it using pip:
+
+Important: This method assumes that JRE is already installed.
+
+```bash
+pip install yuicompressor
+```
+
+More information about YUI Compressor: https://github.com/yui/yuicompressor
+
+# Instructions
+
+Add `yuicompressor` to `pelicanconf.py` after installing YUI Compressor:
+
+```python
+PLUGINS = ['yuicompressor']
+```
+
+By default, this plugin expects the YUI Compressor executable to be named
+`yuicompressor`. This can be changed by defining `YUICOMPRESSOR_EXECUTABLE` in
+`pelicanconf.py`:
+
+```python
+YUICOMPRESSOR_EXECUTABLE = 'yui-compressor'
+```
+
+# Licence
+
+GNU AFFERO GENERAL PUBLIC LICENSE Version 3
diff --git a/pelican-plugins/yuicompressor/__init__.py b/pelican-plugins/yuicompressor/__init__.py
new file mode 100644
index 0000000..35e6c41
--- /dev/null
+++ b/pelican-plugins/yuicompressor/__init__.py
@@ -0,0 +1,2 @@
+# -*- coding: utf-8 -*-
+from .yuicompressor import *
diff --git a/pelican-plugins/yuicompressor/yuicompressor.py b/pelican-plugins/yuicompressor/yuicompressor.py
new file mode 100644
index 0000000..e4a7bd5
--- /dev/null
+++ b/pelican-plugins/yuicompressor/yuicompressor.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+
+from pelican import signals
+from subprocess import check_call
+import logging
+import os
+
+logger = logging.getLogger(__name__)
+
+"""
+Minify CSS and JS files in output path with YUI Compressor from Yahoo.
+Required: an existing installation of YUI Compressor.
+"""
+
+def minify(pelican):
+    """
+      Minify CSS and JS with YUI Compressor
+      :param pelican: The Pelican instance
+    """
+    executable = pelican.settings.get('YUICOMPRESSOR_EXECUTABLE', 'yuicompressor')
+    for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']):
+        for name in filenames:
+            if os.path.splitext(name)[1] in ('.css','.js'):
+                filepath = os.path.join(dirpath, name)
+                logger.info('minify %s', filepath)
+                check_call([executable, '--charset', 'utf-8', filepath, '-o', filepath])
+
+def register():
+    signals.finalized.connect(minify)
-- 
GitLab