From 5dd7481a342dc0d936f7d76974d0ed41db2385b7 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 12:10:11 +0200 Subject: [PATCH 01/46] updating README and gitignore for Python --- .gitignore | 6 ++-- README.md | 81 +++++++++++++++++++----------------------------------- 2 files changed, 33 insertions(+), 54 deletions(-) diff --git a/.gitignore b/.gitignore index 16d36e4..50f57e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -docs/ -source/ \ No newline at end of file +*.ark +*.arkc +*.py[ouc] +__pycache__/ diff --git a/README.md b/README.md index c434146..b169980 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,51 @@ # ArkDoc ![release](https://img.shields.io/github/v/release/ArkScript-lang/ArkDoc) -It's a **Lite** documentation generator for arkscript based on Mkdocs, and written in ruby. - ![licence](https://img.shields.io/badge/licence-MPL%202.0-2) ![code size](https://img.shields.io/github/languages/code-size/ArkScript-lang/ArkDoc) -![Ruby](https://github.com/ArkScript-lang/ArkDoc/workflows/Ruby/badge.svg) + +A documentation generator for ArkScript. ## Dependencies -* Python >= 2.7 (Python 3.7 tested and working) -* Ruby >= 2.5 +* Python >= 3.7 ## Usage ```bash -# first, clone repository ~$ git clone https://github.com/ArkScript-lang/ArkDoc.git -~$ cd ArkDoc -# put your arkscript files in this folder (default source directory) -# you can change it with -s option -~/ArkDoc$ mkdir source -# install Mkdocs -~$ pip install mkdocs -# running -~/ArkDoc$ ruby ArkDoc.rb --help -DESCRIPTION - Lite documentation generator based on Mkdocs - -SYNOPSIS - ruby ArkDoc.rb -h - ruby ArkDoc.rb -v - ruby ArkDoc.rb -g [-s ] - ruby ArkDoc.rb -md [-s ] - -OPTIONS - -h, --help Print this help message - -v, --version Print ArkDoc version and exit - -g, --generate Generate the website and exit - -md, --markdown Generate the markdown files and exit - -s, --source Set the path of souree files directory - -LICENCE - Mozilla Public License 2.0 ``` ## Syntax -You can be find the syntax ![here](./Syntax.md). + +- `@meta ` +- `@brief ` +- `@param ` +- `@details ` +- `=begin` / code block / `=end` +- `@author ,,...` ## Example -```clojure -### -# @brief Reverse a string. -# @param _string the string to reverse -# @details The original string is left unmodified. + +```lisp +# @meta List +# @brief Iterate over a given list and run a given function on every element. +# @param _L the list to iterate over +# @param _func the function to call on each element +# @details The original list is left unmodified. # =begin -# (import "String.ark") -# (let message "hello world, I like goats") -# (let reversed (str:reverse message)) # => staog ekil I ,dlrow olleh +# (import "List.ark") +# (let collection [1 2 5 12]) +# (list:forEach collection (fun (element) { +# (print element) +# })) # =end -# @author https://github.com/Natendrtfm -## -(let str:reverse (fun (_string) { - (mut _index (- (len _string) 1)) - (mut _returnedString "") - (while (> _index -1) { - (set _returnedString (+ _returnedString (@ _string _index))) - (set _index (- _index 1)) +# @author https://github.com/SuperFola +(let list:forEach (fun (_L _func) { + (mut _index 0) + (while (< _index (len _L)) { + (mut _element (@ _L _index)) + (_func _element) + (set _index (+ 1 _index)) }) - _returnedString })) ``` - -![string](./images/example.png) \ No newline at end of file From 73cb423fa91f0f882f4331df459f83bbd51f74c9 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 12:10:25 +0200 Subject: [PATCH 02/46] setting up base Python project --- arkdoc/__init__.py | 1 + arkdoc/__main__.py | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 arkdoc/__init__.py create mode 100644 arkdoc/__main__.py diff --git a/arkdoc/__init__.py b/arkdoc/__init__.py new file mode 100644 index 0000000..5f7ce86 --- /dev/null +++ b/arkdoc/__init__.py @@ -0,0 +1 @@ +#!/usr/bin/env python3 \ No newline at end of file diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py new file mode 100644 index 0000000..72f340f --- /dev/null +++ b/arkdoc/__main__.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import sys +import argparse + + +EXIT_SUCCESS = 0 +EXIT_FAILURE = 1 + + +def main() -> int: + parser = argparse.ArgumentParser(description='ArkScript Documentation generator') + + args = parser.parse_args() + print(args) + + return EXIT_SUCCESS + + +if __name__ == '__main__': + sys.exit(main()) \ No newline at end of file From 8ae5a9bd4b8b4805dbce47dc2e6325a6e1976840 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 12:10:32 +0200 Subject: [PATCH 03/46] adding GitHub action linter --- .github/workflows/linter.yml | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/linter.yml diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml new file mode 100644 index 0000000..8d36720 --- /dev/null +++ b/.github/workflows/linter.yml @@ -0,0 +1,41 @@ +name: super-linter + +on: + push: + branches: * + pull_request: + branches: * + +jobs: + build: + name: Lint Code Base + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + with: + # Full git history is needed to get a proper list of changed files within `super-linter` + fetch-depth: 0 + + ################################ + # Run Linter against code base # + ################################ + - name: Lint Code Base + uses: docker://github/super-linter:v3.13.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VALIDATE_ALL_CODEBASE: false + VALIDATE_BASH: true + VALIDATE_BASH_EXEC: true + VALIDATE_CSS: true + VALIDATE_DOCKERFILE: true + VALIDATE_DOCKERFILE_HADOLINT: true + VALIDATE_ENV: true + VALIDATE_HTML: true + VALIDATE_JSON: true + VALIDATE_LATEX: true + VALIDATE_PYTHON_BLACK: true + VALIDATE_POWERSHELL: true + VALIDATE_SHELL_SHFMT: true + VALIDATE_SQL: true \ No newline at end of file From b428e84edd9c4a677edb79b3196b915346da6b06 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 12:21:57 +0200 Subject: [PATCH 04/46] merging with master --- .github/workflows/ci.yml | 37 - ArkDoc.rb | 67 - CHANGELOG.md | 18 +- Cli.rb | 87 - Syntax.md | 52 - examples/String.ark | 250 - images/example.png | Bin 88489 -> 0 bytes src/Extend.rb | 9 - src/Format.rb | 26 - src/Generator.rb | 117 - src/Lexer.rb | 121 - src/Parser.rb | 133 - themes/dark/404.html | 13 - themes/dark/base.html | 139 - themes/dark/content.html | 9 - themes/dark/css/base.css | 289 - themes/dark/css/base.min.css | 292 - themes/dark/css/bootstrap-custom.css | 5309 --------------- themes/dark/css/bootstrap-custom.min.css | 6735 -------------------- themes/dark/css/dark.css | 89 - themes/dark/css/dark.min.css | 114 - themes/dark/css/highlight.css | 99 - themes/dark/css/highlight.min.css | 1 - themes/dark/fonts/fontawesome-webfont.eot | Bin 38205 -> 0 bytes themes/dark/fonts/fontawesome-webfont.svg | 414 -- themes/dark/fonts/fontawesome-webfont.ttf | Bin 80652 -> 0 bytes themes/dark/fonts/fontawesome-webfont.woff | Bin 44432 -> 0 bytes themes/dark/img/favicon.ico | Bin 1150 -> 0 bytes themes/dark/img/grid1.png | Bin 251 -> 0 bytes themes/dark/img/grid10.png | Bin 495 -> 0 bytes themes/dark/img/grid11.png | Bin 253 -> 0 bytes themes/dark/img/grid12.png | Bin 260 -> 0 bytes themes/dark/img/grid13.png | Bin 266 -> 0 bytes themes/dark/img/grid14.png | Bin 240 -> 0 bytes themes/dark/img/grid15.png | Bin 442 -> 0 bytes themes/dark/img/grid16.png | Bin 442 -> 0 bytes themes/dark/img/grid17.png | Bin 442 -> 0 bytes themes/dark/img/grid18.png | Bin 457 -> 0 bytes themes/dark/img/grid19.png | Bin 427 -> 0 bytes themes/dark/img/grid2.png | Bin 271 -> 0 bytes themes/dark/img/grid20.png | Bin 493 -> 0 bytes themes/dark/img/grid3.png | Bin 266 -> 0 bytes themes/dark/img/grid4.png | Bin 244 -> 0 bytes themes/dark/img/grid5.png | Bin 442 -> 0 bytes themes/dark/img/grid6.png | Bin 460 -> 0 bytes themes/dark/img/grid7.png | Bin 442 -> 0 bytes themes/dark/img/grid8.png | Bin 457 -> 0 bytes themes/dark/img/grid9.png | Bin 456 -> 0 bytes themes/dark/js/base.js | 225 - themes/dark/js/bootstrap-3.0.3.min.js | 7 - themes/dark/keyboard-modal.html | 40 - themes/dark/main.html | 10 - themes/dark/mkdocs_theme.yml | 13 - themes/dark/nav-sub.html | 14 - themes/dark/nav.html | 109 - themes/dark/search-modal.html | 27 - themes/dark/toc.html | 13 - 57 files changed, 12 insertions(+), 14866 deletions(-) delete mode 100644 .github/workflows/ci.yml delete mode 100644 ArkDoc.rb delete mode 100644 Cli.rb delete mode 100644 Syntax.md delete mode 100644 examples/String.ark delete mode 100644 images/example.png delete mode 100644 src/Extend.rb delete mode 100644 src/Format.rb delete mode 100644 src/Generator.rb delete mode 100644 src/Lexer.rb delete mode 100644 src/Parser.rb delete mode 100644 themes/dark/404.html delete mode 100644 themes/dark/base.html delete mode 100644 themes/dark/content.html delete mode 100644 themes/dark/css/base.css delete mode 100644 themes/dark/css/base.min.css delete mode 100644 themes/dark/css/bootstrap-custom.css delete mode 100644 themes/dark/css/bootstrap-custom.min.css delete mode 100644 themes/dark/css/dark.css delete mode 100644 themes/dark/css/dark.min.css delete mode 100644 themes/dark/css/highlight.css delete mode 100644 themes/dark/css/highlight.min.css delete mode 100755 themes/dark/fonts/fontawesome-webfont.eot delete mode 100755 themes/dark/fonts/fontawesome-webfont.svg delete mode 100755 themes/dark/fonts/fontawesome-webfont.ttf delete mode 100755 themes/dark/fonts/fontawesome-webfont.woff delete mode 100644 themes/dark/img/favicon.ico delete mode 100644 themes/dark/img/grid1.png delete mode 100644 themes/dark/img/grid10.png delete mode 100644 themes/dark/img/grid11.png delete mode 100644 themes/dark/img/grid12.png delete mode 100644 themes/dark/img/grid13.png delete mode 100644 themes/dark/img/grid14.png delete mode 100644 themes/dark/img/grid15.png delete mode 100644 themes/dark/img/grid16.png delete mode 100644 themes/dark/img/grid17.png delete mode 100644 themes/dark/img/grid18.png delete mode 100644 themes/dark/img/grid19.png delete mode 100644 themes/dark/img/grid2.png delete mode 100644 themes/dark/img/grid20.png delete mode 100644 themes/dark/img/grid3.png delete mode 100644 themes/dark/img/grid4.png delete mode 100644 themes/dark/img/grid5.png delete mode 100644 themes/dark/img/grid6.png delete mode 100644 themes/dark/img/grid7.png delete mode 100644 themes/dark/img/grid8.png delete mode 100644 themes/dark/img/grid9.png delete mode 100644 themes/dark/js/base.js delete mode 100644 themes/dark/js/bootstrap-3.0.3.min.js delete mode 100644 themes/dark/keyboard-modal.html delete mode 100644 themes/dark/main.html delete mode 100644 themes/dark/mkdocs_theme.yml delete mode 100644 themes/dark/nav-sub.html delete mode 100644 themes/dark/nav.html delete mode 100644 themes/dark/search-modal.html delete mode 100644 themes/dark/toc.html diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 25e27c6..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Ruby - -on: - push: - branches: [master] - pull_request: - branches: [master] - -jobs: - test: - - runs-on: ${{ matrix.os }}-latest - - strategy: - matrix: - os: ["ubuntu", "macos"] - ruby-version: [2.7.0, 2.6.0, 2.5.0] - - steps: - - - uses: actions/checkout@v2 - - - name: Set up Ruby ${{ matrix.ruby-version }} - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby-version }} - - - name: Test help - shell: bash - run: ruby ArkDoc.rb -h - - - name: Test generate - shell: bash - run: | - mkdir source - cp examples/String.ark source/String.ark - ruby ArkDoc.rb -md "ArkScript" \ No newline at end of file diff --git a/ArkDoc.rb b/ArkDoc.rb deleted file mode 100644 index 6e9810b..0000000 --- a/ArkDoc.rb +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env ruby -wKU -$LOAD_PATH << "src" -$LOAD_PATH << '.' -require "Cli.rb" -require "Generator.rb" - -include Cli - -# option declaration -option ["-v", "--version"] do - puts("Version 1.0.1") - exit(0) -end - -option ["-h", "--help"] do - puts("DESCRIPTION") - puts(" Lite documentation generator based on Mkdocs") - puts("") - puts("SYNOPSIS") - puts(" ruby ArkDoc.rb -h") - puts(" ruby ArkDoc.rb -v") - puts(" ruby ArkDoc.rb -g [-s ]") - puts(" ruby ArkDoc.rb -md [-s ]") - puts("") - puts("OPTIONS") - puts(" -h, --help Print this help message") - puts(" -v, --version Print ArkDoc version and exit") - puts(" -g, --generate Generate the website and exit") - puts(" -md, --markdown Generate the markdown files and exit") - puts(" -b, --build Generate the website using markdown files previously generate with -md option") - puts(" -s, --source Set the location of source files") - puts("") - puts("LICENCE") - puts(" Mozilla Public License 2.0") - exit(0) -end - -option ["-s", "--source"] - -option ["-g", "--generate"] do - generator = Generator.new - name = get("g") - src = if called?(["-s", "--source"]) - get("s") - else - "" - end - - Dir.chdir(generator.generate(name, src)) - puts(%x{mkdocs build}) - exit(0) -end - -option ["-md", "--markdown"] do - generator = Generator.new - name = get("md") - src = if called?(["-s", "--source"]) - get("s") - else - "" - end - - generator.generate(name, src) - exit(0) -end - -option ["-b", "--build"] # unusable \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f12f20..4a6a131 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,12 @@ # Change Log -## 1.0.0 +## [Unreleased] ### Added -- markdown file generation -- mkdocs tree support -- doc html generation -## 1.0.1 +### Changed +- rewriting the project in Python 3 + +## [v0.0.2] - 2020-12-28 ### Added - options : `--md` for generation of markdown files only, `--build` for generate the static site and `--source` to set path of source code for generate site or markdown file - default theme (dark) @@ -15,4 +15,10 @@ - code structure - Review of : Lexer, Parser and Generator - syntax -- generate option \ No newline at end of file +- generate option + +## [v0.0.1] - 2020-08-31 +### Added +- markdown file generation +- mkdocs tree support +- doc html generation \ No newline at end of file diff --git a/Cli.rb b/Cli.rb deleted file mode 100644 index b80ec11..0000000 --- a/Cli.rb +++ /dev/null @@ -1,87 +0,0 @@ -module Cli - @@options = [] - @@map = {} - - def add - i = 0 - - while i < ARGF.argv.size - j = 0 - - while j < @@options.size - if ARGF.argv[i] == @@options[j] - @@map[@@options[j].delete("-")] = ARGF.argv[i + 1] - elsif @@options[j].class == ARGF.argv.class - k = 0 - - while k < @@options[j].size - if ARGF.argv[i] == @@options[j][k] - @@map[@@options[j][k].delete("-")] = ARGF.argv[i + 1] - end - - k += 1 - end - end - - j += 1 - end - - i += 1 - end - end - - def option?(pseudo_option) - return true if @@options.include?(pseudo_option) - - return false - end - - def get(option) - if @@map.keys.include?(option) - return @@map[option] - else - keys_ary = [] - (@@options.each {}.to_a.delete_if { |ary| ary.class != Array }).each { |ary| - keys_ary << [ary[0].delete('-'), ary[1].delete('-')] - } - - keys_ary.each { |ary| - ary.each_index { |i| - if ary[i] == option - case i - when 0 - return @@map[ary[1]] - when 1 - return @@map[ary[0]] - end - end - } - } - end - - return nil - end - - def called?(option) - if option?(option) && @@map.keys.include?(option.delete('-')) - return true - end - - if option.class == Array && option?(option) - if @@map.keys.include?(option[0].delete('-')) || @@map.keys.include?(option[1].delete('-')) - return true - end - end - - return false - end - - def option(new_option, &block) - @@options << new_option if !option?(new_option) - add - - if block_given? && called?(new_option) - block.call - end - end -end \ No newline at end of file diff --git a/Syntax.md b/Syntax.md deleted file mode 100644 index 023b4b6..0000000 --- a/Syntax.md +++ /dev/null @@ -1,52 +0,0 @@ -# Syntax - -The new syntax is inspired by doxygen syntax. - -The content of documentation must be in a block and each line must begin by comment char (for arkscript hash **#**), using this syntax. -Exanple : -``` -### -#...documentation content -## -``` -## Main keywords - -`@meta` : page informations (title, desciprtion of page or section), create new page at every call, then only one call for every files to avoid undefined behavior of parser. - -`@brief` : speed function presentation - -`@details` : details about function (object modification) - -`@param` : explanation or details about each parameter of function - -`@author` : information about the author of the function - -### Code example - -Same as documentation content the example about function usage is a block, and you should use this syntax, for make a code example in arkdoc. -Example : - -``` -### -#...documentation content -# =begin -# ...example -# =end -## -``` - -### Full template - -This template is a clean way to format your documentation in source file, for a good transformation in page - -```clojure -### -# @brief (description of function) -# @param (details about each parameter of function) -# @details (details about impact of function on a object or paramater) -# =begin -# (example) -# =end -# @author (where we can find the author of function code) -## -``` \ No newline at end of file diff --git a/examples/String.ark b/examples/String.ark deleted file mode 100644 index a231de9..0000000 --- a/examples/String.ark +++ /dev/null @@ -1,250 +0,0 @@ -### -# @meta String -# @brief Converts the given character to lowercase. -# @param _string the string to make lowercase -# @details The original string is left unmodified. -# =begin -# (import "String.ark") -# (let message "HeLLo World, I like cheese") -# (let new (str:toLower message)) # => hello world, i like cheese -# =end -# @author https://github.com/Natendrtfm -## -(let str:toLower (fun (text) { - (mut _index 0) - (mut _e "") - (mut _output "") - (while (< _index (len text)) { - (set _e (@ text _index)) - #Conditions - (if (= _e "A") (set _e "a") - (if (= _e "B") (set _e "b") - (if (= _e "C") (set _e "c") - (if (= _e "D") (set _e "d") - (if (= _e "E") (set _e "e") - (if (= _e "F") (set _e "f") - (if (= _e "G") (set _e "g") - (if (= _e "H") (set _e "h") - (if (= _e "I") (set _e "i") - (if (= _e "J") (set _e "j") - (if (= _e "K") (set _e "k") - (if (= _e "L") (set _e "l") - (if (= _e "M") (set _e "m") - (if (= _e "N") (set _e "n") - (if (= _e "O") (set _e "o") - (if (= _e "P") (set _e "p") - (if (= _e "Q") (set _e "q") - (if (= _e "R") (set _e "r") - (if (= _e "S") (set _e "s") - (if (= _e "T") (set _e "t") - (if (= _e "U") (set _e "u") - (if (= _e "V") (set _e "v") - (if (= _e "W") (set _e "w") - (if (= _e "X") (set _e "x") - (if (= _e "Y") (set _e "y") - (if (= _e "Z") (set _e "z") - (if (= _e "Â") (set _e "â") - (if (= _e "À") (set _e "à") - (if (= _e "Á") (set _e "á") - (if (= _e "Ã") (set _e "ã") - (if (= _e "Ä") (set _e "ä") - (if (= _e "Å") (set _e "å") - (if (= _e "Æ") (set _e "æ") - (if (= _e "Ç") (set _e "ç") - (if (= _e "È") (set _e "è") - (if (= _e "É") (set _e "é") - (if (= _e "Ê") (set _e "ê") - (if (= _e "Ë") (set _e "ë") - (if (= _e "Ì") (set _e "ì") - (if (= _e "Í") (set _e "í") - (if (= _e "Î") (set _e "î") - (if (= _e "Ï") (set _e "ï") - (if (= _e "Ô") (set _e "ô") ()))))))))))))))))))))))))))))))))))))))))))) - # End conditions - (set _output (+ _output _e)) - (set _index (+ _index 1)) - }) - _output -})) - -### -# @brief Converts the given character to uppercase. -# @param _string the string to make uppercase -# @details The original string is left unmodified. -# =begin -# (import "String.ark") -# (let message "hello world, I like cheese") -# (let new (str:toUpper message)) # => HELLO WORLD, I LIKE CHEESE -# =end -# @author https://github.com/Natendrtfm -## -(let str:toUpper (fun (_string) { - (mut _index 0) - (mut _e "") - (mut _output "") - (while (< _index (len _string)) { - (set _e (@ _string _index)) - #Conditions - (if (= _e "a") (set _e "A") - (if (= _e "b") (set _e "B") - (if (= _e "c") (set _e "C") - (if (= _e "d") (set _e "D") - (if (= _e "e") (set _e "E") - (if (= _e "f") (set _e "F") - (if (= _e "g") (set _e "G") - (if (= _e "h") (set _e "H") - (if (= _e "i") (set _e "I") - (if (= _e "j") (set _e "J") - (if (= _e "k") (set _e "K") - (if (= _e "l") (set _e "L") - (if (= _e "m") (set _e "M") - (if (= _e "n") (set _e "N") - (if (= _e "o") (set _e "O") - (if (= _e "p") (set _e "P") - (if (= _e "q") (set _e "Q") - (if (= _e "r") (set _e "R") - (if (= _e "s") (set _e "S") - (if (= _e "t") (set _e "T") - (if (= _e "u") (set _e "U") - (if (= _e "w") (set _e "W") - (if (= _e "v") (set _e "V") - (if (= _e "x") (set _e "X") - (if (= _e "y") (set _e "Y") - (if (= _e "z") (set _e "Z") - (if (= _e "a") (set _e "Â") - (if (= _e "à") (set _e "À") - (if (= _e "á") (set _e "Á") - (if (= _e "ã") (set _e "Ã") - (if (= _e "ä") (set _e "Ä") - (if (= _e "å") (set _e "Å") - (if (= _e "æ") (set _e "Æ") - (if (= _e "ç") (set _e "Ç") - (if (= _e "è") (set _e "È") - (if (= _e "é") (set _e "É") - (if (= _e "ê") (set _e "Ê") - (if (= _e "ë") (set _e "Ë") - (if (= _e "ì") (set _e "Ì") - (if (= _e "í") (set _e "Í") - (if (= _e "î") (set _e "Î") - (if (= _e "ï") (set _e "Ï") - (if (= _e "ô") (set _e "Ô") ()))))))))))))))))))))))))))))))))))))))))))) - #End of conditions - (set _output (+ _output _e)) - (set _index (+ _index 1)) - }) - _output -})) - -### -# @brief Reverse a string. -# @param _string the string to reverse -# @details The original string is left unmodified. -# =begin -# (import "String.ark") -# (let message "hello world, I like goats") -# (let reversed (str:reverse message)) # => staog ekil I ,dlrow olleh -# =end -# @author https://github.com/Natendrtfm -## -(let str:reverse (fun (_string) { - (mut _index (- (len _string) 1)) - (mut _returnedString "") - (while (> _index -1) { - (set _returnedString (+ _returnedString (@ _string _index))) - (set _index (- _index 1)) - }) - _returnedString -})) - -### -# @brief Get a slice of a given string, from a given index with a given length -# @param _string the string to get a slice of -# @param _startingIndex the index in the string where to start slicing -# @param _length the length of the slice -# @details The original string is left unmodified. Example: -# =begin -# (import "String.ark") -# (let message "hello world, I like goats") -# (let slice (str:slice message 6 4)) # => worl -# =end -# @author https://github.com/Natendrtfm -## -(let str:slice (fun (_string _startingIndex _length) - (if (= _length 0) - "" - { - (assert (and (>= _startingIndex 0) (< _startingIndex (len _string))) "slice start index must be in range [0, string length[") - - (mut _returnedString "") - (mut _index _startingIndex) - (let _end (if (> _length (len _string)) (len _string) (+ _index _length))) - - (while (< _index _end) { - (set _returnedString (+ _returnedString (@ _string _index))) - (set _index (+ _index 1)) - }) - _returnedString - }) -)) - -### -# @brief Split a string in multiple substrings in a list, given a separator (single character) -# @param _string the string to split -# @param _separator the separator to use for splitting (single char) -# @details Returns a list of strings. Example : -# =begin -# (import "String.ark") -# (let message "hello world, I like boats") -# (let splitted (str:split message " ")) -# =end -# @author https://github.com/Natendrtfm -## -(let str:split (fun (_string _separator) { - (assert (!= "" _separator) "Separator of split can not be empty") - (assert (= 1 (len _separator)) "Separator length must be equal to 1") - (mut _index 0) - (mut _word "") - (mut _letter "") - (mut _output []) - - (while (< _index (len _string)) { - (set _letter (@ _string _index)) - (if (= _letter _separator) - { - (set _output (append _output _word)) - (set _word "") - } - (set _word (+ _word _letter))) - (set _index (+ _index 1)) - }) - (if (empty? _word) - _output - (append _output _word)) -})) - -### -# @brief Replace a substring in a given string -# @param _string base string who contain pattern to replace by new sub string given -# @param _pattern sub string pattern to replace -# @param _new string who must replace the pattern -# @details The original string isn't modified. -# =begin -# (import "String.ark") -# (let message "hello XXX, do you like the name XXX?") -# (print (str:replace message "XXX" "Harry")) # hello Harry, do you like the name Harry? -# =end -## -(let str:replace (fun (_string _pattern _new) { - (mut _out _string) - (mut _idx (str:find _out _pattern)) - (let _pattern_sz (len _pattern)) - - (while (!= -1 _idx) { - (set _out (+ - (str:slice _out 0 _idx) - _new - (str:slice _out (+ _idx _pattern_sz) (- (len _out) (+ _idx _pattern_sz))))) - (set _idx (str:find _out _pattern)) - }) - _out -})) \ No newline at end of file diff --git a/images/example.png b/images/example.png deleted file mode 100644 index a5aae4a8250c04a70374c550abb9ce72c1a36b7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88489 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 QNI=sd;HM<%6Ei;i6C=@7kpKVy diff --git a/src/Extend.rb b/src/Extend.rb deleted file mode 100644 index 7bc04b1..0000000 --- a/src/Extend.rb +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env ruby -wKU - -class String - - def refine - return self.lstrip.delete_prefix("#").lstrip - end - -end \ No newline at end of file diff --git a/src/Format.rb b/src/Format.rb deleted file mode 100644 index 7a5b7e4..0000000 --- a/src/Format.rb +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby -wKU - -# special chars -NewLine = 10.chr -Bold = "**" -Brackets = ['[', ']'] -Parenthesis = ['(', ')'] - -# parser key elements format -Title = "### " -Function = "#### " -Code = "```" -Details = "_" - -# generator -Each = '-' -Separator = ' ' -Page = "##### " - -# theming -ThemeTag = "theme:" -ThemeNameTag = "name:" -ThemeDirTag = "custom_dir:" -ThemeDir = "../../themes/" -# default themes -DarkTheme = "dark" \ No newline at end of file diff --git a/src/Generator.rb b/src/Generator.rb deleted file mode 100644 index 9343c2e..0000000 --- a/src/Generator.rb +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env ruby -wKU -$LOAD_PATH << '.' -require "Parser.rb" - - -class Generator - attr_accessor :doc_name - - def initialize - @parser = Parser.new - @docs_path = "docs/" - end - - def index(doc_name, md_dir) - index_md = File.open( md_dir + "index.md", 'w') - - index_md.write("# #{doc_name}") - index_md.write(NewLine) - index_md.write(NewLine) - @parser.parsed.keys.sort.each { |key| - index_md.write(NewLine) - index_md.write(Page + "[#{key.capitalize}]" + "(#{key}.md)") - index_md.write("") - index_md.write(NewLine) - } - - index_md.close - end - - def make_yml(doc_name, src_dir = "") - Dir.mkdir(@docs_path) if !Dir.exist?(@docs_path) - doc_path = @docs_path + doc_name - Dir.mkdir(doc_path) if !Dir.exist?(doc_path) - - @parser.lexer.ark_path = src_dir if src_dir != "" - @parser.parse - labels = @parser.parsed.keys.sort - - yml = File.open(doc_path + '/' + "mkdocs.yml", 'w') - - # yaml config file writing - # define site name - yml.write("site_name: ") - yml.write(doc_name + NewLine) - # add pages - yml.write("nav:") - yml.write(NewLine) - - # home page - yml.write(Separator) - yml.write(Each + Separator) - yml.write("Home:") - yml.write(Separator) - yml.write("index.md") - yml.write(NewLine) - - labels.each { |label| - yml.write(Separator) - yml.write(Each + Separator) - yml.write(label.capitalize + ':') - yml.write(Separator) - yml.write(label + ".md") - yml.write(NewLine) - } - - # theming - yml.write(ThemeTag) - yml.write(NewLine) - yml.write(Separator) - yml.write(Separator) - yml.write(ThemeNameTag) - yml.write(Separator) - yml.write("null") - yml.write(NewLine) - yml.write(Separator) - yml.write(Separator) - yml.write(ThemeDirTag) - yml.write(Separator) - yml.write(ThemeDir) - yml.write(DarkTheme) - - # end of write config file - yml.close - - return doc_path - end - - def make_md(doc_name) - md_dir = "docs/" + doc_name + '/' + "docs/" - - if !Dir.exist?(md_dir) - Dir.mkdir(md_dir) - else - old = Dir.glob(md_dir + "/*.md") - old.each { |e| - File.delete(e) - } - end - - # home page - index(doc_name, md_dir) - for file in @parser.parsed.keys - md = File.open(md_dir + file + ".md", 'w') - md << @parser.parsed[file] - md.close - end - end - - def generate(site_name, source_path = "") - path_to_doc = make_yml(site_name, source_path) - puts("ArkDoc - Generation of configuration file") - make_md(site_name) - puts("ArkDoc - Generation of Markdown files") - - return path_to_doc - end -end \ No newline at end of file diff --git a/src/Lexer.rb b/src/Lexer.rb deleted file mode 100644 index ce49871..0000000 --- a/src/Lexer.rb +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env ruby -wKU -$LOAD_PATH << '.' -require "Extend.rb" -require "Format.rb" - -class Lexer - attr_reader :tokens - attr_accessor :ark_path - DocBlock = ["###", "##"] - Code = ["=begin", "=end"] - Keywords = ["@meta", "@brief", "@param", "@author", "@details"] - - def Key(key) Keywords[key].upcase; end - - def Value(key, line) (line.refine)[Keywords[key].size..-1].lstrip; end - - def initialize - @ark_path = "source/" - @tokens = [] - end - - def tokenize - Dir.children(@ark_path).each do |file_path| - lines = file_ary(File.open(@ark_path + file_path, 'r')) - file = {}.compare_by_identity - i = 0 - - # doc block - doc_block = false - # code example - code = false - code_str = "" - - while i < lines.size - if lines[i].strip == DocBlock[0] && !doc_block - doc_block = true - elsif lines[i].strip == DocBlock[1] && doc_block - doc_block = false - end - - if doc_block - # code example token - if lines[i].include?(Code[0]) && !code - code = true - elsif lines[i].include?(Code[1]) && code - file["CODE"] = code_str - code_str = "" - code = false - end - - if code - code_str << lines[i].delete_prefix("# ") if !lines[i].include?(Code[0]) - i += 1 - next - end - - # keywords tokens - if lines[i].include?(Keywords[0]) # meta - if (has_desc = Value(0, lines[i]).index(" ")) != nil - meta = Value(0, lines[i]).insert(has_desc, "-").split("-") - # for now support only titles and pages overview - meta[0] = (meta[0] << NewLine) # title - meta[1] = meta[1].lstrip - file["TITLE"] = meta[0] - file["OVERVIEW"] = meta[1] - else - meta = Value(0, lines[i]) - file["TITLE"] = meta - end - i += 1 - elsif lines[i].include?(Keywords[1]) # brief - file["FUN"] = fun(lines, i) - file[Key(1)] = Value(1, lines[i]) - i += 1 - elsif lines[i].include?(Keywords[2]) # param - file[Key(2)] = Value(2, lines[i]) - i += 1 - elsif lines[i].include?(Keywords[3]) # author - file[Key(3)] = Value(3, lines[i]) - i += 1 - elsif lines[i].include?(Keywords[4]) # details - file[Key(4)] = Value(4, lines[i]) - i += 1 - else - i += 1 - end - else - i += 1 - end - - end - - @tokens << file if !file.empty? - end - end - - private - def file_ary(file) - ary = [] - - file.each do |line| - ary << line - end - - return ary - end - - def fun(lines, cur_line) - i = cur_line - - while i < lines.size - if lines[i].include?("let") && lines[i].include?("fun") && !lines[i].include?('#') - return lines[i] - end - - i += 1 - end - - return nil - end -end \ No newline at end of file diff --git a/src/Parser.rb b/src/Parser.rb deleted file mode 100644 index 2437d20..0000000 --- a/src/Parser.rb +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env ruby -wKU -$LOAD_PATH << '.' -require "Lexer.rb" - -class Parser - attr_reader :parsed, :lexer - def Value(token, key) @lexer.tokens[token][key]; end - - def initialize - @lexer = Lexer.new - @parsed = {} - end - - def parse - @lexer.tokenize - i = 0 - - while i < @lexer.tokens.size - file = "" - - for key in @lexer.tokens[i].keys - case key - when "TITLE" - file = Value(i, key).strip - @parsed[file] = "" - @parsed[file] << Title - @parsed[file] << Value(i, key) - next - when "OVERVIEW" - @parsed[file] << NewLine - @parsed[file] << Value(i, key) - @parsed[file] << NewLine - when "FUN" - @parsed[file] << Function - @parsed[file] << function(Value(i, key)) - @parsed[file] << NewLine - when "@BRIEF" - @parsed[file] << Value(i, key) - @parsed[file] << NewLine - when "@PARAM" - param = m_param(Value(i, key)) - @parsed[file] << Bold - @parsed[file] << param[0] - @parsed[file] << Bold - @parsed[file] << param[1] - @parsed[file] << NewLine - when "CODE" - @parsed[file] << Code << NewLine - @parsed[file] << Value(i, key) - @parsed[file] << Code << NewLine - when "@AUTHOR" - @parsed[file] << "Author : " - @parsed[file] << author(Value(i, key)) - @parsed[file] << NewLine - when "@DETAILS" - @parsed[file] << Details - @parsed[file] << Value(i, key).strip - @parsed[file] << Details - @parsed[file] << NewLine << NewLine - end - end - - i += 1 - end - end - - private - def fun_format(fun) - func = fun.gsub("let", "").gsub("fun", "") - buf = "" - - func.each_char do |chr| - next if chr == Parenthesis[0] || chr == Parenthesis[1] - buf << chr - end - - buf = buf.lstrip.rstrip - buf.insert(0, Parenthesis[0]) - buf.insert(-1, Parenthesis[1]) - - return buf - end - - def function(token) - par = 0 - fun = "" - - token.each_char do |chr| - fun << chr - break if par == 4 - par += 1 if chr == Parenthesis[0] || chr == Parenthesis[1] - end - - fun = fun_format(fun) - - return fun - end - - def author(token) - name = "" - i = 0 - slash = 0 - link = "" - - while i < token.size - slash += 1 if token[i] == '/' - i += 1 - if slash == 3 - name = token[i..-1] - break - end - end - - link << Brackets[0] << name.rstrip << Brackets[1] - link << Parenthesis[0] << token.rstrip << Parenthesis[1] - - return link - end - - def m_param(token) - name = "" - details = "" - - token.each_char do |chr| - break if chr == " " - name << chr - end - - details = token[name.size..-1] - - return [name, details] - end -end \ No newline at end of file diff --git a/themes/dark/404.html b/themes/dark/404.html deleted file mode 100644 index 0d58f06..0000000 --- a/themes/dark/404.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "base.html" %} - -{% block content %} - -
-
-

404

-

Page not found

-

Home

-
-
- -{% endblock %} diff --git a/themes/dark/base.html b/themes/dark/base.html deleted file mode 100644 index 71b4a45..0000000 --- a/themes/dark/base.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - {% if config.site_description %}{% endif %} - {% if config.site_author %}{% endif %} - {% if page.canonical_url %}{% endif %} - - - {% block htmltitle %} - {% if page.title %}{{ page.title }} - {% endif %}{{ config.site_name }} - {% endblock %} - - - - - - - - - - - {% if config.theme.highlightjs is defined and config.theme.highlightjs is sameas false %} - - {% else %} - {% if config.theme.colorscheme %} - - {% else %} - - {% endif %} - {% endif %} - - {%- for path in config['extra_css'] %} - - {%- endfor %} - - - - - {% if config.google_analytics %} - - {% endif %} - - {% block extrahead %} {% endblock %} - - - - - {% include "nav.html" %} - -
- {% block content %} - {% if page.meta.disable_toc %} -
{% include "content.html" %}
- {% else %} -
{% include "toc.html" %}
-
{% include "content.html" %}
- {% endif %} - {% endblock %} -
- - {% if not config.theme.disable_footer %} -
- {% block footer %} - {% if not config.theme.disable_footer_except_revision %} -
-

{% if config.copyright %} - {{ config.copyright }}
- {% endif %} - Documentation built with ArkDoc. -

- {% endif %} - - {% if page and page.meta.revision_date %} - {% if config.theme.disable_footer_except_revision %}
{% else %}
{% endif %} - Revised on: {{ page.meta.revision_date }} - {% endif %} - {% endblock %} -
- {% endif %} - - {%- block scripts %} - - - - {% if config.theme.highlightjs is defined and config.theme.highlightjs is sameas false %} - - {% else %} - - {% if config.theme.hljs_languages %} - {%- for lang in config.theme.hljs_languages %} - - {%- endfor %} - {% endif %} - - {% endif %} - - - {% if config.shortcuts %} - - {% endif %} - - {%- for path in config['extra_javascript'] %} - - {%- endfor %} - {%- endblock %} - - {% if 'search' in config['plugins'] %}{%- include "search-modal.html" %}{% endif %} - {%- include "keyboard-modal.html" %} - - - -{% if page and page.is_homepage %} - -{% endif %} diff --git a/themes/dark/content.html b/themes/dark/content.html deleted file mode 100644 index 8b51ac6..0000000 --- a/themes/dark/content.html +++ /dev/null @@ -1,9 +0,0 @@ -{% if page.meta.source %} - -{% endif %} - -{{ page.content }} diff --git a/themes/dark/css/base.css b/themes/dark/css/base.css deleted file mode 100644 index 2d68482..0000000 --- a/themes/dark/css/base.css +++ /dev/null @@ -1,289 +0,0 @@ -html { - scroll-padding-top: 70px; -} - -body { - padding-top: 70px; -} - -p > img { - max-width: 100%; - height: auto; -} - -ul.nav li.first-level { - font-weight: bold; -} - -ul.nav li.third-level { - padding-left: 12px; -} - -div.col-md-3 { - padding-left: 0; -} - -div.col-md-9 { - padding-bottom: 100px; -} - -div.source-links { - float: right; -} - -/* - * Side navigation - * - * Scrollspy and affixed enhanced navigation to highlight sections and secondary - * sections of docs content. - */ - -/* By default it's not affixed in mobile views, so undo that */ -.bs-sidebar.affix { - position: static; -} - -.bs-sidebar.well { - padding: 0; -} - -/* First level of nav */ -.bs-sidenav { - margin-top: 30px; - margin-bottom: 30px; - padding-top: 10px; - padding-bottom: 10px; - border-radius: 5px; -} - -/* All levels of nav */ -.bs-sidebar .nav > li > a { - display: block; - padding: 5px 20px; - z-index: 1; -} -.bs-sidebar .nav > li > a:hover, -.bs-sidebar .nav > li > a:focus { - text-decoration: none; - border-right: 1px solid; -} -.bs-sidebar .nav > .active > a, -.bs-sidebar .nav > .active:hover > a, -.bs-sidebar .nav > .active:focus > a { - font-weight: bold; - background-color: transparent; - border-right: 1px solid; -} - -/* Nav: second level (shown on .active) */ -.bs-sidebar .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - margin-bottom: 8px; -} -.bs-sidebar .nav .nav > li > a { - padding-top: 3px; - padding-bottom: 3px; - padding-left: 30px; - font-size: 90%; -} - -/* Show and affix the side nav when space allows it */ -@media (min-width: 992px) { - .bs-sidebar .nav > .active > ul { - display: block; - } - /* Widen the fixed sidebar */ - .bs-sidebar.affix, - .bs-sidebar.affix-bottom { - width: 213px; - } - .bs-sidebar.affix { - position: fixed; /* Undo the static from mobile first approach */ - top: 80px; - max-height: calc(100% - 180px); - overflow-y: auto; - } - .bs-sidebar.affix-bottom { - position: absolute; /* Undo the static from mobile first approach */ - } - .bs-sidebar.affix-bottom .bs-sidenav, - .bs-sidebar.affix .bs-sidenav { - margin-top: 0; - margin-bottom: 0; - } -} -@media (min-width: 1200px) { - /* Widen the fixed sidebar again */ - .bs-sidebar.affix-bottom, - .bs-sidebar.affix { - width: 263px; - } -} - - -/* Added to support >2 level nav in drop down */ - -.dropdown-submenu { - position: relative; -} - -.dropdown-submenu>.dropdown-menu { - top: 0; - left: 100%; - margin-top: 0px; - margin-left: 0px; -} - -.dropdown-submenu:hover>.dropdown-menu { - display: block; -} - -.dropdown-submenu>a:after { - display: block; - content: " "; - float: right; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 5px 0 5px 5px; - border-left-color: #ccc; - margin-top: 5px; - margin-right: -10px; -} - -.dropdown-submenu:hover>a:after { - border-left-color: #fff; -} - -.dropdown-submenu.pull-left { - float: none; -} - -.dropdown-submenu.pull-left>.dropdown-menu { - left: -100%; - margin-left: 00px; -} -/* Start Bootstrap Callouts CSS Source by Chris Pratt (https://codepen.io/chrisdpratt/pen/IAymB) MIT License*/ -.bs-callout { - padding: 20px; - margin: 20px 0; - border: 1px solid #eee; - border-left-width: 5px; - border-radius: 3px; - background-color: #FCFDFF; -} -.bs-callout h4 { - font-style: normal; - font-weight: 400; - margin-top: 0; - margin-bottom: 5px; -} -.bs-callout p:last-child { - margin-bottom: 0; -} -.bs-callout code { - border-radius: 3px; -} -.bs-callout+.bs-callout { - margin-top: -5px; -} -.bs-callout-default { - border-left-color: #FA023C; /*modified from upstream default by Christopher Simpkins*/ -} -.bs-callout-default h4 { - color: #FA023C; /*modified from upstream default by Christopher Simpkins*/ -} -.bs-callout-primary { - border-left-color: #428bca; -} -.bs-callout-primary h4 { - color: #428bca; -} -.bs-callout-success { - border-left-color: #5cb85c; -} -.bs-callout-success h4 { - color: #5cb85c; -} -.bs-callout-danger { - border-left-color: #d9534f; -} -.bs-callout-danger h4 { - color: #d9534f; -} -.bs-callout-warning { - border-left-color: #f0ad4e; -} -.bs-callout-warning h4 { - color: #f0ad4e; -} -.bs-callout-info { - border-left-color: #5bc0de; -} -.bs-callout-info h4 { - color: #5bc0de; -} -/* End Bootstrap Callouts CSS Source by Chris Pratt */ - -/* Headerlinks */ -.headerlink { - display: none; - padding-left: .5em; -} - -h1:hover .headerlink, h2:hover .headerlink, h3:hover .headerlink, h4:hover .headerlink, h5:hover .headerlink, h6:hover .headerlink { - display: inline-block; -} - -/* Admonitions */ -.admonition { - padding: 20px; - margin: 20px 0; - border: 1px solid #eee; - border-left-width: 5px; - border-radius: 3px; - background-color: #FCFDFF; -} - -.admonition p:last-child { - margin-bottom: 0; -} -.admonition code { - border-radius: 3px; -} -.admonition+.admonition { - margin-top: -5px; -} - -.admonition.note { /* csslint allow: adjoining-classes */ - border-left-color: #428bca; -} - -.admonition.warning { /* csslint allow: adjoining-classes */ - border-left-color: #f0ad4e; -} - -.admonition.danger { /* csslint allow: adjoining-classes */ - border-left-color: #d9534f; -} - -.admonition-title { - font-size: 19px; - font-style: normal; - font-weight: 400; - margin-top: 0; - margin-bottom: 5px; -} - -.admonition.note > .admonition-title { - color: #428bca; -} - -.admonition.warning > .admonition-title { - color: #f0ad4e; -} - -.admonition.danger > .admonition-title { - color: #d9534f; -} diff --git a/themes/dark/css/base.min.css b/themes/dark/css/base.min.css deleted file mode 100644 index 10fe295..0000000 --- a/themes/dark/css/base.min.css +++ /dev/null @@ -1,292 +0,0 @@ -html -{ - scroll-padding-top:70px -} -body -{ - padding-top:70px -} -p>img -{ - max-width:100%; - height:auto -} -ul.nav li.first-level -{ - font-weight:bold -} -ul.nav li.third-level -{ - padding-left:12px -} -div.col-md-3 -{ - padding-left:0 -} -div.col-md-9 -{ - padding-bottom:100px -} -div.source-links -{ - float:right -} -.bs-sidebar.affix -{ - position:static -} -.bs-sidebar.well -{ - padding:0 -} -.bs-sidenav -{ - margin-top:30px; - margin-bottom:30px; - padding-top:10px; - padding-bottom:10px; - border-radius:5px -} -.bs-sidebar .nav>li>a -{ - display:block; - padding:5px 20px; - z-index:1 -} -.bs-sidebar .nav>li>a:hover,.bs-sidebar .nav>li>a:focus -{ - text-decoration:none; - border-right:0px solid -} -.bs-sidebar .nav>.active>a,.bs-sidebar .nav>.active:hover>a,.bs-sidebar .nav>.active:focus>a -{ - font-weight:bold; - background-color:transparent; - border-right:1px solid -} -.bs-sidebar .nav .nav -{ - display:none; - margin-bottom:8px -} -.bs-sidebar .nav .nav>li>a -{ - padding-top:3px; - padding-bottom:3px; - padding-left:30px; - font-size:90% -} -@media(min-width:992px) -{ - .bs-sidebar .nav>.active>ul - { - display:block - } - .bs-sidebar.affix,.bs-sidebar.affix-bottom - { - width:213px - } - .bs-sidebar.affix - { - position:fixed; - top:80px; - max-height:calc(100% - 180px); - overflow-y:auto - } - .bs-sidebar.affix-bottom - { - position:absolute - } - .bs-sidebar.affix-bottom .bs-sidenav,.bs-sidebar.affix .bs-sidenav - { - margin-top:0; - margin-bottom:0 - } -} -@media(min-width:1200px) -{ - .bs-sidebar.affix-bottom,.bs-sidebar.affix - { - width:263px - } -} -.dropdown-submenu -{ - position:relative -} -.dropdown-submenu>.dropdown-menu -{ - top:0; - left:100%; - margin-top:0; - margin-left:0 -} -.dropdown-submenu:hover>.dropdown-menu -{ - display:block -} -.dropdown-submenu>a:after -{ - display:block; - content:" "; - float:right; - width:0; - height:0; - border-color:transparent; - border-style:solid; - border-width:5px 0 5px 5px; - border-left-color:#ccc; - margin-top:5px; - margin-right:-10px -} -.dropdown-submenu:hover>a:after -{ - border-left-color:#fff -} -.dropdown-submenu.pull-left -{ - float:none -} -.dropdown-submenu.pull-left>.dropdown-menu -{ - left:-100%; - margin-left:00px -} -.bs-callout -{ - padding:20px; - margin:20px 0; - border:1px solid #eee; - border-left-width:5px; - border-radius:3px; - background-color:#fcfdff -} -.bs-callout h4 -{ - font-style:normal; - font-weight:400; - margin-top:0; - margin-bottom:5px -} -.bs-callout p:last-child -{ - margin-bottom:0 -} -.bs-callout code -{ - border-radius:3px -} -.bs-callout+.bs-callout -{ - margin-top:-5px -} -.bs-callout-default -{ - border-left-color:#fa023c -} -.bs-callout-default h4 -{ - color:#fa023c -} -.bs-callout-primary -{ - border-left-color:#428bca -} -.bs-callout-primary h4 -{ - color:#428bca -} -.bs-callout-success -{ - border-left-color:#5cb85c -} -.bs-callout-success h4 -{ - color:#5cb85c -} -.bs-callout-danger -{ - border-left-color:#d9534f -} -.bs-callout-danger h4 -{ - color:#d9534f -} -.bs-callout-warning -{ - border-left-color:#f0ad4e -} -.bs-callout-warning h4 -{ - color:#f0ad4e -} -.bs-callout-info -{ - border-left-color:#5bc0de -} -.bs-callout-info h4 -{ - color:#5bc0de -} -.headerlink -{ - display:none; - padding-left:.5em -} -h1:hover .headerlink,h2:hover .headerlink,h3:hover .headerlink,h4:hover .headerlink,h5:hover .headerlink,h6:hover .headerlink -{ - display:inline-block -} -.admonition -{ - padding:20px; - margin:20px 0; - border:1px solid #eee; - border-left-width:5px; - border-radius:3px; - background-color:#fcfdff -} -.admonition p:last-child -{ - margin-bottom:0 -} -.admonition code -{ - border-radius:3px -} -.admonition+.admonition -{ - margin-top:-5px -} -.admonition.note -{ - border-left-color:#428bca -} -.admonition.warning -{ - border-left-color:#f0ad4e -} -.admonition.danger -{ - border-left-color:#d9534f -} -.admonition-title -{ - font-size:19px; - font-style:normal; - font-weight:400; - margin-top:0; - margin-bottom:5px -} -.admonition.note>.admonition-title -{ - color:#428bca -} -.admonition.warning>.admonition-title -{ - color:#f0ad4e -} -.admonition.danger>.admonition-title -{ - color:#d9534f -} diff --git a/themes/dark/css/bootstrap-custom.css b/themes/dark/css/bootstrap-custom.css deleted file mode 100644 index 631252d..0000000 --- a/themes/dark/css/bootstrap-custom.css +++ /dev/null @@ -1,5309 +0,0 @@ -/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ -article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { - display: block; -} -audio, canvas, video { - display: inline-block; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], template { - display: none; -} -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%} -body { - margin: 0; -} -a { - background: transparent; -} -a:focus { - outline: thin dotted; -} -a:active, a:hover { - outline: 0; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -hr { - height: 0; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -mark { - color: #000; - background: #ff0; -} -code, kbd, pre, samp { - font-family: Hack, monospace, serif; - font-size: 1em; -} -pre { - white-space: pre-wrap; -} -q { - quotes: "\201C" "\201D" "\2018" "\2019"} -small { - font-size: 80%} -sub, sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 0; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -button, input, select, textarea { - margin: 0; - font-family: inherit; - font-size: 100%} -button, input { - line-height: normal; -} -button, select { - text-transform: none; -} -button, html input[type="button"], input[type="reset"], input[type="submit"] { - cursor: pointer; - -webkit-appearance: button; -} -button[disabled], html input[disabled] { - cursor: default; -} -input[type="checkbox"], input[type="radio"] { - padding: 0; - box-sizing: border-box; -} -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; -} -button::-moz-focus-inner, input::-moz-focus-inner { - padding: 0; - border: 0; -} -textarea { - overflow: auto; - vertical-align: top; -} -table { - border-collapse: collapse; - border-spacing: 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; -} -@page { - margin: 2cm .5cm; -} -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; -} -}*, *: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: Merriweather, Georgia, serif; - font-size: 14px; - line-height: 1.428571429; - color: #222; - background-color: #fff; -} -input, button, select, textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #008cba; - text-decoration: none; -} -a:hover, a:focus { - color: #00526e; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -img { - vertical-align: middle; -} -.img-responsive { - display: block; - height: auto; - max-width: 100%} -.img-rounded { - border-radius: 0; -} -.img-thumbnail { - display: inline-block; - height: auto; - max-width: 100%; - padding: 4px; - line-height: 1.428571429; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 0; - -webkit-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%} -hr { - margin-top: 21px; - margin-bottom: 21px; - border: 0; - border-top: 1px solid #ddd; -} -.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: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 300; - 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, h2, h3 { - margin-top: 21px; - margin-bottom: 10.5px; -} -h1 small, h2 small, h3 small, h1 .small, h2 .small, h3 .small { - font-size: 65%} -h4, h5, h6 { - margin-top: 10.5px; - margin-bottom: 10.5px; -} -h4 small, h5 small, h6 small, h4 .small, h5 .small, h6 .small { - font-size: 75%} -h1, .h1 { - font-size: 39px; -} -h2, .h2 { - font-size: 32px; -} -h3, .h3 { - font-size: 26px; -} -h4, .h4 { - font-size: 19px; -} -h5, .h5 { - font-size: 15px; -} -h6, .h6 { - font-size: 13px; -} -p { - margin: 0 0 10.5px; -} -.lead { - margin-bottom: 21px; - font-size: 17px; - font-weight: 200; - line-height: 1.4; -} -@media(min-width:768px) { - .lead { - font-size: 22.5px; -} -}small, .small { - font-size: 85%} -cite { - font-style: normal; -} -.text-muted { - color: #999; -} -.text-primary { - color: #008cba; -} -.text-primary:hover { - color: #006687; -} -.text-warning { - color: #e99002; -} -.text-warning:hover { - color: #b67102; -} -.text-danger { - color: #f04124; -} -.text-danger:hover { - color: #d32a0e; -} -.text-success { - color: #43ac6a; -} -.text-success:hover { - color: #358753; -} -.text-info { - color: #5bc0de; -} -.text-info:hover { - color: #31b0d5; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.page-header { - padding-bottom: 9.5px; - margin: 42px 0 21px; - border-bottom: 1px solid #ddd; -} -ul, ol { - margin-top: 0; - margin-bottom: 10.5px; -} -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; -} -.list-inline>li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -.list-inline>li:first-child { - padding-left: 0; -} -dl { - margin-top: 0; - margin-bottom: 21px; -} -dt, dd { - line-height: 1.428571429; -} -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; -} -.dl-horizontal dd:before, .dl-horizontal dd:after { - display: table; - content: " "} -.dl-horizontal dd:after { - clear: both; -} -.dl-horizontal dd:before, .dl-horizontal dd:after { - display: table; - content: " "} -.dl-horizontal dd:after { - clear: both; -} -.dl-horizontal dd:before, .dl-horizontal dd:after { - display: table; - content: " "} -.dl-horizontal dd:after { - clear: both; -} -.dl-horizontal dd:before, .dl-horizontal dd:after { - display: table; - content: " "} -.dl-horizontal dd:after { - clear: both; -} -.dl-horizontal dd:before, .dl-horizontal dd:after { - display: table; - content: " "} -.dl-horizontal dd:after { - clear: both; -} -}abbr[title], abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10.5px 21px; - margin: 0 0 21px; - border-left: 5px solid #ddd; -} -blockquote p { - font-size: 18.75px; - font-weight: 300; - line-height: 1.25; -} -blockquote p:last-child { - margin-bottom: 0; -} -blockquote small, blockquote .small { - display: block; - line-height: 1.428571429; - color: #6f6f6f; -} -blockquote small:before, blockquote .small:before { - content: '\2014 \00A0'} -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #ddd; - border-left: 0; -} -blockquote.pull-right p, blockquote.pull-right small, blockquote.pull-right .small { - text-align: right; -} -blockquote.pull-right small:before, blockquote.pull-right .small:before { - content: ''} -blockquote.pull-right small:after, blockquote.pull-right .small:after { - content: '\00A0 \2014'} -blockquote:before, blockquote:after { - content: ""} -address { - margin-bottom: 21px; - font-style: normal; - line-height: 1.428571429; -} -code, kbd, pre, samp { - font-family: Hack, Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - white-space: nowrap; - background-color: #f9f2f4; - border-radius: 0; -} -pre { - display: block; - padding: 10px; - margin: 0 0 10.5px; - font-size: 14px; - line-height: 1.428571429; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 0; -} -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; -} -.container:before, .container:after { - display: table; - content: " "} -.container:after { - clear: both; -} -.container:before, .container:after { - display: table; - content: " "} -.container:after { - clear: both; -} -.container:before, .container:after { - display: table; - content: " "} -.container:after { - clear: both; -} -.container:before, .container:after { - display: table; - content: " "} -.container:after { - clear: both; -} -.container:before, .container:after { - display: table; - content: " "} -.container:after { - clear: both; -} -@media(min-width:768px) { - .container { - width: 750px; -} -}@media(min-width:992px) { - .container { - width: 970px; -} -}@media(min-width:1200px) { - .container { - width: 1170px; -} -}.row { - margin-right: -15px; - margin-left: -15px; -} -.row:before, .row:after { - display: table; - content: " "} -.row:after { - clear: both; -} -.row:before, .row:after { - display: table; - content: " "} -.row:after { - clear: both; -} -.row:before, .row:after { - display: table; - content: " "} -.row:after { - clear: both; -} -.row:before, .row:after { - display: table; - content: " "} -.row:after { - clear: both; -} -.row:before, .row:after { - display: table; - content: " "} -.row:after { - clear: both; -} -.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.66666666666666%} -.col-xs-10 { - width: 83.33333333333334%} -.col-xs-9 { - width: 75%} -.col-xs-8 { - width: 66.66666666666666%} -.col-xs-7 { - width: 58.333333333333336%} -.col-xs-6 { - width: 50%} -.col-xs-5 { - width: 41.66666666666667%} -.col-xs-4 { - width: 33.33333333333333%} -.col-xs-3 { - width: 25%} -.col-xs-2 { - width: 16.666666666666664%} -.col-xs-1 { - width: 8.333333333333332%} -.col-xs-pull-12 { - right: 100%} -.col-xs-pull-11 { - right: 91.66666666666666%} -.col-xs-pull-10 { - right: 83.33333333333334%} -.col-xs-pull-9 { - right: 75%} -.col-xs-pull-8 { - right: 66.66666666666666%} -.col-xs-pull-7 { - right: 58.333333333333336%} -.col-xs-pull-6 { - right: 50%} -.col-xs-pull-5 { - right: 41.66666666666667%} -.col-xs-pull-4 { - right: 33.33333333333333%} -.col-xs-pull-3 { - right: 25%} -.col-xs-pull-2 { - right: 16.666666666666664%} -.col-xs-pull-1 { - right: 8.333333333333332%} -.col-xs-pull-0 { - right: 0; -} -.col-xs-push-12 { - left: 100%} -.col-xs-push-11 { - left: 91.66666666666666%} -.col-xs-push-10 { - left: 83.33333333333334%} -.col-xs-push-9 { - left: 75%} -.col-xs-push-8 { - left: 66.66666666666666%} -.col-xs-push-7 { - left: 58.333333333333336%} -.col-xs-push-6 { - left: 50%} -.col-xs-push-5 { - left: 41.66666666666667%} -.col-xs-push-4 { - left: 33.33333333333333%} -.col-xs-push-3 { - left: 25%} -.col-xs-push-2 { - left: 16.666666666666664%} -.col-xs-push-1 { - left: 8.333333333333332%} -.col-xs-push-0 { - left: 0; -} -.col-xs-offset-12 { - margin-left: 100%} -.col-xs-offset-11 { - margin-left: 91.66666666666666%} -.col-xs-offset-10 { - margin-left: 83.33333333333334%} -.col-xs-offset-9 { - margin-left: 75%} -.col-xs-offset-8 { - margin-left: 66.66666666666666%} -.col-xs-offset-7 { - margin-left: 58.333333333333336%} -.col-xs-offset-6 { - margin-left: 50%} -.col-xs-offset-5 { - margin-left: 41.66666666666667%} -.col-xs-offset-4 { - margin-left: 33.33333333333333%} -.col-xs-offset-3 { - margin-left: 25%} -.col-xs-offset-2 { - margin-left: 16.666666666666664%} -.col-xs-offset-1 { - margin-left: 8.333333333333332%} -.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.66666666666666%} -.col-sm-10 { - width: 83.33333333333334%} -.col-sm-9 { - width: 75%} -.col-sm-8 { - width: 66.66666666666666%} -.col-sm-7 { - width: 58.333333333333336%} -.col-sm-6 { - width: 50%} -.col-sm-5 { - width: 41.66666666666667%} -.col-sm-4 { - width: 33.33333333333333%} -.col-sm-3 { - width: 25%} -.col-sm-2 { - width: 16.666666666666664%} -.col-sm-1 { - width: 8.333333333333332%} -.col-sm-pull-12 { - right: 100%} -.col-sm-pull-11 { - right: 91.66666666666666%} -.col-sm-pull-10 { - right: 83.33333333333334%} -.col-sm-pull-9 { - right: 75%} -.col-sm-pull-8 { - right: 66.66666666666666%} -.col-sm-pull-7 { - right: 58.333333333333336%} -.col-sm-pull-6 { - right: 50%} -.col-sm-pull-5 { - right: 41.66666666666667%} -.col-sm-pull-4 { - right: 33.33333333333333%} -.col-sm-pull-3 { - right: 25%} -.col-sm-pull-2 { - right: 16.666666666666664%} -.col-sm-pull-1 { - right: 8.333333333333332%} -.col-sm-pull-0 { - right: 0; -} -.col-sm-push-12 { - left: 100%} -.col-sm-push-11 { - left: 91.66666666666666%} -.col-sm-push-10 { - left: 83.33333333333334%} -.col-sm-push-9 { - left: 75%} -.col-sm-push-8 { - left: 66.66666666666666%} -.col-sm-push-7 { - left: 58.333333333333336%} -.col-sm-push-6 { - left: 50%} -.col-sm-push-5 { - left: 41.66666666666667%} -.col-sm-push-4 { - left: 33.33333333333333%} -.col-sm-push-3 { - left: 25%} -.col-sm-push-2 { - left: 16.666666666666664%} -.col-sm-push-1 { - left: 8.333333333333332%} -.col-sm-push-0 { - left: 0; -} -.col-sm-offset-12 { - margin-left: 100%} -.col-sm-offset-11 { - margin-left: 91.66666666666666%} -.col-sm-offset-10 { - margin-left: 83.33333333333334%} -.col-sm-offset-9 { - margin-left: 75%} -.col-sm-offset-8 { - margin-left: 66.66666666666666%} -.col-sm-offset-7 { - margin-left: 58.333333333333336%} -.col-sm-offset-6 { - margin-left: 50%} -.col-sm-offset-5 { - margin-left: 41.66666666666667%} -.col-sm-offset-4 { - margin-left: 33.33333333333333%} -.col-sm-offset-3 { - margin-left: 25%} -.col-sm-offset-2 { - margin-left: 16.666666666666664%} -.col-sm-offset-1 { - margin-left: 8.333333333333332%} -.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.66666666666666%} -.col-md-10 { - width: 83.33333333333334%} -.col-md-9 { - width: 75%} -.col-md-8 { - width: 66.66666666666666%} -.col-md-7 { - width: 58.333333333333336%} -.col-md-6 { - width: 50%} -.col-md-5 { - width: 41.66666666666667%} -.col-md-4 { - width: 33.33333333333333%} -.col-md-3 { - width: 25%} -.col-md-2 { - width: 16.666666666666664%} -.col-md-1 { - width: 8.333333333333332%} -.col-md-pull-12 { - right: 100%} -.col-md-pull-11 { - right: 91.66666666666666%} -.col-md-pull-10 { - right: 83.33333333333334%} -.col-md-pull-9 { - right: 75%} -.col-md-pull-8 { - right: 66.66666666666666%} -.col-md-pull-7 { - right: 58.333333333333336%} -.col-md-pull-6 { - right: 50%} -.col-md-pull-5 { - right: 41.66666666666667%} -.col-md-pull-4 { - right: 33.33333333333333%} -.col-md-pull-3 { - right: 25%} -.col-md-pull-2 { - right: 16.666666666666664%} -.col-md-pull-1 { - right: 8.333333333333332%} -.col-md-pull-0 { - right: 0; -} -.col-md-push-12 { - left: 100%} -.col-md-push-11 { - left: 91.66666666666666%} -.col-md-push-10 { - left: 83.33333333333334%} -.col-md-push-9 { - left: 75%} -.col-md-push-8 { - left: 66.66666666666666%} -.col-md-push-7 { - left: 58.333333333333336%} -.col-md-push-6 { - left: 50%} -.col-md-push-5 { - left: 41.66666666666667%} -.col-md-push-4 { - left: 33.33333333333333%} -.col-md-push-3 { - left: 25%} -.col-md-push-2 { - left: 16.666666666666664%} -.col-md-push-1 { - left: 8.333333333333332%} -.col-md-push-0 { - left: 0; -} -.col-md-offset-12 { - margin-left: 100%} -.col-md-offset-11 { - margin-left: 91.66666666666666%} -.col-md-offset-10 { - margin-left: 83.33333333333334%} -.col-md-offset-9 { - margin-left: 75%} -.col-md-offset-8 { - margin-left: 66.66666666666666%} -.col-md-offset-7 { - margin-left: 58.333333333333336%} -.col-md-offset-6 { - margin-left: 50%} -.col-md-offset-5 { - margin-left: 41.66666666666667%} -.col-md-offset-4 { - margin-left: 33.33333333333333%} -.col-md-offset-3 { - margin-left: 25%} -.col-md-offset-2 { - margin-left: 16.666666666666664%} -.col-md-offset-1 { - margin-left: 8.333333333333332%} -.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.66666666666666%} -.col-lg-10 { - width: 83.33333333333334%} -.col-lg-9 { - width: 75%} -.col-lg-8 { - width: 66.66666666666666%} -.col-lg-7 { - width: 58.333333333333336%} -.col-lg-6 { - width: 50%} -.col-lg-5 { - width: 41.66666666666667%} -.col-lg-4 { - width: 33.33333333333333%} -.col-lg-3 { - width: 25%} -.col-lg-2 { - width: 16.666666666666664%} -.col-lg-1 { - width: 8.333333333333332%} -.col-lg-pull-12 { - right: 100%} -.col-lg-pull-11 { - right: 91.66666666666666%} -.col-lg-pull-10 { - right: 83.33333333333334%} -.col-lg-pull-9 { - right: 75%} -.col-lg-pull-8 { - right: 66.66666666666666%} -.col-lg-pull-7 { - right: 58.333333333333336%} -.col-lg-pull-6 { - right: 50%} -.col-lg-pull-5 { - right: 41.66666666666667%} -.col-lg-pull-4 { - right: 33.33333333333333%} -.col-lg-pull-3 { - right: 25%} -.col-lg-pull-2 { - right: 16.666666666666664%} -.col-lg-pull-1 { - right: 8.333333333333332%} -.col-lg-pull-0 { - right: 0; -} -.col-lg-push-12 { - left: 100%} -.col-lg-push-11 { - left: 91.66666666666666%} -.col-lg-push-10 { - left: 83.33333333333334%} -.col-lg-push-9 { - left: 75%} -.col-lg-push-8 { - left: 66.66666666666666%} -.col-lg-push-7 { - left: 58.333333333333336%} -.col-lg-push-6 { - left: 50%} -.col-lg-push-5 { - left: 41.66666666666667%} -.col-lg-push-4 { - left: 33.33333333333333%} -.col-lg-push-3 { - left: 25%} -.col-lg-push-2 { - left: 16.666666666666664%} -.col-lg-push-1 { - left: 8.333333333333332%} -.col-lg-push-0 { - left: 0; -} -.col-lg-offset-12 { - margin-left: 100%} -.col-lg-offset-11 { - margin-left: 91.66666666666666%} -.col-lg-offset-10 { - margin-left: 83.33333333333334%} -.col-lg-offset-9 { - margin-left: 75%} -.col-lg-offset-8 { - margin-left: 66.66666666666666%} -.col-lg-offset-7 { - margin-left: 58.333333333333336%} -.col-lg-offset-6 { - margin-left: 50%} -.col-lg-offset-5 { - margin-left: 41.66666666666667%} -.col-lg-offset-4 { - margin-left: 33.33333333333333%} -.col-lg-offset-3 { - margin-left: 25%} -.col-lg-offset-2 { - margin-left: 16.666666666666664%} -.col-lg-offset-1 { - margin-left: 8.333333333333332%} -.col-lg-offset-0 { - margin-left: 0; -} -}table { - max-width: 100%; - background-color: transparent; -} -th { - text-align: left; -} -.table { - width: 100%; - margin-bottom: 21px; -} -.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.428571429; - 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-"] { - display: table-cell; - float: none; -} -.table>thead>tr>.active, .table>tbody>tr>.active, .table>tfoot>tr>.active, .table>thead>.active>td, .table>tbody>.active>td, .table>tfoot>.active>td, .table>thead>.active>th, .table>tbody>.active>th, .table>tfoot>.active>th { - background-color: #f5f5f5; -} -.table-hover>tbody>tr>.active:hover, .table-hover>tbody>.active:hover>td, .table-hover>tbody>.active:hover>th { - background-color: #e8e8e8; -} -.table>thead>tr>.success, .table>tbody>tr>.success, .table>tfoot>tr>.success, .table>thead>.success>td, .table>tbody>.success>td, .table>tfoot>.success>td, .table>thead>.success>th, .table>tbody>.success>th, .table>tfoot>.success>th { - background-color: #dff0d8; -} -.table-hover>tbody>tr>.success:hover, .table-hover>tbody>.success:hover>td, .table-hover>tbody>.success:hover>th { - background-color: #d0e9c6; -} -.table>thead>tr>.danger, .table>tbody>tr>.danger, .table>tfoot>tr>.danger, .table>thead>.danger>td, .table>tbody>.danger>td, .table>tfoot>.danger>td, .table>thead>.danger>th, .table>tbody>.danger>th, .table>tfoot>.danger>th { - background-color: #f2dede; -} -.table-hover>tbody>tr>.danger:hover, .table-hover>tbody>.danger:hover>td, .table-hover>tbody>.danger:hover>th { - background-color: #ebcccc; -} -.table>thead>tr>.warning, .table>tbody>tr>.warning, .table>tfoot>tr>.warning, .table>thead>.warning>td, .table>tbody>.warning>td, .table>tfoot>.warning>td, .table>thead>.warning>th, .table>tbody>.warning>th, .table>tfoot>.warning>th { - background-color: #fcf8e3; -} -.table-hover>tbody>tr>.warning:hover, .table-hover>tbody>.warning:hover>td, .table-hover>tbody>.warning:hover>th { - background-color: #faf2cc; -} -@media(max-width:767px) { - .table-responsive { - width: 100%; - margin-bottom: 15.75px; - overflow-x: scroll; - overflow-y: hidden; - border: 1px solid #ddd; - -ms-overflow-style: -ms-autohiding-scrollbar; - -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; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 21px; - font-size: 22.5px; - 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; - line-height: normal; -} -input[type="file"] { - display: block; -} -select[multiple], select[size] { - height: auto; -} -select optgroup { - font-family: inherit; - font-size: inherit; - font-style: inherit; -} -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; -} -input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button { - height: auto; -} -output { - display: block; - padding-top: 7px; - font-size: 15px; - line-height: 1.428571429; - color: #6f6f6f; - vertical-align: middle; -} -.form-control { - display: block; - width: 100%; - height: 35px; - padding: 6px 12px; - font-size: 15px; - line-height: 1.428571429; - color: #6f6f6f; - vertical-align: middle; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 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, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); -} -.form-control:-moz-placeholder { - color: #999; -} -.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; -} -textarea.form-control { - height: auto; -} -.form-group { - margin-bottom: 15px; -} -.radio, .checkbox { - display: block; - min-height: 21px; - padding-left: 20px; - margin-top: 10px; - margin-bottom: 10px; - vertical-align: middle; -} -.radio label, .checkbox label { - display: inline; - margin-bottom: 0; - 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: 0; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm { - height: auto; -} -.input-lg { - height: 48px; - padding: 10px 16px; - font-size: 19px; - line-height: 1.33; - border-radius: 0; -} -select.input-lg { - height: 48px; - line-height: 48px; -} -textarea.input-lg { - height: auto; -} -.has-warning .help-block, .has-warning .control-label, .has-warning .radio, .has-warning .checkbox, .has-warning .radio-inline, .has-warning .checkbox-inline { - color: #e99002; -} -.has-warning .form-control { - border-color: #e99002; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #b67102; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #febc53; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #febc53; -} -.has-warning .input-group-addon { - color: #e99002; - background-color: #fcf8e3; - border-color: #e99002; -} -.has-error .help-block, .has-error .control-label, .has-error .radio, .has-error .checkbox, .has-error .radio-inline, .has-error .checkbox-inline { - color: #f04124; -} -.has-error .form-control { - border-color: #f04124; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #d32a0e; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f79483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f79483; -} -.has-error .input-group-addon { - color: #f04124; - background-color: #f2dede; - border-color: #f04124; -} -.has-success .help-block, .has-success .control-label, .has-success .radio, .has-success .checkbox, .has-success .radio-inline, .has-success .checkbox-inline { - color: #43ac6a; -} -.has-success .form-control { - border-color: #43ac6a; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #358753; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #85d0a1; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #85d0a1; -} -.has-success .input-group-addon { - color: #43ac6a; - background-color: #dff0d8; - border-color: #43ac6a; -} -.form-control-static { - margin-bottom: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #626262; -} -@media(min-width:768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; -} -.form-inline .form-control { - display: inline-block; -} -.form-inline select.form-control { - width: auto; -} -.form-inline .radio, .form-inline .checkbox { - display: inline-block; - padding-left: 0; - margin-top: 0; - margin-bottom: 0; -} -.form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { - float: none; - margin-left: 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: 28px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -.form-horizontal .form-group:before, .form-horizontal .form-group:after { - display: table; - content: " "} -.form-horizontal .form-group:after { - clear: both; -} -.form-horizontal .form-group:before, .form-horizontal .form-group:after { - display: table; - content: " "} -.form-horizontal .form-group:after { - clear: both; -} -.form-horizontal .form-group:before, .form-horizontal .form-group:after { - display: table; - content: " "} -.form-horizontal .form-group:after { - clear: both; -} -.form-horizontal .form-group:before, .form-horizontal .form-group:after { - display: table; - content: " "} -.form-horizontal .form-group:after { - clear: both; -} -.form-horizontal .form-group:before, .form-horizontal .form-group:after { - display: table; - content: " "} -.form-horizontal .form-group:after { - clear: both; -} -.form-horizontal .form-control-static { - padding-top: 7px; -} -@media(min-width:768px) { - .form-horizontal .control-label { - text-align: right; -} -}.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 15px; - font-weight: normal; - line-height: 1.428571429; - text-align: center; - white-space: nowrap; - vertical-align: middle; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - border-radius: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; -} -.btn: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, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, .btn[disabled], fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - opacity: .65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default { - color: #333; - background-color: #e7e7e7; - border-color: #dadada; -} -.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { - color: #333; - background-color: #d3d3d3; - border-color: #bbb; -} -.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: #e7e7e7; - border-color: #dadada; -} -.btn-default .badge { - color: #e7e7e7; - background-color: #fff; -} -.btn-primary { - color: #fff; - background-color: #008cba; - border-color: #0079a1; -} -.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { - color: #fff; - background-color: #006d91; - border-color: #004b63; -} -.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: #008cba; - border-color: #0079a1; -} -.btn-primary .badge { - color: #008cba; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #e99002; - border-color: #d08002; -} -.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { - color: #fff; - background-color: #c17702; - border-color: #935b01; -} -.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: #e99002; - border-color: #d08002; -} -.btn-warning .badge { - color: #e99002; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #f04124; - border-color: #ea2f10; -} -.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { - color: #fff; - background-color: #dc2c0f; - border-color: #b1240c; -} -.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: #f04124; - border-color: #ea2f10; -} -.btn-danger .badge { - color: #f04124; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #43ac6a; - border-color: #3c9a5f; -} -.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { - color: #fff; - background-color: #388f58; - border-color: #2b6e44; -} -.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: #43ac6a; - border-color: #3c9a5f; -} -.btn-success .badge { - color: #43ac6a; - 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-link { - font-weight: normal; - color: #008cba; - 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: #00526e; - 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 { - padding: 10px 16px; - font-size: 19px; - line-height: 1.33; - border-radius: 0; -} -.btn-sm { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 0; -} -.btn-xs { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 0; -} -.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'; - -webkit-font-smoothing: antialiased; - font-style: normal; - font-weight: normal; - line-height: 1; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon:empty { - width: 1em; -} -.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: 15px; - list-style: none; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9.5px 0; - overflow: hidden; - background-color: rgba(0, 0, 0, 0.2); -} -.dropdown-menu>li>a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.428571429; - color: #555; - white-space: nowrap; -} -.dropdown-menu>li>a:hover, .dropdown-menu>li>a:focus { - color: #262626; - text-decoration: none; - background-color: #eee; -} -.dropdown-menu>.active>a, .dropdown-menu>.active>a:hover, .dropdown-menu>.active>a:focus { - color: #fff; - text-decoration: none; - background-color: #008cba; - 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-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.428571429; - 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 { - 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 { - right: 0; - left: 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:before, .btn-toolbar:after { - display: table; - content: " "} -.btn-toolbar:after { - clear: both; -} -.btn-toolbar:before, .btn-toolbar:after { - display: table; - content: " "} -.btn-toolbar:after { - clear: both; -} -.btn-toolbar:before, .btn-toolbar:after { - display: table; - content: " "} -.btn-toolbar:after { - clear: both; -} -.btn-toolbar:before, .btn-toolbar:after { - display: table; - content: " "} -.btn-toolbar:after { - clear: both; -} -.btn-toolbar:before, .btn-toolbar:after { - display: table; - content: " "} -.btn-toolbar:after { - clear: both; -} -.btn-toolbar .btn-group { - float: left; -} -.btn-toolbar>.btn+.btn, .btn-toolbar>.btn-group+.btn, .btn-toolbar>.btn+.btn-group, .btn-toolbar>.btn-group+.btn-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-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-top-right-radius: 0; - border-bottom-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-xs>.btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 0; -} -.btn-group-sm>.btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 0; -} -.btn-group-lg>.btn { - padding: 10px 16px; - font-size: 19px; - line-height: 1.33; - border-radius: 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, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 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:before, .btn-group-vertical>.btn-group:after { - display: table; - content: " "} -.btn-group-vertical>.btn-group:after { - clear: both; -} -.btn-group-vertical>.btn-group:before, .btn-group-vertical>.btn-group:after { - display: table; - content: " "} -.btn-group-vertical>.btn-group:after { - clear: both; -} -.btn-group-vertical>.btn-group:before, .btn-group-vertical>.btn-group:after { - display: table; - content: " "} -.btn-group-vertical>.btn-group:after { - clear: both; -} -.btn-group-vertical>.btn-group:before, .btn-group-vertical>.btn-group:after { - display: table; - content: " "} -.btn-group-vertical>.btn-group:after { - clear: both; -} -.btn-group-vertical>.btn-group:before, .btn-group-vertical>.btn-group:after { - display: table; - content: " "} -.btn-group-vertical>.btn-group:after { - clear: both; -} -.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: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical>.btn:last-child:not(:first-child) { - border-top-right-radius: 0; - border-bottom-left-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>.btn:last-child, .btn-group-vertical>.btn-group:first-child>.dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical>.btn-group:last-child>.btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - border-collapse: separate; - table-layout: fixed; -} -.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 { - width: 100%; - margin-bottom: 0; -} -.input-group-lg>.form-control, .input-group-lg>.input-group-addon, .input-group-lg>.input-group-btn>.btn { - height: 48px; - padding: 10px 16px; - font-size: 19px; - line-height: 1.33; - border-radius: 0; -} -select.input-group-lg>.form-control, select.input-group-lg>.input-group-addon, select.input-group-lg>.input-group-btn>.btn { - height: 48px; - line-height: 48px; -} -textarea.input-group-lg>.form-control, textarea.input-group-lg>.input-group-addon, textarea.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: 0; -} -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 { - 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: 15px; - font-weight: normal; - line-height: 1; - color: #6f6f6f; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 0; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 0; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 19px; - border-radius: 0; -} -.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>.dropdown-toggle, .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle) { - 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>.dropdown-toggle, .input-group-btn:first-child>.btn:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - white-space: nowrap; -} -.input-group-btn:first-child>.btn { - margin-right: -1px; -} -.input-group-btn:last-child>.btn { - margin-left: -1px; -} -.input-group-btn>.btn { - position: relative; -} -.input-group-btn>.btn+.btn { - margin-left: -4px; -} -.input-group-btn>.btn:hover, .input-group-btn>.btn:active { - z-index: 2; -} -.nav { - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav:before, .nav:after { - display: table; - content: " "} -.nav:after { - clear: both; -} -.nav:before, .nav:after { - display: table; - content: " "} -.nav:after { - clear: both; -} -.nav:before, .nav:after { - display: table; - content: " "} -.nav:after { - clear: both; -} -.nav:before, .nav:after { - display: table; - content: " "} -.nav:after { - clear: both; -} -.nav:before, .nav:after { - display: table; - content: " "} -.nav:after { - clear: both; -} -.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: #008cba; -} -.nav .nav-divider { - height: 1px; - margin: 9.5px 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.428571429; - border: 1px solid transparent; - border-radius: 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: #6f6f6f; - 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: 0; -} -.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: 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: 0; -} -.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: #008cba; -} -.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: 0; -} -.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: 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: 45px; - margin-bottom: 21px; - border: 1px solid transparent; -} -.navbar:before, .navbar:after { - display: table; - content: " "} -.navbar:after { - clear: both; -} -.navbar:before, .navbar:after { - display: table; - content: " "} -.navbar:after { - clear: both; -} -.navbar:before, .navbar:after { - display: table; - content: " "} -.navbar:after { - clear: both; -} -.navbar:before, .navbar:after { - display: table; - content: " "} -.navbar:after { - clear: both; -} -.navbar:before, .navbar:after { - display: table; - content: " "} -.navbar:after { - clear: both; -} -@media(min-width:768px) { - .navbar { - border-radius: 0; -} -}.navbar-header:before, .navbar-header:after { - display: table; - content: " "} -.navbar-header:after { - clear: both; -} -.navbar-header:before, .navbar-header:after { - display: table; - content: " "} -.navbar-header:after { - clear: both; -} -.navbar-header:before, .navbar-header:after { - display: table; - content: " "} -.navbar-header:after { - clear: both; -} -.navbar-header:before, .navbar-header:after { - display: table; - content: " "} -.navbar-header:after { - clear: both; -} -.navbar-header:before, .navbar-header:after { - display: table; - content: " "} -.navbar-header:after { - clear: both; -} -@media(min-width:768px) { - .navbar-header { - float: left; -} -}.navbar-collapse { - max-height: 340px; - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} -.navbar-collapse:before, .navbar-collapse:after { - display: table; - content: " "} -.navbar-collapse:after { - clear: both; -} -.navbar-collapse:before, .navbar-collapse:after { - display: table; - content: " "} -.navbar-collapse:after { - clear: both; -} -.navbar-collapse:before, .navbar-collapse:after { - display: table; - content: " "} -.navbar-collapse:after { - clear: both; -} -.navbar-collapse:before, .navbar-collapse:after { - display: table; - content: " "} -.navbar-collapse:after { - clear: both; -} -.navbar-collapse:before, .navbar-collapse:after { - display: table; - content: " "} -.navbar-collapse:after { - clear: both; -} -.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>.navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media(min-width:768px) { - .container>.navbar-header, .container>.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 { - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - float: left; - padding: 12px 15px; - font-size: 19px; - line-height: 21px; -} -.navbar-brand:hover, .navbar-brand:focus { - text-decoration: none; -} -@media(min-width:768px) { - .navbar>.container .navbar-brand { - margin-left: -15px; -} -}.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 5.5px; - margin-right: 15px; - margin-bottom: 5.5px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 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: 6px -15px; -} -.navbar-nav>li>a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 21px; -} -@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: 21px; -} -.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: 12px; - padding-bottom: 12px; -} -.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: 5px; - margin-right: -15px; - margin-bottom: 5px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.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; -} -.navbar-form select.form-control { - width: auto; -} -.navbar-form .radio, .navbar-form .checkbox { - display: inline-block; - padding-left: 0; - margin-top: 0; - margin-bottom: 0; -} -.navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] { - float: none; - margin-left: 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-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-nav.pull-right>li>.dropdown-menu, .navbar-nav>li>.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.navbar-btn { - margin-top: 5px; - margin-bottom: 5px; -} -.navbar-btn.btn-sm { - margin-top: 7.5px; - margin-bottom: 7.5px; -} -.navbar-btn.btn-xs { - margin-top: 11.5px; - margin-bottom: 11.5px; -} -.navbar-text { - margin-top: 12px; - margin-bottom: 12px; -} -@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: #333; - border-color: #222; -} -.navbar-default .navbar-brand { - color: #fff; -} -.navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #fff; -} -.navbar-default .navbar-nav>li>a { - color: #fff; -} -.navbar-default .navbar-nav>li>a:hover, .navbar-default .navbar-nav>li>a:focus { - color: #fff; - background-color: #272727; -} -.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus { - color: #fff; - background-color: #272727; -} -.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: transparent; -} -.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { - background-color: transparent; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-default .navbar-collapse, .navbar-default .navbar-form { - border-color: #222; -} -.navbar-default .navbar-nav>.open>a, .navbar-default .navbar-nav>.open>a:hover, .navbar-default .navbar-nav>.open>a:focus { - color: #fff; - background-color: #272727; -} -@media(max-width:767px) { - .navbar-default .navbar-nav .open .dropdown-menu>li>a { - color: #fff; -} -.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover, .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus { - color: #fff; - background-color: #272727; -} -.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: #fff; - background-color: #272727; -} -.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: #fff; -} -.navbar-default .navbar-link:hover { - color: #fff; -} -.navbar-inverse { - background-color: #008cba; - border-color: #006687; -} -.navbar-inverse .navbar-brand { - color: #fff; -} -.navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #fff; -} -.navbar-inverse .navbar-nav>li>a { - color: #fff; -} -.navbar-inverse .navbar-nav>li>a:hover, .navbar-inverse .navbar-nav>li>a:focus { - color: #fff; - background-color: #006687; -} -.navbar-inverse .navbar-nav>.active>a, .navbar-inverse .navbar-nav>.active>a:hover, .navbar-inverse .navbar-nav>.active>a:focus { - color: #fff; - background-color: #006687; -} -.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: transparent; -} -.navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { - background-color: transparent; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { - border-color: #007196; -} -.navbar-inverse .navbar-nav>.open>a, .navbar-inverse .navbar-nav>.open>a:hover, .navbar-inverse .navbar-nav>.open>a:focus { - color: #fff; - background-color: #006687; -} -@media(max-width:767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header { - border-color: #006687; -} -.navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #006687; -} -.navbar-inverse .navbar-nav .open .dropdown-menu>li>a { - color: #fff; -} -.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus { - color: #fff; - background-color: #006687; -} -.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: #006687; -} -.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: #fff; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 21px; - list-style: none; - background-color: #f5f5f5; - border-radius: 0; -} -.breadcrumb>li { - display: inline-block; -} -.breadcrumb>li+li:before { - padding: 0 5px; - color: #999; - content: "/\00a0"} -.breadcrumb>.active { - color: #333; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 21px 0; - border-radius: 0; -} -.pagination>li { - display: inline; -} -.pagination>li>a, .pagination>li>span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.428571429; - text-decoration: none; - background-color: transparent; - border: 1px solid transparent; -} -.pagination>li:first-child>a, .pagination>li:first-child>span { - margin-left: 0; - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.pagination>li:last-child>a, .pagination>li:last-child>span { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.pagination>li>a:hover, .pagination>li>span:hover, .pagination>li>a:focus, .pagination>li>span:focus { - background-color: #eee; -} -.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: #008cba; - border-color: #008cba; -} -.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: transparent; - border-color: transparent; -} -.pagination-lg>li>a, .pagination-lg>li>span { - padding: 10px 16px; - font-size: 19px; -} -.pagination-lg>li:first-child>a, .pagination-lg>li:first-child>span { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.pagination-lg>li:last-child>a, .pagination-lg>li:last-child>span { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.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: 0; - border-top-left-radius: 0; -} -.pagination-sm>li:last-child>a, .pagination-sm>li:last-child>span { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.pager { - padding-left: 0; - margin: 21px 0; - text-align: center; - list-style: none; -} -.pager:before, .pager:after { - display: table; - content: " "} -.pager:after { - clear: both; -} -.pager:before, .pager:after { - display: table; - content: " "} -.pager:after { - clear: both; -} -.pager:before, .pager:after { - display: table; - content: " "} -.pager:after { - clear: both; -} -.pager:before, .pager:after { - display: table; - content: " "} -.pager:after { - clear: both; -} -.pager:before, .pager:after { - display: table; - content: " "} -.pager:after { - clear: both; -} -.pager li { - display: inline; -} -.pager li>a, .pager li>span { - display: inline-block; - padding: 5px 14px; - background-color: transparent; - border: 1px solid transparent; - border-radius: 3px; -} -.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: transparent; -} -.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: #008cba; -} -.label-primary[href]:hover, .label-primary[href]:focus { - background-color: #006687; -} -.label-success { - background-color: #43ac6a; -} -.label-success[href]:hover, .label-success[href]:focus { - background-color: #358753; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, .label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #e99002; -} -.label-warning[href]:hover, .label-warning[href]:focus { - background-color: #b67102; -} -.label-danger { - background-color: #f04124; -} -.label-danger[href]:hover, .label-danger[href]:focus { - background-color: #d32a0e; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #777; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #e7e7e7; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -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: #008cba; - background-color: #fff; -} -.nav-pills>li>a>.badge { - margin-left: 3px; -} -.jumbotron { - padding: 30px; - margin-bottom: 30px; - font-size: 23px; - font-weight: 200; - line-height: 2.1428571435; - color: inherit; - background-color: #fafafa; -} -.jumbotron h1, .jumbotron .h1 { - line-height: 1; - color: inherit; -} -.jumbotron p { - line-height: 1.4; -} -.container .jumbotron { - border-radius: 0; -} -.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: 67.5px; -} -}.thumbnail { - display: block; - padding: 4px; - margin-bottom: 21px; - line-height: 1.428571429; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 0; - -webkit-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.thumbnail>img, .thumbnail a>img { - display: block; - height: auto; - max-width: 100%; - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active { - border-color: #008cba; -} -.thumbnail .caption { - padding: 9px; - color: #222; -} -.alert { - position: relative; - padding: 0.75rem 1.25rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; - } - - .alert-heading { - color: inherit; - } - - .alert-link { - font-weight: 700; - } - - .alert-dismissible { - padding-right: 4rem; - } - - .alert-dismissible .close { - position: absolute; - top: 0; - right: 0; - padding: 0.75rem 1.25rem; - color: inherit; - } - - .alert-primary { - color: #004085; - background-color: #cce5ff; - border-color: #b8daff; - } - - .alert-primary hr { - border-top-color: #9fcdff; - } - - .alert-primary .alert-link { - color: #002752; - } - - .alert-secondary { - color: #383d41; - background-color: #e2e3e5; - border-color: #d6d8db; - } - - .alert-secondary hr { - border-top-color: #c8cbcf; - } - - .alert-secondary .alert-link { - color: #202326; - } - - .alert-success { - color: #155724; - background-color: #d4edda; - border-color: #c3e6cb; - } - - .alert-success hr { - border-top-color: #b1dfbb; - } - - .alert-success .alert-link { - color: #0b2e13; - } - - .alert-info { - color: #0c5460; - background-color: #d1ecf1; - border-color: #bee5eb; - } - - .alert-info hr { - border-top-color: #abdde5; - } - - .alert-info .alert-link { - color: #062c33; - } - - .alert-warning { - color: #856404; - background-color: #fff3cd; - border-color: #ffeeba; - } - - .alert-warning hr { - border-top-color: #ffe8a1; - } - - .alert-warning .alert-link { - color: #533f03; - } - - .alert-danger { - color: #721c24; - background-color: #f8d7da; - border-color: #f5c6cb; - } - - .alert-danger hr { - border-top-color: #f1b0b7; - } - - .alert-danger .alert-link { - color: #491217; - } - - .alert-light { - color: #818182; - background-color: #fefefe; - border-color: #fdfdfe; - } - - .alert-light hr { - border-top-color: #ececf6; - } - - .alert-light .alert-link { - color: #686868; - } - - .alert-dark { - color: #1b1e21; - background-color: #d6d8d9; - border-color: #c6c8ca; - } - - .alert-dark hr { - border-top-color: #b9bbbe; - } - - .alert-dark .alert-link { - color: #040505; - } - - -@-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: 21px; - margin-bottom: 21px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 0; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 21px; - color: #fff; - text-align: center; - background-color: #008cba; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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: #43ac6a; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #e99002; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #f04124; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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-right-radius: 0; - border-top-left-radius: 0; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.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: #008cba; - border-color: #008cba; -} -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: #87e1ff; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 21px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 0; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 15px; -} -.panel-body:before, .panel-body:after { - display: table; - content: " "} -.panel-body:after { - clear: both; -} -.panel-body:before, .panel-body:after { - display: table; - content: " "} -.panel-body:after { - clear: both; -} -.panel-body:before, .panel-body:after { - display: table; - content: " "} -.panel-body:after { - clear: both; -} -.panel-body:before, .panel-body:after { - display: table; - content: " "} -.panel-body:after { - clear: both; -} -.panel-body:before, .panel-body:after { - display: table; - content: " "} -.panel-body:after { - clear: both; -} -.panel>.list-group { - margin-bottom: 0; -} -.panel>.list-group .list-group-item { - border-width: 1px 0; -} -.panel>.list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.panel>.list-group .list-group-item:last-child { - border-bottom: 0; -} -.panel-heading+.list-group .list-group-item:first-child { - border-top-width: 0; -} -.panel>.table, .panel>.table-responsive>.table { - margin-bottom: 0; -} -.panel>.panel-body+.table, .panel>.panel-body+.table-responsive { - border-top: 1px solid #ddd; -} -.panel>.table>tbody:first-child th, .panel>.table>tbody: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:last-child>th, .panel>.table-responsive>.table-bordered>thead>tr:last-child>th, .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, .panel>.table-bordered>thead>tr:last-child>td, .panel>.table-responsive>.table-bordered>thead>tr:last-child>td, .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 { - border-bottom: 0; -} -.panel>.table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: -1; - border-top-left-radius: -1; -} -.panel-heading>.dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 17px; - color: inherit; -} -.panel-title>a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: -1; - border-bottom-left-radius: -1; -} -.panel-group .panel { - margin-bottom: 0; - overflow: hidden; - border-radius: 0; -} -.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: #008cba; -} -.panel-primary>.panel-heading { - color: #fff; - background-color: #008cba; - border-color: #008cba; -} -.panel-primary>.panel-heading+.panel-collapse .panel-body { - border-top-color: #008cba; -} -.panel-primary>.panel-footer+.panel-collapse .panel-body { - border-bottom-color: #008cba; -} -.panel-success { - border-color: #3c9a5f; -} -.panel-success>.panel-heading { - color: #43ac6a; - background-color: #dff0d8; - border-color: #3c9a5f; -} -.panel-success>.panel-heading+.panel-collapse .panel-body { - border-top-color: #3c9a5f; -} -.panel-success>.panel-footer+.panel-collapse .panel-body { - border-bottom-color: #3c9a5f; -} -.panel-warning { - border-color: #d08002; -} -.panel-warning>.panel-heading { - color: #e99002; - background-color: #fcf8e3; - border-color: #d08002; -} -.panel-warning>.panel-heading+.panel-collapse .panel-body { - border-top-color: #d08002; -} -.panel-warning>.panel-footer+.panel-collapse .panel-body { - border-bottom-color: #d08002; -} -.panel-danger { - border-color: #ea2f10; -} -.panel-danger>.panel-heading { - color: #f04124; - background-color: #f2dede; - border-color: #ea2f10; -} -.panel-danger>.panel-heading+.panel-collapse .panel-body { - border-top-color: #ea2f10; -} -.panel-danger>.panel-footer+.panel-collapse .panel-body { - border-bottom-color: #ea2f10; -} -.panel-info { - border-color: #3db5d8; -} -.panel-info>.panel-heading { - color: #5bc0de; - background-color: #d9edf7; - border-color: #3db5d8; -} -.panel-info>.panel-heading+.panel-collapse .panel-body { - border-top-color: #3db5d8; -} -.panel-info>.panel-footer+.panel-collapse .panel-body { - border-bottom-color: #3db5d8; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #fafafa; - border: 1px solid #e8e8e8; - border-radius: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 0; -} -.well-sm { - padding: 9px; - border-radius: 0; -} -.close { - float: right; - font-size: 22.5px; - font-weight: bold; - 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: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - display: none; - overflow: auto; - overflow-y: scroll; -} -.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; - z-index: 1050; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0; - outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: .5; - filter: alpha(opacity=50); -} -.modal-header { - min-height: 16.428571429px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.428571429; -} -.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:before, .modal-footer:after { - display: table; - content: " "} -.modal-footer:after { - clear: both; -} -.modal-footer:before, .modal-footer:after { - display: table; - content: " "} -.modal-footer:after { - clear: both; -} -.modal-footer:before, .modal-footer:after { - display: table; - content: " "} -.modal-footer:after { - clear: both; -} -.modal-footer:before, .modal-footer:after { - display: table; - content: " "} -.modal-footer:after { - clear: both; -} -.modal-footer:before, .modal-footer:after { - display: table; - content: " "} -.modal-footer:after { - clear: both; -} -.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 screen and (min-width:768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; -} -.modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); -} -}.tooltip { - position: absolute; - z-index: 1030; - display: block; - font-size: 12px; - line-height: 1.4; - opacity: 0; - filter: alpha(opacity=0); - visibility: visible; -} -.tooltip.in { - opacity: .9; - filter: alpha(opacity=90); -} -.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: #333; - border-radius: 0; -} -.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-top-color: #333; - border-width: 5px 5px 0; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - left: 5px; - border-top-color: #333; - border-width: 5px 5px 0; -} -.tooltip.top-right .tooltip-arrow { - right: 5px; - bottom: 0; - border-top-color: #333; - border-width: 5px 5px 0; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-right-color: #333; - border-width: 5px 5px 5px 0; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-left-color: #333; - border-width: 5px 0 5px 5px; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-bottom-color: #333; - border-width: 0 5px 5px; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - left: 5px; - border-bottom-color: #333; - border-width: 0 5px 5px; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - right: 5px; - border-bottom-color: #333; - border-width: 0 5px 5px; -} -.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: #333; - border: 1px solid #333; - border: 1px solid transparent; - border-radius: 0; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - background-clip: padding-box; -} -.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: 15px; - font-weight: normal; - line-height: 18px; - background-color: #333; - border-bottom: 1px solid #262626; - 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 { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - border-bottom-width: 0; -} -.popover.top .arrow:after { - bottom: 1px; - margin-left: -10px; - border-top-color: #333; - border-bottom-width: 0; - content: " "} -.popover.right .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); - border-left-width: 0; -} -.popover.right .arrow:after { - bottom: -10px; - left: 1px; - border-right-color: #333; - border-left-width: 0; - content: " "} -.popover.bottom .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); - border-top-width: 0; -} -.popover.bottom .arrow:after { - top: 1px; - margin-left: -10px; - border-bottom-color: #333; - border-top-width: 0; - content: " "} -.popover.left .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); - border-right-width: 0; -} -.popover.left .arrow:after { - right: 1px; - bottom: -10px; - border-left-color: #333; - border-right-width: 0; - content: " "} -.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 { - display: block; - height: auto; - max-width: 100%; - 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, 0.6); - opacity: .5; - filter: alpha(opacity=50); -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 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 { - color: #fff; - text-decoration: none; - outline: 0; - 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%; - 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, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width:768px) { - .carousel-control .glyphicons-chevron-left, .carousel-control .glyphicons-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 { - display: table; - content: " "} -.clearfix:after { - clear: both; -} -.clearfix:before, .clearfix:after { - display: table; - content: " "} -.clearfix: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, tr.visible-xs, th.visible-xs, td.visible-xs { - 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-xs.visible-sm { - display: block!important; -} -table.visible-xs.visible-sm { - display: table; -} -tr.visible-xs.visible-sm { - display: table-row!important; -} -th.visible-xs.visible-sm, td.visible-xs.visible-sm { - display: table-cell!important; -} -}@media(min-width:992px) and (max-width:1199px) { - .visible-xs.visible-md { - display: block!important; -} -table.visible-xs.visible-md { - display: table; -} -tr.visible-xs.visible-md { - display: table-row!important; -} -th.visible-xs.visible-md, td.visible-xs.visible-md { - display: table-cell!important; -} -}@media(min-width:1200px) { - .visible-xs.visible-lg { - display: block!important; -} -table.visible-xs.visible-lg { - display: table; -} -tr.visible-xs.visible-lg { - display: table-row!important; -} -th.visible-xs.visible-lg, td.visible-xs.visible-lg { - display: table-cell!important; -} -}.visible-sm, tr.visible-sm, th.visible-sm, td.visible-sm { - display: none!important; -} -@media(max-width:767px) { - .visible-sm.visible-xs { - display: block!important; -} -table.visible-sm.visible-xs { - display: table; -} -tr.visible-sm.visible-xs { - display: table-row!important; -} -th.visible-sm.visible-xs, td.visible-sm.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-sm.visible-md { - display: block!important; -} -table.visible-sm.visible-md { - display: table; -} -tr.visible-sm.visible-md { - display: table-row!important; -} -th.visible-sm.visible-md, td.visible-sm.visible-md { - display: table-cell!important; -} -}@media(min-width:1200px) { - .visible-sm.visible-lg { - display: block!important; -} -table.visible-sm.visible-lg { - display: table; -} -tr.visible-sm.visible-lg { - display: table-row!important; -} -th.visible-sm.visible-lg, td.visible-sm.visible-lg { - display: table-cell!important; -} -}.visible-md, tr.visible-md, th.visible-md, td.visible-md { - display: none!important; -} -@media(max-width:767px) { - .visible-md.visible-xs { - display: block!important; -} -table.visible-md.visible-xs { - display: table; -} -tr.visible-md.visible-xs { - display: table-row!important; -} -th.visible-md.visible-xs, td.visible-md.visible-xs { - display: table-cell!important; -} -}@media(min-width:768px) and (max-width:991px) { - .visible-md.visible-sm { - display: block!important; -} -table.visible-md.visible-sm { - display: table; -} -tr.visible-md.visible-sm { - display: table-row!important; -} -th.visible-md.visible-sm, td.visible-md.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-md.visible-lg { - display: block!important; -} -table.visible-md.visible-lg { - display: table; -} -tr.visible-md.visible-lg { - display: table-row!important; -} -th.visible-md.visible-lg, td.visible-md.visible-lg { - display: table-cell!important; -} -}.visible-lg, tr.visible-lg, th.visible-lg, td.visible-lg { - display: none!important; -} -@media(max-width:767px) { - .visible-lg.visible-xs { - display: block!important; -} -table.visible-lg.visible-xs { - display: table; -} -tr.visible-lg.visible-xs { - display: table-row!important; -} -th.visible-lg.visible-xs, td.visible-lg.visible-xs { - display: table-cell!important; -} -}@media(min-width:768px) and (max-width:991px) { - .visible-lg.visible-sm { - display: block!important; -} -table.visible-lg.visible-sm { - display: table; -} -tr.visible-lg.visible-sm { - display: table-row!important; -} -th.visible-lg.visible-sm, td.visible-lg.visible-sm { - display: table-cell!important; -} -}@media(min-width:992px) and (max-width:1199px) { - .visible-lg.visible-md { - display: block!important; -} -table.visible-lg.visible-md { - display: table; -} -tr.visible-lg.visible-md { - display: table-row!important; -} -th.visible-lg.visible-md, td.visible-lg.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; -} -}.hidden-xs { - display: block!important; -} -table.hidden-xs { - display: table; -} -tr.hidden-xs { - display: table-row!important; -} -th.hidden-xs, td.hidden-xs { - display: table-cell!important; -} -@media(max-width:767px) { - .hidden-xs, tr.hidden-xs, th.hidden-xs, td.hidden-xs { - display: none!important; -} -}@media(min-width:768px) and (max-width:991px) { - .hidden-xs.hidden-sm, tr.hidden-xs.hidden-sm, th.hidden-xs.hidden-sm, td.hidden-xs.hidden-sm { - display: none!important; -} -}@media(min-width:992px) and (max-width:1199px) { - .hidden-xs.hidden-md, tr.hidden-xs.hidden-md, th.hidden-xs.hidden-md, td.hidden-xs.hidden-md { - display: none!important; -} -}@media(min-width:1200px) { - .hidden-xs.hidden-lg, tr.hidden-xs.hidden-lg, th.hidden-xs.hidden-lg, td.hidden-xs.hidden-lg { - display: none!important; -} -}.hidden-sm { - display: block!important; -} -table.hidden-sm { - display: table; -} -tr.hidden-sm { - display: table-row!important; -} -th.hidden-sm, td.hidden-sm { - display: table-cell!important; -} -@media(max-width:767px) { - .hidden-sm.hidden-xs, tr.hidden-sm.hidden-xs, th.hidden-sm.hidden-xs, td.hidden-sm.hidden-xs { - display: none!important; -} -}@media(min-width:768px) and (max-width:991px) { - .hidden-sm, tr.hidden-sm, th.hidden-sm, td.hidden-sm { - display: none!important; -} -}@media(min-width:992px) and (max-width:1199px) { - .hidden-sm.hidden-md, tr.hidden-sm.hidden-md, th.hidden-sm.hidden-md, td.hidden-sm.hidden-md { - display: none!important; -} -}@media(min-width:1200px) { - .hidden-sm.hidden-lg, tr.hidden-sm.hidden-lg, th.hidden-sm.hidden-lg, td.hidden-sm.hidden-lg { - display: none!important; -} -}.hidden-md { - display: block!important; -} -table.hidden-md { - display: table; -} -tr.hidden-md { - display: table-row!important; -} -th.hidden-md, td.hidden-md { - display: table-cell!important; -} -@media(max-width:767px) { - .hidden-md.hidden-xs, tr.hidden-md.hidden-xs, th.hidden-md.hidden-xs, td.hidden-md.hidden-xs { - display: none!important; -} -}@media(min-width:768px) and (max-width:991px) { - .hidden-md.hidden-sm, tr.hidden-md.hidden-sm, th.hidden-md.hidden-sm, td.hidden-md.hidden-sm { - display: none!important; -} -}@media(min-width:992px) and (max-width:1199px) { - .hidden-md, tr.hidden-md, th.hidden-md, td.hidden-md { - display: none!important; -} -}@media(min-width:1200px) { - .hidden-md.hidden-lg, tr.hidden-md.hidden-lg, th.hidden-md.hidden-lg, td.hidden-md.hidden-lg { - display: none!important; -} -}.hidden-lg { - display: block!important; -} -table.hidden-lg { - display: table; -} -tr.hidden-lg { - display: table-row!important; -} -th.hidden-lg, td.hidden-lg { - display: table-cell!important; -} -@media(max-width:767px) { - .hidden-lg.hidden-xs, tr.hidden-lg.hidden-xs, th.hidden-lg.hidden-xs, td.hidden-lg.hidden-xs { - display: none!important; -} -}@media(min-width:768px) and (max-width:991px) { - .hidden-lg.hidden-sm, tr.hidden-lg.hidden-sm, th.hidden-lg.hidden-sm, td.hidden-lg.hidden-sm { - display: none!important; -} -}@media(min-width:992px) and (max-width:1199px) { - .hidden-lg.hidden-md, tr.hidden-lg.hidden-md, th.hidden-lg.hidden-md, td.hidden-lg.hidden-md { - display: none!important; -} -}@media(min-width:1200px) { - .hidden-lg, tr.hidden-lg, th.hidden-lg, td.hidden-lg { - display: none!important; -} -}.visible-print, tr.visible-print, th.visible-print, td.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; -} -.hidden-print, tr.hidden-print, th.hidden-print, td.hidden-print { - display: none!important; -} -}.navbar { - font-size: 13px; - font-weight: 300; - border: 0; -} -.navbar .navbar-toggle:hover .icon-bar { - background-color: #b3b3b3; -} -.navbar-collapse { - border-top-color: rgba(0, 0, 0, 0.2); - -webkit-box-shadow: none; - box-shadow: none; -} -.navbar .dropdown-menu { - border: 0; -} -.navbar .dropdown-menu>li>a, .navbar .dropdown-menu>li>a:focus { - font-size: 13px; - font-weight: 300; - background-color: transparent; -} -.navbar .dropdown-header { - color: rgba(255, 255, 255, 0.5); -} -.navbar-default .dropdown-menu { - background-color: #333; -} -.navbar-default .dropdown-menu>li>a, .navbar-default .dropdown-menu>li>a:focus { - color: #fff; -} -.navbar-default .dropdown-menu>li>a:hover, .navbar-default .dropdown-menu>.active>a, .navbar-default .dropdown-menu>.active>a:hover { - background-color: #272727; -} -.navbar-inverse .dropdown-menu { - background-color: #008cba; -} -.navbar-inverse .dropdown-menu>li>a, .navbar-inverse .dropdown-menu>li>a:focus { - color: #fff; -} -.navbar-inverse .dropdown-menu>li>a:hover, .navbar-inverse .dropdown-menu>.active>a, .navbar-inverse .dropdown-menu>.active>a:hover { - background-color: #006687; -} -.btn { - padding: 14px 28px; -} -.btn-lg { - padding: 16px 32px; -} -.btn-sm { - padding: 8px 16px; -} -.btn-xs { - padding: 4px 8px; -} -.btn-group .btn~.dropdown-toggle { - padding-right: 16px; - padding-left: 16px; -} -.btn-group .dropdown-menu { - border-top-width: 0; -} -.btn-group.dropup .dropdown-menu { - margin-bottom: 0; - border-top-width: 1px; - border-bottom-width: 0; -} -.btn-group .dropdown-toggle.btn-default~.dropdown-menu { - background-color: #e7e7e7; - border-color: #dadada; -} -.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a { - color: #333; -} -.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a:hover { - background-color: #d3d3d3; -} -.btn-group .dropdown-toggle.btn-primary~.dropdown-menu { - background-color: #008cba; - border-color: #0079a1; -} -.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a { - color: #fff; -} -.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a:hover { - background-color: #006d91; -} -.btn-group .dropdown-toggle.btn-success~.dropdown-menu { - background-color: #43ac6a; - border-color: #3c9a5f; -} -.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a { - color: #fff; -} -.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a:hover { - background-color: #388f58; -} -.btn-group .dropdown-toggle.btn-info~.dropdown-menu { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a { - color: #fff; -} -.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a:hover { - background-color: #39b3d7; -} -.btn-group .dropdown-toggle.btn-warning~.dropdown-menu { - background-color: #e99002; - border-color: #d08002; -} -.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a { - color: #fff; -} -.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a:hover { - background-color: #c17702; -} -.btn-group .dropdown-toggle.btn-danger~.dropdown-menu { - background-color: #f04124; - border-color: #ea2f10; -} -.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a { - color: #fff; -} -.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a:hover { - background-color: #dc2c0f; -} -.lead { - color: #6f6f6f; -} -cite { - font-style: italic; -} -blockquote { - color: #6f6f6f; - border-left-width: 1px; -} -blockquote.pull-right { - border-right-width: 1px; -} -blockquote small { - font-size: 12px; - font-weight: 300; -} -table { - font-size: 12px; -} -input, .form-control { - padding: 7px; - font-size: 12px; -} -label, .control-label, .help-block, .checkbox, .radio { - font-size: 12px; - font-weight: normal; -} -.form-group .btn, .input-group-addon, .input-group-btn .btn { - padding: 8px 14px; - font-size: 12px; -} -.nav .open>a, .nav .open>a:hover, .nav .open>a:focus { - border-color: transparent; -} -.nav-tabs>li>a { - color: #222; - background-color: #e7e7e7; -} -.nav-tabs .caret { - border-top-color: #222; - border-bottom-color: #222; -} -.nav-pills { - font-weight: 300; -} -.breadcrumb { - font-size: 10px; - font-weight: 300; - text-transform: uppercase; - border: 1px solid #ddd; - border-radius: 3px; -} -.pagination { - font-size: 12px; - font-weight: 300; - color: #999; -} -.pagination>li>a, .pagination>li>span { - margin-left: 4px; - color: #999; -} -.pagination>.active>a, .pagination>.active>span { - color: #fff; -} -.pagination>li>a, .pagination>li:first-child>a, .pagination>li:last-child>a, .pagination>li>span, .pagination>li:first-child>span, .pagination>li:last-child>span { - border-radius: 3px; -} -.pagination-lg>li>a { - padding-right: 22px; - padding-left: 22px; -} -.pagination-sm>li>a { - padding: 0 5px; -} -.pager { - font-size: 12px; - font-weight: 300; - color: #999; -} -.list-group { - font-size: 12px; - font-weight: 300; -} -.label { - padding-right: 1em; - padding-left: 1em; - font-weight: 300; - border-radius: 0; -} -.label-default { - color: #333; - background-color: #e7e7e7; -} -.badge { - font-weight: 300; -} -.progress { - height: 22px; - padding: 2px; - background-color: #f6f6f6; - border: 1px solid #ccc; - -webkit-box-shadow: none; - box-shadow: none; -} -.dropdown-menu { - padding: 0; - margin-top: 0; - font-size: 12px; -} -.dropdown-menu>li>a { - padding: 12px 15px; -} -.dropdown-header { - padding-right: 15px; - padding-left: 15px; - font-size: 9px; - text-transform: uppercase; -} -.popover { - font-size: 12px; - font-weight: 300; - color: #fff; -} -.panel-heading, .panel-footer { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.clearfix:before, .clearfix:after { - display: table; - content: " "} -.clearfix:after { - clear: both; -} -.clearfix:before, .clearfix:after { - display: table; - content: " "} -.clearfix: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; -} diff --git a/themes/dark/css/bootstrap-custom.min.css b/themes/dark/css/bootstrap-custom.min.css deleted file mode 100644 index 7ecb663..0000000 --- a/themes/dark/css/bootstrap-custom.min.css +++ /dev/null @@ -1,6735 +0,0 @@ -/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display:block -} -audio, -canvas, -video { - display:inline-block -} -audio:not([controls]) { - display:none; - height:0 -} -[hidden], -template { - display:none -} -html { - font-family:sans-serif; - -webkit-text-size-adjust:100%; - -ms-text-size-adjust:100% -} -body { - margin:0 -} -a { - background:transparent -} -a:focus { - outline:thin dotted -} -a:active, -a:hover { - outline:0 -} -h1 { - margin:.67em 0; - font-size:2em -} -abbr[title] { - border-bottom:1px dotted -} -b, -strong { - font-weight:bold -} -dfn { - font-style:italic -} -hr { - height:0; - -moz-box-sizing:content-box; - box-sizing:content-box -} -mark { - color:#000; - background:#ff0 -} -code, -kbd, -pre, -samp { - font-family:Hack,monospace,serif; - font-size:1em -} -pre { - white-space:pre-wrap -} -q { - quotes:"\201C" "\201D" "\2018" "\2019" -} -small { - font-size:80% -} -sub, -sup { - position:relative; - font-size:75%; - line-height:0; - vertical-align:baseline -} -sup { - top:-0.5em -} -sub { - bottom:-0.25em -} -img { - border:0 -} -svg:not(:root) { - overflow:hidden -} -figure { - margin:0 -} -fieldset { - padding:.35em .625em .75em; - margin:0 2px; - border:1px solid silver -} -legend { - padding:0; - border:0 -} -button, -input, -select, -textarea { - margin:0; - font-family:inherit; - font-size:100% -} -button, -input { - line-height:normal -} -button, -select { - text-transform:none -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - cursor:pointer; - -webkit-appearance:button -} -button[disabled], -html input[disabled] { - cursor:default -} -input[type="checkbox"], -input[type="radio"] { - padding:0; - box-sizing:border-box -} -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 -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding:0; - border:0 -} -textarea { - overflow:auto; - vertical-align:top -} -table { - border-collapse:collapse; - border-spacing: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 - } - @page { - margin:2cm .5cm - } - 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 - } -} -*, -*: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:Merriweather,Georgia,serif; - font-size:14px; - line-height:1.428571429; - color:#222; - background-color:#fff -} -input, -button, -select, -textarea { - font-family:inherit; - font-size:inherit; - line-height:inherit -} -a { - color:#008cba; - text-decoration:none -} -a:hover, -a:focus { - color:#00526e; - text-decoration:underline -} -a:focus { - outline:thin dotted; - outline:5px auto -webkit-focus-ring-color; - outline-offset:-2px -} -img { - vertical-align:middle -} -.img-responsive { - display:block; - height:auto; - max-width:100% -} -.img-rounded { - border-radius:0 -} -.img-thumbnail { - display:inline-block; - height:auto; - max-width:100%; - padding:4px; - line-height:1.428571429; - background-color:#fff; - border:1px solid #ddd; - border-radius:0; - -webkit-transition:all .2s ease-in-out; - transition:all .2s ease-in-out -} -.img-circle { - border-radius:50% -} -hr { - margin-top:21px; - margin-bottom:21px; - border:0; - border-top:1px solid #ddd -} -.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:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; - font-weight:300; - 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, -h2, -h3 { - margin-top:21px; - margin-bottom:10.5px -} -h1 small, -h2 small, -h3 small, -h1 .small, -h2 .small, -h3 .small { - font-size:65% -} -h4, -h5, -h6 { - margin-top:10.5px; - margin-bottom:10.5px -} -h4 small, -h5 small, -h6 small, -h4 .small, -h5 .small, -h6 .small { - font-size:75% -} -h1, -.h1 { - font-size:39px -} -h2, -.h2 { - font-size:32px -} -h3, -.h3 { - font-size:26px -} -h4, -.h4 { - font-size:19px -} -h5, -.h5 { - font-size:15px -} -h6, -.h6 { - font-size:13px -} -p { - margin:0 20px 10.5px -} -.lead { - margin-bottom:21px; - font-size:17px; - font-weight:200; - line-height:1.4 -} -@media(min-width:768px) { - .lead { - font-size:22.5px - } -} -small, -.small { - font-size:85% -} -cite { - font-style:normal -} -.text-muted { - color:#999 -} -.text-primary { - color:#008cba -} -.text-primary:hover { - color:#006687 -} -.text-warning { - color:#e99002 -} -.text-warning:hover { - color:#b67102 -} -.text-danger { - color:#f04124 -} -.text-danger:hover { - color:#d32a0e -} -.text-success { - color:#43ac6a -} -.text-success:hover { - color:#358753 -} -.text-info { - color:#5bc0de -} -.text-info:hover { - color:#31b0d5 -} -.text-left { - text-align:left -} -.text-right { - text-align:right -} -.text-center { - text-align:center -} -.page-header { - padding-bottom:9.5px; - margin:42px 0 21px; - border-bottom:1px solid #ddd -} -ul, -ol { - margin-top:0; - margin-bottom:10.5px -} -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 -} -.list-inline>li { - display:inline-block; - padding-right:5px; - padding-left:5px -} -.list-inline>li:first-child { - padding-left:0 -} -dl { - margin-top:0; - margin-bottom:21px -} -dt, -dd { - line-height:1.428571429 -} -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 - } - .dl-horizontal dd:before, - .dl-horizontal dd:after { - display:table; - content:" " - } - .dl-horizontal dd:after { - clear:both - } - .dl-horizontal dd:before, - .dl-horizontal dd:after { - display:table; - content:" " - } - .dl-horizontal dd:after { - clear:both - } - .dl-horizontal dd:before, - .dl-horizontal dd:after { - display:table; - content:" " - } - .dl-horizontal dd:after { - clear:both - } - .dl-horizontal dd:before, - .dl-horizontal dd:after { - display:table; - content:" " - } - .dl-horizontal dd:after { - clear:both - } - .dl-horizontal dd:before, - .dl-horizontal dd:after { - display:table; - content:" " - } - .dl-horizontal dd:after { - clear:both - } -} -abbr[title], -abbr[data-original-title] { - cursor:help; - border-bottom:1px dotted #999 -} -.initialism { - font-size:90%; - text-transform:uppercase -} -blockquote { - padding:10.5px 21px; - margin:0 0 21px; - border-left:5px solid #ddd -} -blockquote p { - font-size:18.75px; - font-weight:300; - line-height:1.25 -} -blockquote p:last-child { - margin-bottom:0 -} -blockquote small, -blockquote .small { - display:block; - line-height:1.428571429; - color:#6f6f6f -} -blockquote small:before, -blockquote .small:before { - content:'\2014 \00A0' -} -blockquote.pull-right { - padding-right:15px; - padding-left:0; - border-right:5px solid #ddd; - border-left:0 -} -blockquote.pull-right p, -blockquote.pull-right small, -blockquote.pull-right .small { - text-align:right -} -blockquote.pull-right small:before, -blockquote.pull-right .small:before { - content:'' -} -blockquote.pull-right small:after, -blockquote.pull-right .small:after { - content:'\00A0 \2014' -} -blockquote:before, -blockquote:after { - content:"" -} -address { - margin-bottom:21px; - font-style:normal; - line-height:1.428571429 -} -code, -kbd, -pre, -samp { - font-family:Hack,Menlo,Monaco,Consolas,"Courier New",monospace -} -code { - padding:2px 4px; - font-size:90%; - color:#c7254e; - white-space:nowrap; - background-color:#f9f2f4; - border-radius:0 -} -pre { - display:block; - margin:0 20px 10.5px; - font-size:14px; - line-height:1.428571429; - color:#333; - word-break:break-all; - word-wrap:break-word; - background-color:#f5f5f5; - border:1px solid #000000; - border-radius: 3px -} -pre code { - padding:0; - font-size:inherit; - color:inherit; - white-space:pre-wrap; - background-color:transparent; - border-radius: 2px -} -.pre-scrollable { - max-height:340px; - overflow-y:scroll -} -.container { - padding-right:15px; - padding-left:15px; - margin-right:auto; - margin-left:auto -} -.container:before, -.container:after { - display:table; - content:" " -} -.container:after { - clear:both -} -.container:before, -.container:after { - display:table; - content:" " -} -.container:after { - clear:both -} -.container:before, -.container:after { - display:table; - content:" " -} -.container:after { - clear:both -} -.container:before, -.container:after { - display:table; - content:" " -} -.container:after { - clear:both -} -.container:before, -.container:after { - display:table; - content:" " -} -.container:after { - clear:both -} -@media(min-width:768px) { - .container { - width:750px - } -} -@media(min-width:992px) { - .container { - width:970px - } -} -@media(min-width:1200px) { - .container { - width:1170px - } -} -.row { - margin-right:-15px; - margin-left:-15px -} -.row:before, -.row:after { - display:table; - content:" " -} -.row:after { - clear:both -} -.row:before, -.row:after { - display:table; - content:" " -} -.row:after { - clear:both -} -.row:before, -.row:after { - display:table; - content:" " -} -.row:after { - clear:both -} -.row:before, -.row:after { - display:table; - content:" " -} -.row:after { - clear:both -} -.row:before, -.row:after { - display:table; - content:" " -} -.row:after { - clear:both -} -.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.66666666666666% -} -.col-xs-10 { - width:83.33333333333334% -} -.col-xs-9 { - width:75% -} -.col-xs-8 { - width:66.66666666666666% -} -.col-xs-7 { - width:58.333333333333336% -} -.col-xs-6 { - width:50% -} -.col-xs-5 { - width:41.66666666666667% -} -.col-xs-4 { - width:33.33333333333333% -} -.col-xs-3 { - width:25% -} -.col-xs-2 { - width:16.666666666666664% -} -.col-xs-1 { - width:8.333333333333332% -} -.col-xs-pull-12 { - right:100% -} -.col-xs-pull-11 { - right:91.66666666666666% -} -.col-xs-pull-10 { - right:83.33333333333334% -} -.col-xs-pull-9 { - right:75% -} -.col-xs-pull-8 { - right:66.66666666666666% -} -.col-xs-pull-7 { - right:58.333333333333336% -} -.col-xs-pull-6 { - right:50% -} -.col-xs-pull-5 { - right:41.66666666666667% -} -.col-xs-pull-4 { - right:33.33333333333333% -} -.col-xs-pull-3 { - right:25% -} -.col-xs-pull-2 { - right:16.666666666666664% -} -.col-xs-pull-1 { - right:8.333333333333332% -} -.col-xs-pull-0 { - right:0 -} -.col-xs-push-12 { - left:100% -} -.col-xs-push-11 { - left:91.66666666666666% -} -.col-xs-push-10 { - left:83.33333333333334% -} -.col-xs-push-9 { - left:75% -} -.col-xs-push-8 { - left:66.66666666666666% -} -.col-xs-push-7 { - left:58.333333333333336% -} -.col-xs-push-6 { - left:50% -} -.col-xs-push-5 { - left:41.66666666666667% -} -.col-xs-push-4 { - left:33.33333333333333% -} -.col-xs-push-3 { - left:25% -} -.col-xs-push-2 { - left:16.666666666666664% -} -.col-xs-push-1 { - left:8.333333333333332% -} -.col-xs-push-0 { - left:0 -} -.col-xs-offset-12 { - margin-left:100% -} -.col-xs-offset-11 { - margin-left:91.66666666666666% -} -.col-xs-offset-10 { - margin-left:83.33333333333334% -} -.col-xs-offset-9 { - margin-left:75% -} -.col-xs-offset-8 { - margin-left:66.66666666666666% -} -.col-xs-offset-7 { - margin-left:58.333333333333336% -} -.col-xs-offset-6 { - margin-left:50% -} -.col-xs-offset-5 { - margin-left:41.66666666666667% -} -.col-xs-offset-4 { - margin-left:33.33333333333333% -} -.col-xs-offset-3 { - margin-left:25% -} -.col-xs-offset-2 { - margin-left:16.666666666666664% -} -.col-xs-offset-1 { - margin-left:8.333333333333332% -} -.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.66666666666666% - } - .col-sm-10 { - width:83.33333333333334% - } - .col-sm-9 { - width:75% - } - .col-sm-8 { - width:66.66666666666666% - } - .col-sm-7 { - width:58.333333333333336% - } - .col-sm-6 { - width:50% - } - .col-sm-5 { - width:41.66666666666667% - } - .col-sm-4 { - width:33.33333333333333% - } - .col-sm-3 { - width:25% - } - .col-sm-2 { - width:16.666666666666664% - } - .col-sm-1 { - width:8.333333333333332% - } - .col-sm-pull-12 { - right:100% - } - .col-sm-pull-11 { - right:91.66666666666666% - } - .col-sm-pull-10 { - right:83.33333333333334% - } - .col-sm-pull-9 { - right:75% - } - .col-sm-pull-8 { - right:66.66666666666666% - } - .col-sm-pull-7 { - right:58.333333333333336% - } - .col-sm-pull-6 { - right:50% - } - .col-sm-pull-5 { - right:41.66666666666667% - } - .col-sm-pull-4 { - right:33.33333333333333% - } - .col-sm-pull-3 { - right:25% - } - .col-sm-pull-2 { - right:16.666666666666664% - } - .col-sm-pull-1 { - right:8.333333333333332% - } - .col-sm-pull-0 { - right:0 - } - .col-sm-push-12 { - left:100% - } - .col-sm-push-11 { - left:91.66666666666666% - } - .col-sm-push-10 { - left:83.33333333333334% - } - .col-sm-push-9 { - left:75% - } - .col-sm-push-8 { - left:66.66666666666666% - } - .col-sm-push-7 { - left:58.333333333333336% - } - .col-sm-push-6 { - left:50% - } - .col-sm-push-5 { - left:41.66666666666667% - } - .col-sm-push-4 { - left:33.33333333333333% - } - .col-sm-push-3 { - left:25% - } - .col-sm-push-2 { - left:16.666666666666664% - } - .col-sm-push-1 { - left:8.333333333333332% - } - .col-sm-push-0 { - left:0 - } - .col-sm-offset-12 { - margin-left:100% - } - .col-sm-offset-11 { - margin-left:91.66666666666666% - } - .col-sm-offset-10 { - margin-left:83.33333333333334% - } - .col-sm-offset-9 { - margin-left:75% - } - .col-sm-offset-8 { - margin-left:66.66666666666666% - } - .col-sm-offset-7 { - margin-left:58.333333333333336% - } - .col-sm-offset-6 { - margin-left:50% - } - .col-sm-offset-5 { - margin-left:41.66666666666667% - } - .col-sm-offset-4 { - margin-left:33.33333333333333% - } - .col-sm-offset-3 { - margin-left:25% - } - .col-sm-offset-2 { - margin-left:16.666666666666664% - } - .col-sm-offset-1 { - margin-left:8.333333333333332% - } - .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.66666666666666% - } - .col-md-10 { - width:83.33333333333334% - } - .col-md-9 { - width:75% - } - .col-md-8 { - width:66.66666666666666% - } - .col-md-7 { - width:58.333333333333336% - } - .col-md-6 { - width:50% - } - .col-md-5 { - width:41.66666666666667% - } - .col-md-4 { - width:33.33333333333333% - } - .col-md-3 { - width:25% - } - .col-md-2 { - width:16.666666666666664% - } - .col-md-1 { - width:8.333333333333332% - } - .col-md-pull-12 { - right:100% - } - .col-md-pull-11 { - right:91.66666666666666% - } - .col-md-pull-10 { - right:83.33333333333334% - } - .col-md-pull-9 { - right:75% - } - .col-md-pull-8 { - right:66.66666666666666% - } - .col-md-pull-7 { - right:58.333333333333336% - } - .col-md-pull-6 { - right:50% - } - .col-md-pull-5 { - right:41.66666666666667% - } - .col-md-pull-4 { - right:33.33333333333333% - } - .col-md-pull-3 { - right:25% - } - .col-md-pull-2 { - right:16.666666666666664% - } - .col-md-pull-1 { - right:8.333333333333332% - } - .col-md-pull-0 { - right:0 - } - .col-md-push-12 { - left:100% - } - .col-md-push-11 { - left:91.66666666666666% - } - .col-md-push-10 { - left:83.33333333333334% - } - .col-md-push-9 { - left:75% - } - .col-md-push-8 { - left:66.66666666666666% - } - .col-md-push-7 { - left:58.333333333333336% - } - .col-md-push-6 { - left:50% - } - .col-md-push-5 { - left:41.66666666666667% - } - .col-md-push-4 { - left:33.33333333333333% - } - .col-md-push-3 { - left:25% - } - .col-md-push-2 { - left:16.666666666666664% - } - .col-md-push-1 { - left:8.333333333333332% - } - .col-md-push-0 { - left:0 - } - .col-md-offset-12 { - margin-left:100% - } - .col-md-offset-11 { - margin-left:91.66666666666666% - } - .col-md-offset-10 { - margin-left:83.33333333333334% - } - .col-md-offset-9 { - margin-left:75% - } - .col-md-offset-8 { - margin-left:66.66666666666666% - } - .col-md-offset-7 { - margin-left:58.333333333333336% - } - .col-md-offset-6 { - margin-left:50% - } - .col-md-offset-5 { - margin-left:41.66666666666667% - } - .col-md-offset-4 { - margin-left:33.33333333333333% - } - .col-md-offset-3 { - margin-left:25% - } - .col-md-offset-2 { - margin-left:16.666666666666664% - } - .col-md-offset-1 { - margin-left:8.333333333333332% - } - .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.66666666666666% - } - .col-lg-10 { - width:83.33333333333334% - } - .col-lg-9 { - width:75% - } - .col-lg-8 { - width:66.66666666666666% - } - .col-lg-7 { - width:58.333333333333336% - } - .col-lg-6 { - width:50% - } - .col-lg-5 { - width:41.66666666666667% - } - .col-lg-4 { - width:33.33333333333333% - } - .col-lg-3 { - width:25% - } - .col-lg-2 { - width:16.666666666666664% - } - .col-lg-1 { - width:8.333333333333332% - } - .col-lg-pull-12 { - right:100% - } - .col-lg-pull-11 { - right:91.66666666666666% - } - .col-lg-pull-10 { - right:83.33333333333334% - } - .col-lg-pull-9 { - right:75% - } - .col-lg-pull-8 { - right:66.66666666666666% - } - .col-lg-pull-7 { - right:58.333333333333336% - } - .col-lg-pull-6 { - right:50% - } - .col-lg-pull-5 { - right:41.66666666666667% - } - .col-lg-pull-4 { - right:33.33333333333333% - } - .col-lg-pull-3 { - right:25% - } - .col-lg-pull-2 { - right:16.666666666666664% - } - .col-lg-pull-1 { - right:8.333333333333332% - } - .col-lg-pull-0 { - right:0 - } - .col-lg-push-12 { - left:100% - } - .col-lg-push-11 { - left:91.66666666666666% - } - .col-lg-push-10 { - left:83.33333333333334% - } - .col-lg-push-9 { - left:75% - } - .col-lg-push-8 { - left:66.66666666666666% - } - .col-lg-push-7 { - left:58.333333333333336% - } - .col-lg-push-6 { - left:50% - } - .col-lg-push-5 { - left:41.66666666666667% - } - .col-lg-push-4 { - left:33.33333333333333% - } - .col-lg-push-3 { - left:25% - } - .col-lg-push-2 { - left:16.666666666666664% - } - .col-lg-push-1 { - left:8.333333333333332% - } - .col-lg-push-0 { - left:0 - } - .col-lg-offset-12 { - margin-left:100% - } - .col-lg-offset-11 { - margin-left:91.66666666666666% - } - .col-lg-offset-10 { - margin-left:83.33333333333334% - } - .col-lg-offset-9 { - margin-left:75% - } - .col-lg-offset-8 { - margin-left:66.66666666666666% - } - .col-lg-offset-7 { - margin-left:58.333333333333336% - } - .col-lg-offset-6 { - margin-left:50% - } - .col-lg-offset-5 { - margin-left:41.66666666666667% - } - .col-lg-offset-4 { - margin-left:33.33333333333333% - } - .col-lg-offset-3 { - margin-left:25% - } - .col-lg-offset-2 { - margin-left:16.666666666666664% - } - .col-lg-offset-1 { - margin-left:8.333333333333332% - } - .col-lg-offset-0 { - margin-left:0 - } -} -table { - max-width:100%; - background-color:transparent -} -th { - text-align:left -} -.table { - width:100%; - margin-bottom:21px -} -.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.428571429; - 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-"] { - display:table-cell; - float:none -} -.table>thead>tr>.active, -.table>tbody>tr>.active, -.table>tfoot>tr>.active, -.table>thead>.active>td, -.table>tbody>.active>td, -.table>tfoot>.active>td, -.table>thead>.active>th, -.table>tbody>.active>th, -.table>tfoot>.active>th { - background-color:#f5f5f5 -} -.table-hover>tbody>tr>.active:hover, -.table-hover>tbody>.active:hover>td, -.table-hover>tbody>.active:hover>th { - background-color:#e8e8e8 -} -.table>thead>tr>.success, -.table>tbody>tr>.success, -.table>tfoot>tr>.success, -.table>thead>.success>td, -.table>tbody>.success>td, -.table>tfoot>.success>td, -.table>thead>.success>th, -.table>tbody>.success>th, -.table>tfoot>.success>th { - background-color:#dff0d8 -} -.table-hover>tbody>tr>.success:hover, -.table-hover>tbody>.success:hover>td, -.table-hover>tbody>.success:hover>th { - background-color:#d0e9c6 -} -.table>thead>tr>.danger, -.table>tbody>tr>.danger, -.table>tfoot>tr>.danger, -.table>thead>.danger>td, -.table>tbody>.danger>td, -.table>tfoot>.danger>td, -.table>thead>.danger>th, -.table>tbody>.danger>th, -.table>tfoot>.danger>th { - background-color:#f2dede -} -.table-hover>tbody>tr>.danger:hover, -.table-hover>tbody>.danger:hover>td, -.table-hover>tbody>.danger:hover>th { - background-color:#ebcccc -} -.table>thead>tr>.warning, -.table>tbody>tr>.warning, -.table>tfoot>tr>.warning, -.table>thead>.warning>td, -.table>tbody>.warning>td, -.table>tfoot>.warning>td, -.table>thead>.warning>th, -.table>tbody>.warning>th, -.table>tfoot>.warning>th { - background-color:#fcf8e3 -} -.table-hover>tbody>tr>.warning:hover, -.table-hover>tbody>.warning:hover>td, -.table-hover>tbody>.warning:hover>th { - background-color:#faf2cc -} -@media(max-width:767px) { - .table-responsive { - width:100%; - margin-bottom:15.75px; - overflow-x:scroll; - overflow-y:hidden; - border:1px solid #ddd; - -ms-overflow-style:-ms-autohiding-scrollbar; - -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 -} -legend { - display:block; - width:100%; - padding:0; - margin-bottom:21px; - font-size:22.5px; - 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; - line-height:normal -} -input[type="file"] { - display:block -} -select[multiple], -select[size] { - height:auto -} -select optgroup { - font-family:inherit; - font-size:inherit; - font-style:inherit -} -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 -} -input[type="number"]::-webkit-outer-spin-button, -input[type="number"]::-webkit-inner-spin-button { - height:auto -} -output { - display:block; - padding-top:7px; - font-size:15px; - line-height:1.428571429; - color:#6f6f6f; - vertical-align:middle -} -.form-control { - display:block; - width:100%; - height:35px; - padding:6px 12px; - font-size:15px; - line-height:1.428571429; - color:#6f6f6f; - vertical-align:middle; - background-color:#fff; - background-image:none; - border:1px solid #ccc; - border-radius:0; - -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075); - box-shadow:inset 0 1px 1px rgba(0,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,0.075),0 0 8px rgba(102,175,233,0.6); - box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6) -} -.form-control:-moz-placeholder { - color:#999 -} -.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 -} -textarea.form-control { - height:auto -} -.form-group { - margin-bottom:15px -} -.radio, -.checkbox { - display:block; - min-height:21px; - padding-left:20px; - margin-top:10px; - margin-bottom:10px; - vertical-align:middle -} -.radio label, -.checkbox label { - display:inline; - margin-bottom:0; - 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:0 -} -select.input-sm { - height:30px; - line-height:30px -} -textarea.input-sm { - height:auto -} -.input-lg { - height:48px; - padding:10px 16px; - font-size:19px; - line-height:1.33; - border-radius:0 -} -select.input-lg { - height:48px; - line-height:48px -} -textarea.input-lg { - height:auto -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline { - color:#e99002 -} -.has-warning .form-control { - border-color:#e99002; - -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075); - box-shadow:inset 0 1px 1px rgba(0,0,0,0.075) -} -.has-warning .form-control:focus { - border-color:#b67102; - -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #febc53; - box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #febc53 -} -.has-warning .input-group-addon { - color:#e99002; - background-color:#fcf8e3; - border-color:#e99002 -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline { - color:#f04124 -} -.has-error .form-control { - border-color:#f04124; - -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075); - box-shadow:inset 0 1px 1px rgba(0,0,0,0.075) -} -.has-error .form-control:focus { - border-color:#d32a0e; - -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f79483; - box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f79483 -} -.has-error .input-group-addon { - color:#f04124; - background-color:#f2dede; - border-color:#f04124 -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline { - color:#43ac6a -} -.has-success .form-control { - border-color:#43ac6a; - -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075); - box-shadow:inset 0 1px 1px rgba(0,0,0,0.075) -} -.has-success .form-control:focus { - border-color:#358753; - -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #85d0a1; - box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #85d0a1 -} -.has-success .input-group-addon { - color:#43ac6a; - background-color:#dff0d8; - border-color:#43ac6a -} -.form-control-static { - margin-bottom:0 -} -.help-block { - display:block; - margin-top:5px; - margin-bottom:10px; - color:#626262 -} -@media(min-width:768px) { - .form-inline .form-group { - display:inline-block; - margin-bottom:0; - vertical-align:middle - } - .form-inline .form-control { - display:inline-block - } - .form-inline select.form-control { - width:auto - } - .form-inline .radio, - .form-inline .checkbox { - display:inline-block; - padding-left:0; - margin-top:0; - margin-bottom:0 - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - float:none; - margin-left: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:28px -} -.form-horizontal .form-group { - margin-right:-15px; - margin-left:-15px -} -.form-horizontal .form-group:before, -.form-horizontal .form-group:after { - display:table; - content:" " -} -.form-horizontal .form-group:after { - clear:both -} -.form-horizontal .form-group:before, -.form-horizontal .form-group:after { - display:table; - content:" " -} -.form-horizontal .form-group:after { - clear:both -} -.form-horizontal .form-group:before, -.form-horizontal .form-group:after { - display:table; - content:" " -} -.form-horizontal .form-group:after { - clear:both -} -.form-horizontal .form-group:before, -.form-horizontal .form-group:after { - display:table; - content:" " -} -.form-horizontal .form-group:after { - clear:both -} -.form-horizontal .form-group:before, -.form-horizontal .form-group:after { - display:table; - content:" " -} -.form-horizontal .form-group:after { - clear:both -} -.form-horizontal .form-control-static { - padding-top:7px -} -@media(min-width:768px) { - .form-horizontal .control-label { - text-align:right - } -} -.btn { - display:inline-block; - padding:6px 12px; - margin-bottom:0; - font-size:15px; - font-weight:normal; - line-height:1.428571429; - text-align:center; - white-space:nowrap; - vertical-align:middle; - cursor:pointer; - background-image:none; - border:1px solid transparent; - border-radius:0; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - -o-user-select:none; - user-select:none -} -.btn: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,0.125); - box-shadow:inset 0 3px 5px rgba(0,0,0,0.125) -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events:none; - cursor:not-allowed; - opacity:.65; - filter:alpha(opacity=65); - -webkit-box-shadow:none; - box-shadow:none -} -.btn-default { - color:#333; - background-color:#e7e7e7; - border-color:#dadada -} -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - color:#333; - background-color:#d3d3d3; - border-color:#bbb -} -.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:#e7e7e7; - border-color:#dadada -} -.btn-default .badge { - color:#e7e7e7; - background-color:#fff -} -.btn-primary { - color:#fff; - background-color:#008cba; - border-color:#0079a1 -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - color:#fff; - background-color:#006d91; - border-color:#004b63 -} -.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:#008cba; - border-color:#0079a1 -} -.btn-primary .badge { - color:#008cba; - background-color:#fff -} -.btn-warning { - color:#fff; - background-color:#e99002; - border-color:#d08002 -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - color:#fff; - background-color:#c17702; - border-color:#935b01 -} -.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:#e99002; - border-color:#d08002 -} -.btn-warning .badge { - color:#e99002; - background-color:#fff -} -.btn-danger { - color:#fff; - background-color:#f04124; - border-color:#ea2f10 -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - color:#fff; - background-color:#dc2c0f; - border-color:#b1240c -} -.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:#f04124; - border-color:#ea2f10 -} -.btn-danger .badge { - color:#f04124; - background-color:#fff -} -.btn-success { - color:#fff; - background-color:#43ac6a; - border-color:#3c9a5f -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - color:#fff; - background-color:#388f58; - border-color:#2b6e44 -} -.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:#43ac6a; - border-color:#3c9a5f -} -.btn-success .badge { - color:#43ac6a; - 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-link { - font-weight:normal; - color:#008cba; - 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:#00526e; - 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 { - padding:10px 16px; - font-size:19px; - line-height:1.33; - border-radius:0 -} -.btn-sm { - padding:5px 10px; - font-size:12px; - line-height:1.5; - border-radius:0 -} -.btn-xs { - padding:1px 5px; - font-size:12px; - line-height:1.5; - border-radius:0 -} -.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'; - -webkit-font-smoothing:antialiased; - font-style:normal; - font-weight:normal; - line-height:1; - -moz-osx-font-smoothing:grayscale -} -.glyphicon:empty { - width:1em -} -.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:15px; - list-style:none; - background-color:#fff; - border:1px solid #ccc; - border:1px solid rgba(0,0,0,0.15); - border-radius:0; - -webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175); - box-shadow:0 6px 12px rgba(0,0,0,0.175); - background-clip:padding-box -} -.dropdown-menu.pull-right { - right:0; - left:auto -} -.dropdown-menu .divider { - height:1px; - margin:9.5px 0; - overflow:hidden; - background-color:rgba(0,0,0,0.2) -} -.dropdown-menu>li>a { - display:block; - padding:3px 20px; - clear:both; - font-weight:normal; - line-height:1.428571429; - color:#555; - white-space:nowrap -} -.dropdown-menu>li>a:hover, -.dropdown-menu>li>a:focus { - color:#262626; - text-decoration:none; - background-color:#eee -} -.dropdown-menu>.active>a, -.dropdown-menu>.active>a:hover, -.dropdown-menu>.active>a:focus { - color:#fff; - text-decoration:none; - background-color:#008cba; - 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-header { - display:block; - padding:3px 20px; - font-size:12px; - line-height:1.428571429; - 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 { - 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 { - right:0; - left: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:before, -.btn-toolbar:after { - display:table; - content:" " -} -.btn-toolbar:after { - clear:both -} -.btn-toolbar:before, -.btn-toolbar:after { - display:table; - content:" " -} -.btn-toolbar:after { - clear:both -} -.btn-toolbar:before, -.btn-toolbar:after { - display:table; - content:" " -} -.btn-toolbar:after { - clear:both -} -.btn-toolbar:before, -.btn-toolbar:after { - display:table; - content:" " -} -.btn-toolbar:after { - clear:both -} -.btn-toolbar:before, -.btn-toolbar:after { - display:table; - content:" " -} -.btn-toolbar:after { - clear:both -} -.btn-toolbar .btn-group { - float:left -} -.btn-toolbar>.btn+.btn, -.btn-toolbar>.btn-group+.btn, -.btn-toolbar>.btn+.btn-group, -.btn-toolbar>.btn-group+.btn-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-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-top-right-radius:0; - border-bottom-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-xs>.btn { - padding:1px 5px; - font-size:12px; - line-height:1.5; - border-radius:0 -} -.btn-group-sm>.btn { - padding:5px 10px; - font-size:12px; - line-height:1.5; - border-radius:0 -} -.btn-group-lg>.btn { - padding:10px 16px; - font-size:19px; - line-height:1.33; - border-radius: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,0.125); - box-shadow:inset 0 3px 5px rgba(0,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:before, -.btn-group-vertical>.btn-group:after { - display:table; - content:" " -} -.btn-group-vertical>.btn-group:after { - clear:both -} -.btn-group-vertical>.btn-group:before, -.btn-group-vertical>.btn-group:after { - display:table; - content:" " -} -.btn-group-vertical>.btn-group:after { - clear:both -} -.btn-group-vertical>.btn-group:before, -.btn-group-vertical>.btn-group:after { - display:table; - content:" " -} -.btn-group-vertical>.btn-group:after { - clear:both -} -.btn-group-vertical>.btn-group:before, -.btn-group-vertical>.btn-group:after { - display:table; - content:" " -} -.btn-group-vertical>.btn-group:after { - clear:both -} -.btn-group-vertical>.btn-group:before, -.btn-group-vertical>.btn-group:after { - display:table; - content:" " -} -.btn-group-vertical>.btn-group:after { - clear:both -} -.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:0; - border-bottom-right-radius:0; - border-bottom-left-radius:0 -} -.btn-group-vertical>.btn:last-child:not(:first-child) { - border-top-right-radius:0; - border-bottom-left-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>.btn:last-child, -.btn-group-vertical>.btn-group:first-child>.dropdown-toggle { - border-bottom-right-radius:0; - border-bottom-left-radius:0 -} -.btn-group-vertical>.btn-group:last-child>.btn:first-child { - border-top-right-radius:0; - border-top-left-radius:0 -} -.btn-group-justified { - display:table; - width:100%; - border-collapse:separate; - table-layout:fixed -} -.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 { - width:100%; - margin-bottom:0 -} -.input-group-lg>.form-control, -.input-group-lg>.input-group-addon, -.input-group-lg>.input-group-btn>.btn { - height:48px; - padding:10px 16px; - font-size:19px; - line-height:1.33; - border-radius:0 -} -select.input-group-lg>.form-control, -select.input-group-lg>.input-group-addon, -select.input-group-lg>.input-group-btn>.btn { - height:48px; - line-height:48px -} -textarea.input-group-lg>.form-control, -textarea.input-group-lg>.input-group-addon, -textarea.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:0 -} -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 { - 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:15px; - font-weight:normal; - line-height:1; - color:#6f6f6f; - text-align:center; - background-color:#eee; - border:1px solid #ccc; - border-radius:0 -} -.input-group-addon.input-sm { - padding:5px 10px; - font-size:12px; - border-radius:0 -} -.input-group-addon.input-lg { - padding:10px 16px; - font-size:19px; - border-radius:0 -} -.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>.dropdown-toggle, -.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle) { - 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>.dropdown-toggle, -.input-group-btn:first-child>.btn:not(:first-child) { - border-bottom-left-radius:0; - border-top-left-radius:0 -} -.input-group-addon:last-child { - border-left:0 -} -.input-group-btn { - position:relative; - white-space:nowrap -} -.input-group-btn:first-child>.btn { - margin-right:-1px -} -.input-group-btn:last-child>.btn { - margin-left:-1px -} -.input-group-btn>.btn { - position:relative -} -.input-group-btn>.btn+.btn { - margin-left:-4px -} -.input-group-btn>.btn:hover, -.input-group-btn>.btn:active { - z-index:2 -} -.nav { - font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; - padding-left:0; - margin-bottom:0; - list-style:none -} -.nav:before, -.nav:after { - display:table; - content:" " -} -.nav:after { - clear:both -} -.nav:before, -.nav:after { - display:table; - content:" " -} -.nav:after { - clear:both -} -.nav:before, -.nav:after { - display:table; - content:" " -} -.nav:after { - clear:both -} -.nav:before, -.nav:after { - display:table; - content:" " -} -.nav:after { - clear:both -} -.nav:before, -.nav:after { - display:table; - content:" " -} -.nav:after { - clear:both -} -.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:#008cba -} -.nav .nav-divider { - height:1px; - margin:9.5px 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.428571429; - border:1px solid transparent; - border-radius: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:#6f6f6f; - 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:0 -} -.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: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:0 -} -.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:#008cba -} -.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:0 -} -.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: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:45px; - margin-bottom:21px; - border:1px solid transparent -} -.navbar:before, -.navbar:after { - display:table; - content:" " -} -.navbar:after { - clear:both -} -.navbar:before, -.navbar:after { - display:table; - content:" " -} -.navbar:after { - clear:both -} -.navbar:before, -.navbar:after { - display:table; - content:" " -} -.navbar:after { - clear:both -} -.navbar:before, -.navbar:after { - display:table; - content:" " -} -.navbar:after { - clear:both -} -.navbar:before, -.navbar:after { - display:table; - content:" " -} -.navbar:after { - clear:both -} -@media(min-width:768px) { - .navbar { - border-radius:0 - } -} -.navbar-header:before, -.navbar-header:after { - display:table; - content:" " -} -.navbar-header:after { - clear:both -} -.navbar-header:before, -.navbar-header:after { - display:table; - content:" " -} -.navbar-header:after { - clear:both -} -.navbar-header:before, -.navbar-header:after { - display:table; - content:" " -} -.navbar-header:after { - clear:both -} -.navbar-header:before, -.navbar-header:after { - display:table; - content:" " -} -.navbar-header:after { - clear:both -} -.navbar-header:before, -.navbar-header:after { - display:table; - content:" " -} -.navbar-header:after { - clear:both -} -@media(min-width:768px) { - .navbar-header { - float:left - } -} -.navbar-collapse { - max-height:340px; - padding-right:15px; - padding-left:15px; - overflow-x:visible; - border-top:1px solid transparent; - box-shadow:inset 0 1px 0 rgba(255,255,255,0.1); - -webkit-overflow-scrolling:touch -} -.navbar-collapse:before, -.navbar-collapse:after { - display:table; - content:" " -} -.navbar-collapse:after { - clear:both -} -.navbar-collapse:before, -.navbar-collapse:after { - display:table; - content:" " -} -.navbar-collapse:after { - clear:both -} -.navbar-collapse:before, -.navbar-collapse:after { - display:table; - content:" " -} -.navbar-collapse:after { - clear:both -} -.navbar-collapse:before, -.navbar-collapse:after { - display:table; - content:" " -} -.navbar-collapse:after { - clear:both -} -.navbar-collapse:before, -.navbar-collapse:after { - display:table; - content:" " -} -.navbar-collapse:after { - clear:both -} -.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>.navbar-collapse { - margin-right:-15px; - margin-left:-15px -} -@media(min-width:768px) { - .container>.navbar-header, - .container>.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 { - font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; - float:left; - padding:12px 15px; - font-size:19px; - line-height:21px -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration:none -} -@media(min-width:768px) { - .navbar>.container .navbar-brand { - margin-left:-15px - } -} -.navbar-toggle { - position:relative; - float:right; - padding:9px 10px; - margin-top:5.5px; - margin-right:15px; - margin-bottom:5.5px; - background-color:transparent; - background-image:none; - border:1px solid transparent; - border-radius: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:6px -15px -} -.navbar-nav>li>a { - padding-top:10px; - padding-bottom:10px; - line-height:21px -} -@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:21px - } - .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:12px; - padding-bottom:12px - } - .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:5px; - margin-right:-15px; - margin-bottom:5px; - margin-left:-15px; - border-top:1px solid transparent; - border-bottom:1px solid transparent; - -webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1); - box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.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 - } - .navbar-form select.form-control { - width:auto - } - .navbar-form .radio, - .navbar-form .checkbox { - display:inline-block; - padding-left:0; - margin-top:0; - margin-bottom:0 - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - float:none; - margin-left: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-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-nav.pull-right>li>.dropdown-menu, -.navbar-nav>li>.dropdown-menu.pull-right { - right:0; - left:auto -} -.navbar-btn { - margin-top:5px; - margin-bottom:5px -} -.navbar-btn.btn-sm { - margin-top:7.5px; - margin-bottom:7.5px -} -.navbar-btn.btn-xs { - margin-top:11.5px; - margin-bottom:11.5px -} -.navbar-text { - margin-top:12px; - margin-bottom:12px -} -@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:#333; - border-color:#222 -} -.navbar-default .navbar-brand { - color:#fff -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color:#fff; - background-color:transparent -} -.navbar-default .navbar-text { - color:#fff -} -.navbar-default .navbar-nav>li>a { - color:#fff -} -.navbar-default .navbar-nav>li>a:hover, -.navbar-default .navbar-nav>li>a:focus { - color:#fff; - background-color:#272727 -} -.navbar-default .navbar-nav>.active>a, -.navbar-default .navbar-nav>.active>a:hover, -.navbar-default .navbar-nav>.active>a:focus { - color:#fff; - background-color:#272727 -} -.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:transparent -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color:transparent -} -.navbar-default .navbar-toggle .icon-bar { - background-color:#fff -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color:#222 -} -.navbar-default .navbar-nav>.open>a, -.navbar-default .navbar-nav>.open>a:hover, -.navbar-default .navbar-nav>.open>a:focus { - color:#fff; - background-color:#272727 -} -@media(max-width:767px) { - .navbar-default .navbar-nav .open .dropdown-menu>li>a { - color:#fff - } - .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover, - .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus { - color:#fff; - background-color:#272727 - } - .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:#fff; - background-color:#272727 - } - .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:#fff -} -.navbar-default .navbar-link:hover { - color:#fff -} -.navbar-inverse { - background-color:#008cba; - border-color:#006687 -} -.navbar-inverse .navbar-brand { - color:#fff -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color:#fff; - background-color:transparent -} -.navbar-inverse .navbar-text { - color:#fff -} -.navbar-inverse .navbar-nav>li>a { - color:#fff -} -.navbar-inverse .navbar-nav>li>a:hover, -.navbar-inverse .navbar-nav>li>a:focus { - color:#fff; - background-color:#006687 -} -.navbar-inverse .navbar-nav>.active>a, -.navbar-inverse .navbar-nav>.active>a:hover, -.navbar-inverse .navbar-nav>.active>a:focus { - color:#fff; - background-color:#006687 -} -.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:transparent -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color:transparent -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color:#fff -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color:#007196 -} -.navbar-inverse .navbar-nav>.open>a, -.navbar-inverse .navbar-nav>.open>a:hover, -.navbar-inverse .navbar-nav>.open>a:focus { - color:#fff; - background-color:#006687 -} -@media(max-width:767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header { - border-color:#006687 - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color:#006687 - } - .navbar-inverse .navbar-nav .open .dropdown-menu>li>a { - color:#fff - } - .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus { - color:#fff; - background-color:#006687 - } - .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:#006687 - } - .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:#fff -} -.navbar-inverse .navbar-link:hover { - color:#fff -} -.breadcrumb { - padding:8px 15px; - margin-bottom:21px; - list-style:none; - background-color:#f5f5f5; - border-radius:0 -} -.breadcrumb>li { - display:inline-block -} -.breadcrumb>li+li:before { - padding:0 5px; - color:#999; - content:"/\00a0" -} -.breadcrumb>.active { - color:#333 -} -.pagination { - display:inline-block; - padding-left:0; - margin:21px 0; - border-radius:0 -} -.pagination>li { - display:inline -} -.pagination>li>a, -.pagination>li>span { - position:relative; - float:left; - padding:6px 12px; - margin-left:-1px; - line-height:1.428571429; - text-decoration:none; - background-color:transparent; - border:1px solid transparent -} -.pagination>li:first-child>a, -.pagination>li:first-child>span { - margin-left:0; - border-bottom-left-radius:0; - border-top-left-radius:0 -} -.pagination>li:last-child>a, -.pagination>li:last-child>span { - border-top-right-radius:0; - border-bottom-right-radius:0 -} -.pagination>li>a:hover, -.pagination>li>span:hover, -.pagination>li>a:focus, -.pagination>li>span:focus { - background-color:#eee -} -.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:#008cba; - border-color:#008cba -} -.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:transparent; - border-color:transparent -} -.pagination-lg>li>a, -.pagination-lg>li>span { - padding:10px 16px; - font-size:19px -} -.pagination-lg>li:first-child>a, -.pagination-lg>li:first-child>span { - border-bottom-left-radius:0; - border-top-left-radius:0 -} -.pagination-lg>li:last-child>a, -.pagination-lg>li:last-child>span { - border-top-right-radius:0; - border-bottom-right-radius:0 -} -.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:0; - border-top-left-radius:0 -} -.pagination-sm>li:last-child>a, -.pagination-sm>li:last-child>span { - border-top-right-radius:0; - border-bottom-right-radius:0 -} -.pager { - padding-left:0; - margin:21px 0; - text-align:center; - list-style:none -} -.pager:before, -.pager:after { - display:table; - content:" " -} -.pager:after { - clear:both -} -.pager:before, -.pager:after { - display:table; - content:" " -} -.pager:after { - clear:both -} -.pager:before, -.pager:after { - display:table; - content:" " -} -.pager:after { - clear:both -} -.pager:before, -.pager:after { - display:table; - content:" " -} -.pager:after { - clear:both -} -.pager:before, -.pager:after { - display:table; - content:" " -} -.pager:after { - clear:both -} -.pager li { - display:inline -} -.pager li>a, -.pager li>span { - display:inline-block; - padding:5px 14px; - background-color:transparent; - border:1px solid transparent; - border-radius:3px -} -.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:transparent -} -.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:gray -} -.label-primary { - background-color:#008cba -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color:#006687 -} -.label-success { - background-color:#43ac6a -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color:#358753 -} -.label-info { - background-color:#5bc0de -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color:#31b0d5 -} -.label-warning { - background-color:#e99002 -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color:#b67102 -} -.label-danger { - background-color:#f04124 -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color:#d32a0e -} -.badge { - display:inline-block; - min-width:10px; - padding:3px 7px; - font-size:12px; - font-weight:bold; - line-height:1; - color:#777; - text-align:center; - white-space:nowrap; - vertical-align:baseline; - background-color:#e7e7e7; - border-radius:10px -} -.badge:empty { - display:none -} -.btn .badge { - position:relative; - top:-1px -} -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:#008cba; - background-color:#fff -} -.nav-pills>li>a>.badge { - margin-left:3px -} -.jumbotron { - padding:30px; - margin-bottom:30px; - font-size:23px; - font-weight:200; - line-height:2.1428571435; - color:inherit; - background-color:#fafafa -} -.jumbotron h1, -.jumbotron .h1 { - line-height:1; - color:inherit -} -.jumbotron p { - line-height:1.4 -} -.container .jumbotron { - border-radius:0 -} -.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:67.5px - } -} -.thumbnail { - display:block; - padding:4px; - margin-bottom:21px; - line-height:1.428571429; - background-color:#fff; - border:1px solid #ddd; - border-radius:0; - -webkit-transition:all .2s ease-in-out; - transition:all .2s ease-in-out -} -.thumbnail>img, -.thumbnail a>img { - display:block; - height:auto; - max-width:100%; - margin-right:auto; - margin-left:auto -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color:#008cba -} -.thumbnail .caption { - padding:9px; - color:#222 -} -.alert { - position:relative; - padding:.75rem 1.25rem; - margin-bottom:1rem; - border:1px solid transparent; - border-radius:.25rem -} -.alert-heading { - color:inherit -} -.alert-link { - font-weight:700 -} -.alert-dismissible { - padding-right:4rem -} -.alert-dismissible .close { - position:absolute; - top:0; - right:0; - padding:.75rem 1.25rem; - color:inherit -} -.alert-primary { - color:#004085; - background-color:#cce5ff; - border-color:#b8daff -} -.alert-primary hr { - border-top-color:#9fcdff -} -.alert-primary .alert-link { - color:#002752 -} -.alert-secondary { - color:#383d41; - background-color:#e2e3e5; - border-color:#d6d8db -} -.alert-secondary hr { - border-top-color:#c8cbcf -} -.alert-secondary .alert-link { - color:#202326 -} -.alert-success { - color:#155724; - background-color:#d4edda; - border-color:#c3e6cb -} -.alert-success hr { - border-top-color:#b1dfbb -} -.alert-success .alert-link { - color:#0b2e13 -} -.alert-info { - color:#0c5460; - background-color:#d1ecf1; - border-color:#bee5eb -} -.alert-info hr { - border-top-color:#abdde5 -} -.alert-info .alert-link { - color:#062c33 -} -.alert-warning { - color:#856404; - background-color:#fff3cd; - border-color:#ffeeba -} -.alert-warning hr { - border-top-color:#ffe8a1 -} -.alert-warning .alert-link { - color:#533f03 -} -.alert-danger { - color:#721c24; - background-color:#f8d7da; - border-color:#f5c6cb -} -.alert-danger hr { - border-top-color:#f1b0b7 -} -.alert-danger .alert-link { - color:#491217 -} -.alert-light { - color:#818182; - background-color:#fefefe; - border-color:#fdfdfe -} -.alert-light hr { - border-top-color:#ececf6 -} -.alert-light .alert-link { - color:#686868 -} -.alert-dark { - color:#1b1e21; - background-color:#d6d8d9; - border-color:#c6c8ca -} -.alert-dark hr { - border-top-color:#b9bbbe -} -.alert-dark .alert-link { - color:#040505 -} -@-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:21px; - margin-bottom:21px; - overflow:hidden; - background-color:#f5f5f5; - border-radius:0; - -webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1); - box-shadow:inset 0 1px 2px rgba(0,0,0,0.1) -} -.progress-bar { - float:left; - width:0; - height:100%; - font-size:12px; - line-height:21px; - color:#fff; - text-align:center; - background-color:#008cba; - -webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15); - box-shadow:inset 0 -1px 0 rgba(0,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,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); - background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.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:#43ac6a -} -.progress-striped .progress-bar-success { - background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); - background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.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,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); - background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent) -} -.progress-bar-warning { - background-color:#e99002 -} -.progress-striped .progress-bar-warning { - background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); - background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent) -} -.progress-bar-danger { - background-color:#f04124 -} -.progress-striped .progress-bar-danger { - background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); - background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.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-right-radius:0; - border-top-left-radius:0 -} -.list-group-item:last-child { - margin-bottom:0; - border-bottom-right-radius:0; - border-bottom-left-radius:0 -} -.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:#008cba; - border-color:#008cba -} -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:#87e1ff -} -.list-group-item-heading { - margin-top:0; - margin-bottom:5px -} -.list-group-item-text { - margin-bottom:0; - line-height:1.3 -} -.panel { - margin-bottom:21px; - background-color:#fff; - border:1px solid transparent; - border-radius:0; - -webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05); - box-shadow:0 1px 1px rgba(0,0,0,0.05) -} -.panel-body { - padding:15px -} -.panel-body:before, -.panel-body:after { - display:table; - content:" " -} -.panel-body:after { - clear:both -} -.panel-body:before, -.panel-body:after { - display:table; - content:" " -} -.panel-body:after { - clear:both -} -.panel-body:before, -.panel-body:after { - display:table; - content:" " -} -.panel-body:after { - clear:both -} -.panel-body:before, -.panel-body:after { - display:table; - content:" " -} -.panel-body:after { - clear:both -} -.panel-body:before, -.panel-body:after { - display:table; - content:" " -} -.panel-body:after { - clear:both -} -.panel>.list-group { - margin-bottom:0 -} -.panel>.list-group .list-group-item { - border-width:1px 0 -} -.panel>.list-group .list-group-item:first-child { - border-top-right-radius:0; - border-top-left-radius:0 -} -.panel>.list-group .list-group-item:last-child { - border-bottom:0 -} -.panel-heading+.list-group .list-group-item:first-child { - border-top-width:0 -} -.panel>.table, -.panel>.table-responsive>.table { - margin-bottom:0 -} -.panel>.panel-body+.table, -.panel>.panel-body+.table-responsive { - border-top:1px solid #ddd -} -.panel>.table>tbody:first-child th, -.panel>.table>tbody: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:last-child>th, -.panel>.table-responsive>.table-bordered>thead>tr:last-child>th, -.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, -.panel>.table-bordered>thead>tr:last-child>td, -.panel>.table-responsive>.table-bordered>thead>tr:last-child>td, -.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 { - border-bottom:0 -} -.panel>.table-responsive { - margin-bottom:0; - border:0 -} -.panel-heading { - padding:10px 15px; - border-bottom:1px solid transparent; - border-top-right-radius:-1; - border-top-left-radius:-1 -} -.panel-heading>.dropdown .dropdown-toggle { - color:inherit -} -.panel-title { - margin-top:0; - margin-bottom:0; - font-size:17px; - color:inherit -} -.panel-title>a { - color:inherit -} -.panel-footer { - padding:10px 15px; - background-color:#f5f5f5; - border-top:1px solid #ddd; - border-bottom-right-radius:-1; - border-bottom-left-radius:-1 -} -.panel-group .panel { - margin-bottom:0; - overflow:hidden; - border-radius:0 -} -.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:#008cba -} -.panel-primary>.panel-heading { - color:#fff; - background-color:#008cba; - border-color:#008cba -} -.panel-primary>.panel-heading+.panel-collapse .panel-body { - border-top-color:#008cba -} -.panel-primary>.panel-footer+.panel-collapse .panel-body { - border-bottom-color:#008cba -} -.panel-success { - border-color:#3c9a5f -} -.panel-success>.panel-heading { - color:#43ac6a; - background-color:#dff0d8; - border-color:#3c9a5f -} -.panel-success>.panel-heading+.panel-collapse .panel-body { - border-top-color:#3c9a5f -} -.panel-success>.panel-footer+.panel-collapse .panel-body { - border-bottom-color:#3c9a5f -} -.panel-warning { - border-color:#d08002 -} -.panel-warning>.panel-heading { - color:#e99002; - background-color:#fcf8e3; - border-color:#d08002 -} -.panel-warning>.panel-heading+.panel-collapse .panel-body { - border-top-color:#d08002 -} -.panel-warning>.panel-footer+.panel-collapse .panel-body { - border-bottom-color:#d08002 -} -.panel-danger { - border-color:#ea2f10 -} -.panel-danger>.panel-heading { - color:#f04124; - background-color:#f2dede; - border-color:#ea2f10 -} -.panel-danger>.panel-heading+.panel-collapse .panel-body { - border-top-color:#ea2f10 -} -.panel-danger>.panel-footer+.panel-collapse .panel-body { - border-bottom-color:#ea2f10 -} -.panel-info { - border-color:#3db5d8 -} -.panel-info>.panel-heading { - color:#5bc0de; - background-color:#d9edf7; - border-color:#3db5d8 -} -.panel-info>.panel-heading+.panel-collapse .panel-body { - border-top-color:#3db5d8 -} -.panel-info>.panel-footer+.panel-collapse .panel-body { - border-bottom-color:#3db5d8 -} -.well { - min-height:20px; - padding:19px; - margin-bottom:20px; - background-color:#fafafa; - /*border:1px solid #e8e8e8;*/ - border-radius:0; - -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05); - box-shadow:inset 0 1px 1px rgba(0,0,0,0.05) -} -.well blockquote { - border-color:#ddd; - border-color:rgba(0,0,0,0.15) -} -.well-lg { - padding:24px; - border-radius:0 -} -.well-sm { - padding:9px; - border-radius:0 -} -.close { - float:right; - font-size:22.5px; - font-weight:bold; - 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:transparent; - border:0; - -webkit-appearance:none -} -.modal-open { - overflow:hidden -} -.modal { - position:fixed; - top:0; - right:0; - bottom:0; - left:0; - z-index:1040; - display:none; - overflow:auto; - overflow-y:scroll -} -.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; - z-index:1050; - width:auto; - margin:10px -} -.modal-content { - position:relative; - background-color:#fff; - border:1px solid #999; - border:1px solid rgba(0,0,0,0.2); - border-radius:0; - outline:0; - -webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5); - box-shadow:0 3px 9px rgba(0,0,0,0.5); - background-clip:padding-box -} -.modal-backdrop { - position:fixed; - top:0; - right:0; - bottom:0; - left:0; - z-index:1030; - background-color:#000 -} -.modal-backdrop.fade { - opacity:0; - filter:alpha(opacity=0) -} -.modal-backdrop.in { - opacity:.5; - filter:alpha(opacity=50) -} -.modal-header { - min-height:16.428571429px; - padding:15px; - border-bottom:1px solid #e5e5e5 -} -.modal-header .close { - margin-top:-2px -} -.modal-title { - margin:0; - line-height:1.428571429 -} -.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:before, -.modal-footer:after { - display:table; - content:" " -} -.modal-footer:after { - clear:both -} -.modal-footer:before, -.modal-footer:after { - display:table; - content:" " -} -.modal-footer:after { - clear:both -} -.modal-footer:before, -.modal-footer:after { - display:table; - content:" " -} -.modal-footer:after { - clear:both -} -.modal-footer:before, -.modal-footer:after { - display:table; - content:" " -} -.modal-footer:after { - clear:both -} -.modal-footer:before, -.modal-footer:after { - display:table; - content:" " -} -.modal-footer:after { - clear:both -} -.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 screen and (min-width:768px) { - .modal-dialog { - width:600px; - margin:30px auto - } - .modal-content { - -webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5); - box-shadow:0 5px 15px rgba(0,0,0,0.5) - } -} -.tooltip { - position:absolute; - z-index:1030; - display:block; - font-size:12px; - line-height:1.4; - opacity:0; - filter:alpha(opacity=0); - visibility:visible -} -.tooltip.in { - opacity:.9; - filter:alpha(opacity=90) -} -.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:#333; - border-radius:0 -} -.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-top-color:#333; - border-width:5px 5px 0 -} -.tooltip.top-left .tooltip-arrow { - bottom:0; - left:5px; - border-top-color:#333; - border-width:5px 5px 0 -} -.tooltip.top-right .tooltip-arrow { - right:5px; - bottom:0; - border-top-color:#333; - border-width:5px 5px 0 -} -.tooltip.right .tooltip-arrow { - top:50%; - left:0; - margin-top:-5px; - border-right-color:#333; - border-width:5px 5px 5px 0 -} -.tooltip.left .tooltip-arrow { - top:50%; - right:0; - margin-top:-5px; - border-left-color:#333; - border-width:5px 0 5px 5px -} -.tooltip.bottom .tooltip-arrow { - top:0; - left:50%; - margin-left:-5px; - border-bottom-color:#333; - border-width:0 5px 5px -} -.tooltip.bottom-left .tooltip-arrow { - top:0; - left:5px; - border-bottom-color:#333; - border-width:0 5px 5px -} -.tooltip.bottom-right .tooltip-arrow { - top:0; - right:5px; - border-bottom-color:#333; - border-width:0 5px 5px -} -.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:#333; - border:1px solid #333; - border:1px solid transparent; - border-radius:0; - -webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2); - box-shadow:0 5px 10px rgba(0,0,0,0.2); - background-clip:padding-box -} -.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:15px; - font-weight:normal; - line-height:18px; - background-color:#333; - border-bottom:1px solid #262626; - 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 { - bottom:-11px; - left:50%; - margin-left:-11px; - border-top-color:#999; - border-top-color:rgba(0,0,0,0.25); - border-bottom-width:0 -} -.popover.top .arrow:after { - bottom:1px; - margin-left:-10px; - border-top-color:#333; - border-bottom-width:0; - content:" " -} -.popover.right .arrow { - top:50%; - left:-11px; - margin-top:-11px; - border-right-color:#999; - border-right-color:rgba(0,0,0,0.25); - border-left-width:0 -} -.popover.right .arrow:after { - bottom:-10px; - left:1px; - border-right-color:#333; - border-left-width:0; - content:" " -} -.popover.bottom .arrow { - top:-11px; - left:50%; - margin-left:-11px; - border-bottom-color:#999; - border-bottom-color:rgba(0,0,0,0.25); - border-top-width:0 -} -.popover.bottom .arrow:after { - top:1px; - margin-left:-10px; - border-bottom-color:#333; - border-top-width:0; - content:" " -} -.popover.left .arrow { - top:50%; - right:-11px; - margin-top:-11px; - border-left-color:#999; - border-left-color:rgba(0,0,0,0.25); - border-right-width:0 -} -.popover.left .arrow:after { - right:1px; - bottom:-10px; - border-left-color:#333; - border-right-width:0; - content:" " -} -.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 { - display:block; - height:auto; - max-width:100%; - 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,0.6); - opacity:.5; - filter:alpha(opacity=50) -} -.carousel-control.left { - background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%)); - background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%); - background-repeat:repeat-x; - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1) -} -.carousel-control.right { - right:0; - left:auto; - background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%)); - background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,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 { - color:#fff; - text-decoration:none; - outline:0; - 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%; - 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,0.6) -} -.carousel-caption .btn { - text-shadow:none -} -@media screen and (min-width:768px) { - .carousel-control .glyphicons-chevron-left, - .carousel-control .glyphicons-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 { - display:table; - content:" " -} -.clearfix:after { - clear:both -} -.clearfix:before, -.clearfix:after { - display:table; - content:" " -} -.clearfix: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, -tr.visible-xs, -th.visible-xs, -td.visible-xs { - 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-xs.visible-sm { - display:block !important - } - table.visible-xs.visible-sm { - display:table - } - tr.visible-xs.visible-sm { - display:table-row !important - } - th.visible-xs.visible-sm, - td.visible-xs.visible-sm { - display:table-cell !important - } -} -@media(min-width:992px) and (max-width:1199px) { - .visible-xs.visible-md { - display:block !important - } - table.visible-xs.visible-md { - display:table - } - tr.visible-xs.visible-md { - display:table-row !important - } - th.visible-xs.visible-md, - td.visible-xs.visible-md { - display:table-cell !important - } -} -@media(min-width:1200px) { - .visible-xs.visible-lg { - display:block !important - } - table.visible-xs.visible-lg { - display:table - } - tr.visible-xs.visible-lg { - display:table-row !important - } - th.visible-xs.visible-lg, - td.visible-xs.visible-lg { - display:table-cell !important - } -} -.visible-sm, -tr.visible-sm, -th.visible-sm, -td.visible-sm { - display:none !important -} -@media(max-width:767px) { - .visible-sm.visible-xs { - display:block !important - } - table.visible-sm.visible-xs { - display:table - } - tr.visible-sm.visible-xs { - display:table-row !important - } - th.visible-sm.visible-xs, - td.visible-sm.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-sm.visible-md { - display:block !important - } - table.visible-sm.visible-md { - display:table - } - tr.visible-sm.visible-md { - display:table-row !important - } - th.visible-sm.visible-md, - td.visible-sm.visible-md { - display:table-cell !important - } -} -@media(min-width:1200px) { - .visible-sm.visible-lg { - display:block !important - } - table.visible-sm.visible-lg { - display:table - } - tr.visible-sm.visible-lg { - display:table-row !important - } - th.visible-sm.visible-lg, - td.visible-sm.visible-lg { - display:table-cell !important - } -} -.visible-md, -tr.visible-md, -th.visible-md, -td.visible-md { - display:none !important -} -@media(max-width:767px) { - .visible-md.visible-xs { - display:block !important - } - table.visible-md.visible-xs { - display:table - } - tr.visible-md.visible-xs { - display:table-row !important - } - th.visible-md.visible-xs, - td.visible-md.visible-xs { - display:table-cell !important - } -} -@media(min-width:768px) and (max-width:991px) { - .visible-md.visible-sm { - display:block !important - } - table.visible-md.visible-sm { - display:table - } - tr.visible-md.visible-sm { - display:table-row !important - } - th.visible-md.visible-sm, - td.visible-md.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-md.visible-lg { - display:block !important - } - table.visible-md.visible-lg { - display:table - } - tr.visible-md.visible-lg { - display:table-row !important - } - th.visible-md.visible-lg, - td.visible-md.visible-lg { - display:table-cell !important - } -} -.visible-lg, -tr.visible-lg, -th.visible-lg, -td.visible-lg { - display:none !important -} -@media(max-width:767px) { - .visible-lg.visible-xs { - display:block !important - } - table.visible-lg.visible-xs { - display:table - } - tr.visible-lg.visible-xs { - display:table-row !important - } - th.visible-lg.visible-xs, - td.visible-lg.visible-xs { - display:table-cell !important - } -} -@media(min-width:768px) and (max-width:991px) { - .visible-lg.visible-sm { - display:block !important - } - table.visible-lg.visible-sm { - display:table - } - tr.visible-lg.visible-sm { - display:table-row !important - } - th.visible-lg.visible-sm, - td.visible-lg.visible-sm { - display:table-cell !important - } -} -@media(min-width:992px) and (max-width:1199px) { - .visible-lg.visible-md { - display:block !important - } - table.visible-lg.visible-md { - display:table - } - tr.visible-lg.visible-md { - display:table-row !important - } - th.visible-lg.visible-md, - td.visible-lg.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 - } -} -.hidden-xs { - display:block !important -} -table.hidden-xs { - display:table -} -tr.hidden-xs { - display:table-row !important -} -th.hidden-xs, -td.hidden-xs { - display:table-cell !important -} -@media(max-width:767px) { - .hidden-xs, - tr.hidden-xs, - th.hidden-xs, - td.hidden-xs { - display:none !important - } -} -@media(min-width:768px) and (max-width:991px) { - .hidden-xs.hidden-sm, - tr.hidden-xs.hidden-sm, - th.hidden-xs.hidden-sm, - td.hidden-xs.hidden-sm { - display:none !important - } -} -@media(min-width:992px) and (max-width:1199px) { - .hidden-xs.hidden-md, - tr.hidden-xs.hidden-md, - th.hidden-xs.hidden-md, - td.hidden-xs.hidden-md { - display:none !important - } -} -@media(min-width:1200px) { - .hidden-xs.hidden-lg, - tr.hidden-xs.hidden-lg, - th.hidden-xs.hidden-lg, - td.hidden-xs.hidden-lg { - display:none !important - } -} -.hidden-sm { - display:block !important -} -table.hidden-sm { - display:table -} -tr.hidden-sm { - display:table-row !important -} -th.hidden-sm, -td.hidden-sm { - display:table-cell !important -} -@media(max-width:767px) { - .hidden-sm.hidden-xs, - tr.hidden-sm.hidden-xs, - th.hidden-sm.hidden-xs, - td.hidden-sm.hidden-xs { - display:none !important - } -} -@media(min-width:768px) and (max-width:991px) { - .hidden-sm, - tr.hidden-sm, - th.hidden-sm, - td.hidden-sm { - display:none !important - } -} -@media(min-width:992px) and (max-width:1199px) { - .hidden-sm.hidden-md, - tr.hidden-sm.hidden-md, - th.hidden-sm.hidden-md, - td.hidden-sm.hidden-md { - display:none !important - } -} -@media(min-width:1200px) { - .hidden-sm.hidden-lg, - tr.hidden-sm.hidden-lg, - th.hidden-sm.hidden-lg, - td.hidden-sm.hidden-lg { - display:none !important - } -} -.hidden-md { - display:block !important -} -table.hidden-md { - display:table -} -tr.hidden-md { - display:table-row !important -} -th.hidden-md, -td.hidden-md { - display:table-cell !important -} -@media(max-width:767px) { - .hidden-md.hidden-xs, - tr.hidden-md.hidden-xs, - th.hidden-md.hidden-xs, - td.hidden-md.hidden-xs { - display:none !important - } -} -@media(min-width:768px) and (max-width:991px) { - .hidden-md.hidden-sm, - tr.hidden-md.hidden-sm, - th.hidden-md.hidden-sm, - td.hidden-md.hidden-sm { - display:none !important - } -} -@media(min-width:992px) and (max-width:1199px) { - .hidden-md, - tr.hidden-md, - th.hidden-md, - td.hidden-md { - display:none !important - } -} -@media(min-width:1200px) { - .hidden-md.hidden-lg, - tr.hidden-md.hidden-lg, - th.hidden-md.hidden-lg, - td.hidden-md.hidden-lg { - display:none !important - } -} -.hidden-lg { - display:block !important -} -table.hidden-lg { - display:table -} -tr.hidden-lg { - display:table-row !important -} -th.hidden-lg, -td.hidden-lg { - display:table-cell !important -} -@media(max-width:767px) { - .hidden-lg.hidden-xs, - tr.hidden-lg.hidden-xs, - th.hidden-lg.hidden-xs, - td.hidden-lg.hidden-xs { - display:none !important - } -} -@media(min-width:768px) and (max-width:991px) { - .hidden-lg.hidden-sm, - tr.hidden-lg.hidden-sm, - th.hidden-lg.hidden-sm, - td.hidden-lg.hidden-sm { - display:none !important - } -} -@media(min-width:992px) and (max-width:1199px) { - .hidden-lg.hidden-md, - tr.hidden-lg.hidden-md, - th.hidden-lg.hidden-md, - td.hidden-lg.hidden-md { - display:none !important - } -} -@media(min-width:1200px) { - .hidden-lg, - tr.hidden-lg, - th.hidden-lg, - td.hidden-lg { - display:none !important - } -} -.visible-print, -tr.visible-print, -th.visible-print, -td.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 - } - .hidden-print, - tr.hidden-print, - th.hidden-print, - td.hidden-print { - display:none !important - } -} -.navbar { - font-size:13px; - font-weight:300; - border:0 -} -.navbar .navbar-toggle:hover .icon-bar { - background-color:#b3b3b3 -} -.navbar-collapse { - border-top-color:rgba(0,0,0,0.2); - -webkit-box-shadow:none; - box-shadow:none -} -.navbar .dropdown-menu { - border:0 -} -.navbar .dropdown-menu>li>a, -.navbar .dropdown-menu>li>a:focus { - font-size:13px; - font-weight:300; - background-color:transparent -} -.navbar .dropdown-header { - color:rgba(255,255,255,0.5) -} -.navbar-default .dropdown-menu { - background-color:#333 -} -.navbar-default .dropdown-menu>li>a, -.navbar-default .dropdown-menu>li>a:focus { - color:#fff -} -.navbar-default .dropdown-menu>li>a:hover, -.navbar-default .dropdown-menu>.active>a, -.navbar-default .dropdown-menu>.active>a:hover { - background-color:#272727 -} -.navbar-inverse .dropdown-menu { - background-color:#008cba -} -.navbar-inverse .dropdown-menu>li>a, -.navbar-inverse .dropdown-menu>li>a:focus { - color:#fff -} -.navbar-inverse .dropdown-menu>li>a:hover, -.navbar-inverse .dropdown-menu>.active>a, -.navbar-inverse .dropdown-menu>.active>a:hover { - background-color:#006687 -} -.btn { - padding:14px 28px -} -.btn-lg { - padding:16px 32px -} -.btn-sm { - padding:8px 16px -} -.btn-xs { - padding:4px 8px -} -.btn-group .btn~.dropdown-toggle { - padding-right:16px; - padding-left:16px -} -.btn-group .dropdown-menu { - border-top-width:0 -} -.btn-group.dropup .dropdown-menu { - margin-bottom:0; - border-top-width:1px; - border-bottom-width:0 -} -.btn-group .dropdown-toggle.btn-default~.dropdown-menu { - background-color:#e7e7e7; - border-color:#dadada -} -.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a { - color:#333 -} -.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a:hover { - background-color:#d3d3d3 -} -.btn-group .dropdown-toggle.btn-primary~.dropdown-menu { - background-color:#008cba; - border-color:#0079a1 -} -.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a { - color:#fff -} -.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a:hover { - background-color:#006d91 -} -.btn-group .dropdown-toggle.btn-success~.dropdown-menu { - background-color:#43ac6a; - border-color:#3c9a5f -} -.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a { - color:#fff -} -.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a:hover { - background-color:#388f58 -} -.btn-group .dropdown-toggle.btn-info~.dropdown-menu { - background-color:#5bc0de; - border-color:#46b8da -} -.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a { - color:#fff -} -.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a:hover { - background-color:#39b3d7 -} -.btn-group .dropdown-toggle.btn-warning~.dropdown-menu { - background-color:#e99002; - border-color:#d08002 -} -.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a { - color:#fff -} -.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a:hover { - background-color:#c17702 -} -.btn-group .dropdown-toggle.btn-danger~.dropdown-menu { - background-color:#f04124; - border-color:#ea2f10 -} -.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a { - color:#fff -} -.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a:hover { - background-color:#dc2c0f -} -.lead { - color:#6f6f6f -} -cite { - font-style:italic -} -blockquote { - color:#6f6f6f; - border-left-width:1px -} -blockquote.pull-right { - border-right-width:1px -} -blockquote small { - font-size:12px; - font-weight:300 -} -table { - font-size:12px -} -input, -.form-control { - padding:7px; - font-size:12px -} -label, -.control-label, -.help-block, -.checkbox, -.radio { - font-size:12px; - font-weight:normal -} -.form-group .btn, -.input-group-addon, -.input-group-btn .btn { - padding:8px 14px; - font-size:12px -} -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { - border-color:transparent -} -.nav-tabs>li>a { - color:#222; - background-color:#e7e7e7 -} -.nav-tabs .caret { - border-top-color:#222; - border-bottom-color:#222 -} -.nav-pills { - font-weight:300 -} -.breadcrumb { - font-size:10px; - font-weight:300; - text-transform:uppercase; - border:1px solid #ddd; - border-radius:3px -} -.pagination { - font-size:12px; - font-weight:300; - color:#999 -} -.pagination>li>a, -.pagination>li>span { - margin-left:4px; - color:#999 -} -.pagination>.active>a, -.pagination>.active>span { - color:#fff -} -.pagination>li>a, -.pagination>li:first-child>a, -.pagination>li:last-child>a, -.pagination>li>span, -.pagination>li:first-child>span, -.pagination>li:last-child>span { - border-radius:3px -} -.pagination-lg>li>a { - padding-right:22px; - padding-left:22px -} -.pagination-sm>li>a { - padding:0 5px -} -.pager { - font-size:12px; - font-weight:300; - color:#999 -} -.list-group { - font-size:12px; - font-weight:300 -} -.label { - padding-right:1em; - padding-left:1em; - font-weight:300; - border-radius:0 -} -.label-default { - color:#333; - background-color:#e7e7e7 -} -.badge { - font-weight:300 -} -.progress { - height:22px; - padding:2px; - background-color:#f6f6f6; - border:1px solid #ccc; - -webkit-box-shadow:none; - box-shadow:none -} -.dropdown-menu { - padding:0; - margin-top:0; - font-size:12px -} -.dropdown-menu>li>a { - padding:12px 15px -} -.dropdown-header { - padding-right:15px; - padding-left:15px; - font-size:9px; - text-transform:uppercase -} -.popover { - font-size:12px; - font-weight:300; - color:#fff -} -.panel-heading, -.panel-footer { - border-top-right-radius:0; - border-top-left-radius:0 -} -.clearfix:before, -.clearfix:after { - display:table; - content:" " -} -.clearfix:after { - clear:both -} -.clearfix:before, -.clearfix:after { - display:table; - content:" " -} -.clearfix: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 -} diff --git a/themes/dark/css/dark.css b/themes/dark/css/dark.css deleted file mode 100644 index 83900dd..0000000 --- a/themes/dark/css/dark.css +++ /dev/null @@ -1,89 +0,0 @@ -/* - Cinder Theme for MkDocs | Copyright 2015 Christopher Simpkins | MIT License -*/ - -body { - font-family:"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 1.7; - background-color: #343838; - color: #FFF; -} -h1, h2, h3, h4, h5, h6 { - font-family:'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; - color: #C63939; -} -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 { - color: #B1B7B9; -} - -h2 { - margin-top: 35px; -} - -h1, h2 { - font-weight: 700; -} -h4 { - font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 300; - margin-top: 20px; - font-style: italic; -} -h5 { - font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-weight: 300; - font-variant: small-caps; -} -pre, code { - background-color: #FCFDFF; -} -pre>code { - font-size: 13px; -} -pre { - margin-left: 25px; - margin-top: 25px; - margin-bottom: 25px; -} -.lead { - font-family:"Inter", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 400; - line-height: 1.4; - letter-spacing: 0.0312em; - color: #B1B7B9; -} -.navbar-default { - background-color: #343838; - border-bottom: 8px #EBF2F2 solid; -} -.bs-sidenav { - background-image: url("../img/grid11.png"); - background-repeat: repeat; - font-family: Inter,"Helvetica Neue",Helvetica,Arial,sans-serif; - font-size: 13px; -} -.well { - background-color: #FCFDFF; -} -.btn-default { - background-color:#FCFDFF; -} -.table-striped > tbody > tr:nth-child(2n+1) > td, .table-striped > tbody > tr:nth-child(2n+1) > th { - background-color: #FCFDFF; -} -#mkdocs-search-query:focus { - outline: none; - -webkit-box-shadow: none; - box-shadow: none; -} -#mkdocs-search-query { - font-family:"Inter", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 20px; - font-weight: 700; - color: #343838; - height: 45px; -} -footer > hr { - width: 35%; -} diff --git a/themes/dark/css/dark.min.css b/themes/dark/css/dark.min.css deleted file mode 100644 index bf1e019..0000000 --- a/themes/dark/css/dark.min.css +++ /dev/null @@ -1,114 +0,0 @@ -body -{ - font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; - font-size:16px; - line-height:1.7; - background-color: #232323; - color: #FFFFFF; -} -h1,h2,h3,h4,h5,h6 -{ - font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif; - color: #FFFFFF; -} -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 -{ - color:#b1b7b9 -} -h2 -{ - margin-top:35px -} -h1,h2 -{ - font-weight:700 -} -h3 -{ - font-weight: 600; -} -h4 -{ - border-bottom: solid 1px; - border-color: #000000; - padding-top: 5px; - padding-bottom: 5px; - color: #FFFFFF; - font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif; - font-weight:450; - margin-top:20px; -} -h5 -{ - font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif; - font-weight:300; - font-variant:small-caps -} -pre -{ - background-color:#161616 -} -code -{ - background-color:#161616; -} -pre>code -{ - font-size:13px -} -pre -{ - margin-top:20px; - margin-bottom:20px; - border-spacing: 100px; -} -.lead -{ - font-family:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif; - font-weight:400; - line-height:1.4; - letter-spacing:.0312em; - color:#b1b7b9 -} -.navbar-default -{ - background-color:#161616; -} -.bs-sidenav -{ - background-color:#161616; - font-family:Inter,"Helvetica Neue",Helvetica,Arial,sans-serif; - font-size:13.5px; -} -.well -{ - border: 1px solid black; - border-radius: 5px; - background-color: rgba(250, 252, 255, 0); -} -.btn-default -{ - background-color:#fcfdff -} -.table-striped>tbody>tr:nth-child(2n+1)>td,.table-striped>tbody>tr:nth-child(2n+1)>th -{ - background-color:#fcfdff -} -#mkdocs-search-query:focus -{ - outline:0; - -webkit-box-shadow:none; - box-shadow:none -} -#mkdocs-search-query -{ - font-family:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif; - font-size:20px; - font-weight:700; - color:#343838; - height:45px -} -footer>hr -{ - width:35% -} \ No newline at end of file diff --git a/themes/dark/css/highlight.css b/themes/dark/css/highlight.css deleted file mode 100644 index a2b9270..0000000 --- a/themes/dark/css/highlight.css +++ /dev/null @@ -1,99 +0,0 @@ -/* - -github.com style (c) Vasily Polovnyov - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #333; - background: #FCFDFF; -} - -.hljs-comment, -.hljs-quote { - color: #998; - font-style: italic; -} - -.hljs-keyword, -.hljs-selector-tag, -.hljs-subst { - color: #333; - font-weight: bold; -} - -.hljs-number, -.hljs-literal, -.hljs-variable, -.hljs-template-variable, -.hljs-tag .hljs-attr { - color: #008080; -} - -.hljs-string, -.hljs-doctag { - color: #d14; -} - -.hljs-title, -.hljs-section, -.hljs-selector-id { - color: #900; - font-weight: bold; -} - -.hljs-subst { - font-weight: normal; -} - -.hljs-type, -.hljs-class .hljs-title { - color: #458; - font-weight: bold; -} - -.hljs-tag, -.hljs-name, -.hljs-attribute { - color: #000080; - font-weight: normal; -} - -.hljs-regexp, -.hljs-link { - color: #009926; -} - -.hljs-symbol, -.hljs-bullet { - color: #990073; -} - -.hljs-built_in, -.hljs-builtin-name { - color: #0086b3; -} - -.hljs-meta { - color: #999; - font-weight: bold; -} - -.hljs-deletion { - background: #fdd; -} - -.hljs-addition { - background: #dfd; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/themes/dark/css/highlight.min.css b/themes/dark/css/highlight.min.css deleted file mode 100644 index 1b6ab94..0000000 --- a/themes/dark/css/highlight.min.css +++ /dev/null @@ -1 +0,0 @@ -.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#fcfdff}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:bold}.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-tag .hljs-attr{color:teal}.hljs-string,.hljs-doctag{color:#d14}.hljs-title,.hljs-section,.hljs-selector-id{color:#900;font-weight:bold}.hljs-subst{font-weight:normal}.hljs-type,.hljs-class .hljs-title{color:#458;font-weight:bold}.hljs-tag,.hljs-name,.hljs-attribute{color:navy;font-weight:normal}.hljs-regexp,.hljs-link{color:#009926}.hljs-symbol,.hljs-bullet{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} diff --git a/themes/dark/fonts/fontawesome-webfont.eot b/themes/dark/fonts/fontawesome-webfont.eot deleted file mode 100755 index 7c79c6a6bc9a128a2a8eaffbe49a4338625fdbc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38205 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 E0QL`y%>V!Z diff --git a/themes/dark/fonts/fontawesome-webfont.svg b/themes/dark/fonts/fontawesome-webfont.svg deleted file mode 100755 index 45fdf33..0000000 --- a/themes/dark/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,414 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/themes/dark/fonts/fontawesome-webfont.ttf b/themes/dark/fonts/fontawesome-webfont.ttf deleted file mode 100755 index e89738de5eaf8fca33a2f2cdc5cb4929caa62b71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80652 zcmd4434B!5y$62Jx!dgfl1wJaOp=*N2qchXlCUL1*hxS(1pzUj2!bdoh~hR1qKGRh zwYF;1y3o}w_SLrdruJ!H7kRd|tG>S2R@?Wq7TP{rA#?eEf9K95lK|TG|33fEKg+%6 z+hTSaAdmL)uWh^R%I%Bq{=#vIHGE2vyyxxQ zu>PXwf4+35#HOMTl7@fkt@MNGkN*dqzrXxudarck;ms?=9TzfXbVcIGGxh+E^d!f> ztp1kWBdO@h9ZDcN>E)O$)*L%OUQ<(5(?2L3bseob+I4i% z(X~e}J$l2@yN*6`^z%o*bo9v4Umbn#sBz47tm;_Pv94o_j;%d*>9HG*-F57d|CLTs zlc>gL3N=cjYLt$8j>eB>jxIjhe{|c??9qFU4jg^^^s&K$J;*W3T~FTeWV|2+Pm&&ML33QxpS<_UX3 zo}ee-@q2t8ugBw&J>0`QlKZ6FaOd4a?i23g?ho95bN|)-zJuoA|NMsm7K+s}nqB%Y z{lQI|ivK_S=vvsKmRk#edAb%6i2hSQfN{*f8@=C#{(3MdvZPB=N8B5iy>ag#%Ndz% zd|;azJHAbmj*E8`hfQQA(J-EOQqrDKvr;880iAi{Eunx`8?Q;WwYSE-ESYZWVy*F( zDyBWrn7@r>BFSWAC`(6{$=}vkS07fh;rcptPAzWdrDR(Yf3n1{ZmbPgSS%G{s_+g8 z?`TBE8*uTOCf?S?TU)|jb#%6^y@R#4wuCfk)~1cCHg1}Q(}asx@ZVV6;lsib{$)h;3&X! zv#^nE>r1k8t{W+F*LfUs0DkxY35 zA&hmqcN%Y!F$Y>O5DtZ_l&QR>OYUgz=wcmSb8^yNnjQ>PHkL5{@qN#TZq2kl zV*Di$^E=g?)6Z1RVL6_0`tSSJtJ;*Bj-~)(fu@d{DcY;wYCkW#w&!@JXYJY^HP^E? zCQEfyNA@&MoHS`-XZ2cas^9s{_6MI-Cq)uIUm`L|ee%J^d;3q| zxwSnC)nU#t^(_m0Cn*@xCMAs)wp8(Omy8LeF_j-`^X2cc)%HzmHU_(Hx@>V>-Qvq` z>KZiO%HNyy@l}?(^Dn$><{N)&oS&(y%gk^5+Z+G+R{j~Y?$2TF2BjKgP>~{l@+5#xb#STNuZ8r?=WCN#*;G43z#WbeP}pXPs)z27Nc6N(s* z7!KVTtaQBluA?%jx!7OW`ifw}I-h-~p~09u-%4wQ;KqEnm7v$k5_U|!oKTDHICC?U z%UO%D>hNJ>6>FK#cCl;NcSO4y&fF{>U=3aD2IJ-~<7dX|?|etL6`R@eA+4k~0kR8WvKfSYMJobh>0d z!tvr{#Gs=xQsl%)QZ6lGj9fo`gtklOnC+PFB5q~+|H?r@3FXkQznBmY53W~ekX>W(B9tH3|SwvWJ~1XLheJ)N0I z(>o?V_Wu8Me(d|W)LC!j>N`8@S%!`yX`U_3UsHzz6Au-Z2`g~&4=#RcvTJE15t5HKCG3gq~ zrQNE0NeW>%!QQ27HO-7A+qxMxD=QAwOuIFjAAehPar8FhU^GezmgM(PUjEZ!aVvTo z+f4ar)c6Iz7iCcIr6=E0eaZm|+(=!(&9s`76^CY2-C-SFe<+|^nd%cY8^1JuY1YJ& zNEP13l7-rTiL2s0XS!=XLA99lj7d|~VsD&Yr5kF;8J`tNS3NtP z3km=mX{w2Vehi0vgtJWyPIUIJBgSuye>Z-6WY=Q{8ZWMnxyP;FvgG!|uO7aA$(Hrw z+_CD-;|@HQ&-QKV!ynInl1lD6!lIx2D(l%Ab2W~;IJV%Y*K9&@JhkbXpDu`9Jg(6d z+iJYP7vu#V=X4}m3WTqqe@p2FDIs8{2q`V01X>50LF_ODG-LDB`qKNS2O{^EnaD-4lj8PxQryhw9Ovnz(^f)Ef8uU z2*Uc*F(U!YNG;Z=rsJ1-f#sUgX(1$2M8Sf-$E7Al%LWLdqj6bc7WX_~h3j9O9*_O&uJZbsHf!YGkkdK3@Lg87({WRsC>(L4Fb~li4zjJka)fxa zJ<+n#5wRuivR)E)-_{cKI=|)#Zn4_0Xty~X_TcLBmPr*n=oDp}nkFxCIBd?kyKP%a z3)^)xWl9 z2=r7xK?qCFaWA6%eUW<(OS^n>tOSf)XGrI(tU^jX@g7V5_k36_LmfzD;9cZ2Bt60U(mW+|v56fMdYE1^I$# zYn;WCDXavVH)nd^#bB7oM%}kFw5ay^Kq2z{plQ z*kp&z*ff+Sx=PK|ch*OZe~qcIBxv>_<;k*S^aT##S!CCW3BP%kt1v!dz`J42aRDEB3Q^9 zD21}(34VTQ(IZF1Jhn)Zz6j{i3uu>ET5e**HtBLu3lZPM0<{ndq;MH6#$^pcf*PO; zMvz-W$VC(*%z=WTFr*hN%2>epb!UK;F`wfv4j+HNDW7rrSOAxeqqrVmK4(7D6k(59 z>H=&TuDEgKDHL&|2wN7Yv#`e^JgPA4Vt%KQQyd--xMIJPNp#^Pj`Q2Qlz>0#cjjo8 zb50~ryxS#YuAmFBly%H=0lx0*)XAQmQFc zVkB8gwmsEZe;gBw3IE}(Q$9K6HufsO;~U;;BjaoL8JTLYcN~)dnc$I_H0~)Ok20lF zEH*-E-`3fATPOE6R2mt-pXDkWQY&S}~TyokXyw@6buLX;*ub6eMzw9v-7(QKA+|L8-TdVjzepa!yjpUdH3-BzoS z^RN#-q^Xcm5ON2MJ89*!I0RmDT*l@V565YbFRc3xzln{*{*Zi$V6!2au+0Bx*H7*XCt+j>rd*JFSa16?@c(S!c!QKzj4ghXs#(BNfx8MKW zBJs8JwfVZoW#4CImaWG3K089H-N*b}ZU%&_l97od>r+*??<+P0u+n#%g zsAHWhdSusS8*aiP8m2FSuj{0_Xk|d>QoN=P1j~p30GtQ5SzQ}+72XTOe%Vit(OY{CQQmf*S4a-!rCL=&B z(CJbN?hlE3G6w2QX%r&SuPF&0CF^DV!xjJeG^zaQE{7S&Sbe7~`Fyx7${c(L58e zQHg&n=5!keg~5Y?YTC|+Ni!3LPbVIMqgMshgqEEacs{gm38lO<&kG^fB@*scroW@{W9O-ROG z?Ki$`92a<4V+*lVm4Oqq!r4Ns(=2x7h2|P0c!?=lQP+gi*9Iv8O(X`OOKxkDF*?Ne zobDYgd-fcgJCZD`sVSrXWW;TobD9?$z6W_|Am$cJq`G6!Mus~mfQn}2SD_BIBt{9=O676JNwgjI2{$qRA*qp zvSkYbovCER>AZt|+W4^(V4Bja^`^ROZ@>N8x+WyW%^&~$qtIa-G4fN@WF!@+bhkh8 zwI|x$m4OtXf9h9_Hsi+CxKkHaoJx6QHS@3*=2;ynM>brCBC90_4WiIPkRH+w+RqOe zN(FF1EwlrzVyy;i(|-KN@y|g0(=VMF60C3?yj!}~TkDMnThnx%epwbjau%!?u^sde zS&;zAY~an5J+Sao@ENtSReJH*(HOgzJIJ)h-SLtH00GoIooB1?3c{;3Nd zItcmYsr^Vn(q;B#D)b#vYpu7{|Nr8@8$Yqw+Un|u@z>RLLv?kx_zn@U-bhFpUq!UIUk>Ec_WYcV*tuLL-w-b>i$yiSh=vxZ!f`sbB z-=>;v02>IL2n8amC4Bu+tzcQvxVok)_R|ElFqg}#JPB|&a9k?c0rhlyvZITWpoS78Q5&7WEiJ5reQ7B^2Lk}GYoL%= zdn%+7>()ZDog}I(uyQ4NZDW1N_=Eq-8ABTu-W@FqX$*TJcLcTYc#EuZIVuOoDNI+C zI>q0tFbn6dkY@2Z{egH2Qe!9oV8P;$@m}5B^M*cAVYl1Lu9iPh*=}Lub)G!&2gTvy z{mybFh(vw>iA|?mQEDd78@ej9V#}hL)08Hcr9!g@Ds0IuNn5?eUZd4*tFbnz&RR9H zBWbC%S^^P^BN0!PhnOZ?w=EdDYUgaXr(#ZZM1DO~>#m~xQcw#9Q43}gLkhU~n2-ZN zSIk-+8nHbWxKEwL8t%nvp~o20mvgBjMit)x|{(&v217kK;Gm%Ge*DDkEd}3 zEcC!xm-842CmxLU*PoOw7i%S}X9dq3hdfu3$P5EU7$6d8bf|e|%Z9~Ok|{^`$n)Pj zbm+Z9@*t5+$Fp=CZ1rzQb1A*S-a;nkyjT2|&-h^`Q0)lX6-|y- zd2IoUi~3Kv3m6l4zz+$=258kmIHE^D78r%v8a=4{12SEsE6Br81A-H=yVLljW!mAz zZ!?>~I$A&okdQ`<6<~_!8j=WO#3+Sdi03dcjeVKjpH3tjrYu|h^nwZ|^TwVpeCh1v zpJ`hJI}?`wEuRox*yL5LTveEj*?p~5%N0oAuA89xRMrq!uySK#dh&$v<1*cm>%O>Z zO=Ym9XTkiNmu`P)`A_5S*wT4(F1w;K@(28nZKh;Nq5U>8jB7UBSrvR=yRd(vYP`*;+HPhnDTHj9A0I9 zUwx&cqSImVx$JtSCuC{Z7`6G?^i)mH{qZ@BE4tRvo=G?yR%Lu>da}{Mn7+e%c4ZViB0LPC|dWSDQ?y(zK%Ro0605Cgn)Hvx}3u07gM+AOX_w zkpve4C?F}UF31K#B34<&_qDw-vEY2y_hr!QjHD)jLV?bWz1 za6@1U{(bSqi%T==jTI_t<;-KTFcx_@ec_at-z_(uUAC~DyA{sWb*Tr9uNWV{uPIfo z+dPWJHbKSg*(@$4q(rQ7Ptp;r%^hQ(?YewTNKu(qVYg1aDDIC`cv-_aCwLp zzmL_AXI7`3hCXU58T#XYKJA3l> zv2a47oQfj}bB~LhhNHNbrF#mFIgz3RyXYg5{~xv6G>w$e7}0LgC>2Lx6(n*T$N%eg zkF|yPsQl>hE*4my+5|EWAjXcl7&dJ%nBi$iu?x{ z2ftGj%|0QHinvmm9w{RalF0@=9;Ji-BYRfTUkOT$Q~OxZF_@NeWa$HlDaDXu`|weD z)=wQ25=a-Cs2=)9yU343sRq+51u4TSMuiR~ojH9{&~~Dal923rLE_K^7Wz~a8B{Ww z&TvSVQjk&kjID=u<}*7F9oorrI}fq@d=(C7iiA<)ysDqw_f+xDp`A~%1AY}62U7+I zJ_z)c4!@QvsR`EvAJpCg_ASjYkl>ra5eYsTFHVL_xFce_d3M{twrvB-w&Pir8Q|b# zJ`f$%GU(}jrPh{;hYD`X!%RLWin5sBd4h^L6+99f}e!kWQ(MMn=A)U zAjLaUdayOf+CarI@Hn7s!Q!KRUdVeHI03TS2(c}z-&vjISA}eP{?|H=yh?9p14B8Z zUwtR>l+piGU3)tDP6DO2WaWVnm9mAX)c1`3p&T3FgXzRmY~aac@_!&z5qz1Tv31DS zMoCm$z(-h9LclJY#vtrq+_>M>s!2{I zYjl@PtYN67JwZBoGJlc58$jk$C5K^&5nz>}sIJr~dK83K0HP*H>|Qfg8m}$UE|H?nvgB=pa{W}siM-Fvh3iT%GguL@o^=lx>; z6V@Be^{V|1{nP+slcg?c9$ID2rj*27hB}ykG-wld0`d&8Fzg@i{<-` zL1oPvV{i>@@g9t_epJ)h&vV1|NQK~+4u zhQ-!IQ42X9(Y%r_0IOI3=q_E|S>6$+z zRy|qvcj=_bArOavE}&+MU6f8b{gH*8Hf>w6cfM%E;}8D9$coiJU>v@3=L9)yQ9L$V zX!5vPJy<(+(Pg(kw|M|4BjRUSKd&|N#eVvo6>6kLDfaTGew(w*W3jR~j4bfQxZLi2 z#5K?ckHqy#+;;WeUAdxtjswo~89U-m~%dGnMrGy#Pjk^B_V zmR$w8Wcg{@LX#uvigl>K^jWfHYOmA7YJe zI{s=n9uKP%!+c%7${C2Lxk$i?R2{*T*jEHkO?G!Cg*J>MOpPj0FU6f+*dItV&g76V z1b)pJ&Z!wP(E#rzjwNY&55X=l5!R#o)VENrBjrccGxDs4XEAo+;jV=ttEC~7{vmN(Hc`<9+{#fpHLj)Nd9eTcO~l4NgU1bOrQL!VpqQp zib+yUYF})TFh>{Clp6kaemgWrcOVVJ5D~Q z^rB8sKjecYq+-~LVDp})?U-e;_|57^a!dOlcUVjWQBca@2J(2{ZyU8X`l3 z!ZKqBCZ5TXguooG(a*5PF(lMTyU2d2(5_-@PHjVp@6l=BYJ$lrZz=76qtMm1H8T=; zL)Zn0K6KS|1i=Ogr#OaMVYNs06d3hV8d164|J-wa|0;h)gc6YoBu~A$=ZzS1s)}zl0NU8}YaCa@jC(V+kyrbM#+k?(iPn;jyOUHEk1n>nCMH%%UO0z z>j#QY`}pTq9$fm9GT()oV^&#NTRhnmitd5??kC*r}T6#G;# zT{4>ua-y&#TH0ZnA=XK;L!+!AC74DR4QTuOh2bC?SJFX#O5+DyJ}yy7B#fLm`Q*Eh zF_YgK+uo5i(hMI&X~g#gMiv-qQ}zODLySC{h&;4W71rlt+aHv#vZ#wET>Bzi;ca&u1rSmPQ3G&xc}HYiM#26F&DUrAx`u3aCK}v z5XBiDFVsi4Yh=C%cTL3z2uCAvAX#O!28fAe3N0efEC^aMGBB5Io|*; znm#!N-*Pp!BJbKaaM^bcoHJC;|9tC{V5ij>OsjqaADrKikrhxvC#!sg?|y7=-hJ+h z1KA#I_y(psW-K8JT^i~i=~ohErf-5MqY3uB9yQZHd2 zvjZa~Xp3ZD8@!%alE$wWbO-JULWg8MMCtqzV+|Kq%teyO5p!I#pgnWsn^55C(m=2- zc&&s31%G#_6ye;};fuGT2`1lW5MwsD{u3X+e0^7~s(RfXhwgC8H>Mxw-yH;Z#wB>& z`%#L>5l40V**gX{bj;Fft?q!=8o^Fk`P6szvipbKFk7%?rwBtNM2*2;N z&8GHYeSp@@0(J;^#d;j(7lv2JFaTl1RM?0Z{hjqWI5G4KuZ97UVXzgE$y@i7tD=12 zT^#R{O_6XaY>I zy0Q0#)#3Ig+TkVzzd}|0UQ?E8H^PXK&+) zOL6<-#w)_ZyY=IEnDis^28kc{4fX92q8$_?LW8qXYst__)tzbG_lR*${^0d6!=uONX5J;|nf-!1;nR z;Aa={tq#p%(H!~vY;JI`5@f>Qp(NlYC%k*B$?74I_QJLiviuMzi+0vZL^FH<;r2qr zb8Cy~r-q?6ndySL5uA8v{a|qk(va@Lkaobx)kSmBI-~R3H$)mSllep!x+h^|kYM?>=wK^lWze7D}H+0pF!brYsPI zmJ3$apq9uww+rYAb{>=fIg39EKmqTa$Y+f=ezOaUzARX=Hn5NBUybl&pvidW^`8#j zf4loY*wftDRarGI;N=!s?pn|l<<=D+dtqzGSHAqE2U50Fpe9w8>W+D2*iv0^=+?;y6u&ad)|$TZN008T^SNbfDq%}` z!`3x>whKNF>jv^OH>^@6@(ZNtFn2F#qXGiyrouwdsRDzCQ&kG-ltwgcC#6Ye_4l7O zX{N$f-LY>~hnee<&D?;{A<#kbFWPh7vU&4XxAtclYgoShrq8Y~URir{;R+2o=rOw`ynAzQsbu|GY)=^OFN;>mcZ!a(H*m zl+Fg^cfe||twYm&W80aacA6VEAOpqB7ROtJ7c0s7{osYbwWA#Qx&XvrY1RQkn>Q|6 zu^xSSn(rIw1-q49Y^>Ql$>wwH@{GUx*vdfQzRXUduRN7Uv*#g zJIv!<=W)Q7hue&a``>C|?@!n>rzW%HvoGxNz4y&8U%4&wC9oPacOKx=qXM4d1X0-a zKLRJoFe@FlDg}-OMVWU@qh6w3BEioP=-Z6|I)(Xwx=JWE z8X376kOPuHLlCBjbXbK#M(rP;>3eKI^=5U4BD*!?zm0rab@p3b+-*HPWarF=w8md# zvZ1(OFP3$A_{RtOa%z8DuJ5t@Jin`7W3rPC8Tl8zu6`@G4;|J$PRBYcOT#KDY=IYY z)~P-^(3c^pAjN6ISe|NoO%~*2b$ym}CFFl`({em9<_syfuqYSThlMu3e8!`ERRiZnEi zMP$Jc5#>1f%D2H?2YMl9o^VB!WU&lY2fq~-8LZDFXYwY7KrAnja($5jo!gQVAv zZSGvv*4NV0Hl<=}p$K_k7u^e~$VqA9qG{vGVoj9|GpDaO@9J4*9b+yQpHiyVJU5|Z zUPGl2lMK0_{?0-DonuVaUE!Lh>8bO+BJN{DguAA^vsj>NT6a^|)}B>YFFvO=E*>6r z#Vn3-!@43p4A3EwrXWbbnrJF;STdDPwkK&1R68gfLl?uQsp!&C3!KaK52%x zLXlNwgU_NqG1yR6Wqc3<> zX3R4ldkN$@#175VmNt!RS~{)S%u>K3auYXm6bxx3$8*{58ZSKe9P9b6C;_NVh7=`4 zj1ZpS7mXAxeT)VU;<$pz<`P{_!7K{Odzd(O@dmU)eAILyQ)mUZN;_K`=7elaJYN3f@5 z0o&xm4S7;s!3skuoXKlZSF7N+rh`~5z!4z5Lq^vHGgzgBaffH2xbNL8e_x!wA1goc zF4NUA`9XrCAt{m!CHNPAAb?8pl)LSU&Xg}kl4;>vBA)4$bB0uwkay{oWj4=5GN+HY zT4yP82a---bts`HX)S^l&tfe=*Dw~&q57mqd3)BJ$gJ73XAQ%V53JcE59CE&&e7Ev zOi7D#x&rn1rEw!o^AX@&xu@3x|%IUO3Bou zjYC7ZwMV8KUr<@$#WB2mUUjXpy>)J+s=Ailfis&jaQ-}FyQX-RlE#p1N8&l`h0w^s z3I;#~@E~+6q+!6!1ZE`S0hI9^1dUi~rRrPC7Sy%MFWV?!S&23m>sRP;@c@1>ek`L) za?X4gy@N11KzEb|8DMM59fZF4v=xqMgG*iy(!bC+ybB$I|0c~HOntCJ_XS1*?35_xct%NR#)2>jcL0W$O{82u=(lp6e? zog*^kiBbmb({!kWb>iqClK~k^rzE7yuv-UW0liA65afU0gi`Hefe?YFX3Q#|F?;%& z71yda{rarR)y?S(=U0ZDk>HkD+wYB(-T(P*|8~cQN#ME1!JIDRZfYw5gVIxFYBJ6sl}dnsEbubsQ|6Ni@jtP>a?dFs%p_WOl2qN7$|owN|! z*9Kd~SdZQT)Qa%S)t#4q;lVw-cQcLMU)m79`Sq=nQm@~0=kC|@xA1G(`=xKw#hgl* zQ;M5Zf%m1LH|Rnuh=VNQTG|Wv1D4Zq$&-v}o=}X^avb2Mmxclm0wsCC=jvJOi~2h2 zU4MeN@WI!H4pJ;rC0mG7IP@m@0cJI6=-)E=>$Gfd`nUw+AIL=0z5Gj2-`XCcGwM4n zB6Q8ri&H}FSVPY}CB5Ejv zaXMM@)1;GB5-8n=Z5~%(3RHAety1I+Ow9ZZ;}(;t8J*>CulHJ0HH~ur8_`AM>ZAE} z&mMl_l^0mcz!R_RW*79!O*OIgUZ+i4y!_nB^0P2eTRg78kB7zCki6?-HBIzz{kTO@ z{^;&ko)};)FTC=^;b)D9`{hOid-1NfX$zOG>Ou3xT61Hq9R(iuVqR{P4ofEr{i4`J zX8+JLki&&(BB>SFgMxPoupc%l5H({176Bmw+e1|JcZVy&$P|MW;T@=v#)?KR1tdf7 z5iyX!d4OI4)kqsC#jXs6fpg$82Xh>hhanckEC2k%a#lc*d=TNRu)UZ^BkQt$!XB*Y z)b;RAzuk6aqTcS%!(X@iSh%L)D&1+f-J{#OJYmO!HrH^`(A8A5rm?iB#X&_K)7)V@ zit_9O4qvOXi(C3!fk433XW_e)R-fa62b|tkMd|7++-Pmkl&h6iuk(R_w0t2X(@8Z|;YOPb5vwvXF_=jxVQDy%lwqR{wc8S~nQ zi`uOYOVw5SDxd3;rcp&beW8gpVeZWj-r;dqlwV%1$aB{QIS;O#D=WxWxIMU08KxWX zXFm_O<~Hy-bT3@#mXH23PZ9hI94u(;gpfyhC>TbHz>(l4i5RCOXd=-A#qPzz)IoMs zX#{D)i$kl8(Tc4DtYYm_xT9|x-}u*aR$cc{U5jk@b1(y3m0<``=cx?ZuDk1-Y&N@r z&F0hYy3Q7?^whyIg8VK~EZ}IVd+54V=NQMnJEiI|R=@rFz2Tb<%KMG~d3T>@WxW*~ zE$kUJMVGO8CWDFkvUxw+x&PgL`||s){^7i``b03PG2B!%O_yCBrd#V*diE%*majRw zcVX|`pAOUW*dBHGD{dW$nuAqZ8*c;hN!AW?SRe(^QxY?xUtO@Nq}xbzV2RK&p??j5 zg)vAYBtAJAfh_^uOD<@n426vX=&3g4sYNZuK!2t`QkG~4btuX5@pTO;#658)Dx1R- z)gSM^CZ|@_`qBY+tT8*ungo^m**ojb>;J~J+e5}6AzbFG+c0HPSvc94YF)l}&ctUo zJ@^z=o#ffpg;Tyib^Y4NRkt*TXQ?f*bZwn4pVf4?#mnbE9jWrnUl41VT|V8**3_N5 zAYQj{W-zp2;r_=aG}iZ~c{bf!w!1f7e$Ae7i5a)=IPZc70T)D{0=WTC>ySVp{=h!qkX`Q5q$w(Sf?HcBtUOu}ewqU-eDsuMH z`P^%9>smhRtE)}NTGUzL##^q6tX)6#`%@OSY<%#7^RAjTdqyI@e%U#}mW8|FM@ger zKYsip`_zRSLcy5}>*5QD#yj~rIinJv4{Ga_;K_1kY_Mc?@c2uo21hPkmlW@LGHOF` z2EqNqc^3&8lo8k~z@ng4Nsvk~SBM3zWgBPqui13h z!x;FPdMQJ^S_oq6k(tH>n->Zuuv2)IETkU9EDskmwQfAind(MFEHdGw=vaj;NmW=3 zD9EeX6nVg(A0(5?j9_hYq>796E3sh2X_~{s#+)*1d-4$Vz>U$)TVRehNQ$wT$zZb> z$oKqU!6sh7x(w$GARxE3WmM!9;#~glyWhRf z=4_uocQTtgkI(+IP>PqVuodSu6j zp8OqbPtsRA>0y3lDeXr%T2hFfx0Ag-^rJ*dz)XrFmqEaQC{I{~DVfF*aNsTQhr~2` zfq@1=-QkaeS2dQka<79`sC~vIk>tY{&|W6ON48z?Fdtx$yugekgQM|zFte2oZv}fR z8M*c)E}8Ku4e2FJHrhid6nHd6F&f4a;$;7UsUJ3WF4~t;IgmQ0+@VCLIbz++MFVKU zOv`OE7F-r{`)q!@soUgtJc}tLqe$LwLWm4XUKA`^F_X&0CoeTnMm#4}ob(*2I7Qnr z*AQ?@8FWLepi^MbI^3r=h?y|8?dSyX{5XV-2Wk_SLdxktkX?CbCpqH_m}R0TkQACQ zTe!CK5V3Hl14Y(K?i|CA%X22=T1>DOI5{hLa19!<`51X1SuCtXIv&umGX)X(9~(E> zMPN%7b~v;Ig>*`wWFX(Bg0PAJ1rRGZYxcbbC#A#6w@*q7?mV1bcIPXXk4q;jr_b!& z;d2dPN_OYwze-=J)5S%m6^SIL3``Mnud1utnK&A&DMAJ3+X7-q!c3xG7xi*aY4gZg|#;U zlD0d6KQu&xfPH)lCh# zMKzmM$Nw(Hja|bt4Ik<7PT?^HU+Q@I(9S`RH)Ly@yn5Y?hO-hAqMK96^IksBlfI&I zeB!Kz%(~T+>#f0wJu|}osewSyqd9av)M&FgyXMWLU>u>)ps-vA^81?AVYlEv?a;M| zsy9O`tgEuxpxf*a>e_cWG&uRH9+>CbxooqP$z1*-p$%>cdjGg?f>zdk*6y>fIeYcx z*7~xtNW>nSV7+`bF5JAhy-ceE)!Nt)t5;;J%cZKe&Tu%{?1X!A@@6>{mf=i+7J$hW zemQ`-92UIWT<^sggT?b`xj_}laN0Xajsq+(EC7vz`6yV%LtjaB3nSX4G}_>2f)`9@ z()0_0>@yt+tR8S^w1lvy;s{*t>p<*Z z!AhBB#e+b$MC%EavRM|72^a$ze51?muvu(2#p+)anD+arjT>in?wiqnTowzoCL#VuNe)gP2552f++V7_L`vOZA*tmjV1RfuM zdHnv0s_2ABcy%b@W7dh`vQYb^`TzaLo9YJ|!YjsChN|l({EP+mKWTj9M928b%FE`L ztqj*c)^OQRj(l~-)ai>R+BPf?uL|3|URy}3f0)Ju^h&{&0-9*xDD)l!VNz*Od!~r2 zAc7WKok`b`G?K;#ga)KBRru}%@sE_`lbE?Kb|$QR<5%9 z^w!Rn@)Z>>-B)W*#@uqHYx2y=Ha*Dt{%s$xaaCA-oh{P>uF7#r`Q$nNIhxGsD^`@Z zbhhd~dzD-}@hs-eE?jS2T%BpHShIFR&>nzSm4D9Ua%EhlD=@94(`T)4)$o1)*2jXn z4RyOJWp^xTuk}H0V&Z&ZGh*7_kKUV3ad1=mNBm6I{;KGCL)(lh755nOD;g+z9nnG| z_%dUzXhIeQQCmlt`9C!H3Pfb=>2uFzPdm;Sg+)4%WCzba+t{qG`tW!x0=@+RG)q;Tx{ps|lRu?R^fi>%c_!Z%1ou-)@~{~s`kaj@M*sd*~ zc|Pm=#7~VMebzYkW^Ln}&tCjgbv)WQZrgpc7WFI|e+^sxvgPpJJNmcwCoVou*|dJP zD|)k$fA3$m-mBcsuV1Iy!(ZH?B<1mUEnC_9z?W^wy1j=l3QoSV+h(qdpO0e5|xWW4_Sit>MUpNdrc-gvzbj`s-9o-i(3 zh-e@`{^xg{i)3G!x{%#_;)kXw5uql5p9H;=K*rqNX>$hkD*_yn^TY^`A^bA6Y!YTt zNr<3?1&;Yq0#LRh_Kut@`VCMFpIm2sN%X_#DKrn>31BM7&fU;zk(9L&?>4`XqHj#mxYMseX72QVfMY+CvMj4YY(63d$K}C6r~iZm zr{R7CjPhschv>WlUZ!s;A-eCdhc2igB2X}mSkFR=Hx+grh&itg-{Df-$UO(F4}8pY z*yY=}-&c8Sc^wZK-*~GWR#XvnfYn`o#jV`Q1HS0pkpy#m35K%Q|E#<=;ETwRPyg4~ zzwuM%5njB;OVL0uUj7!F9pZK6w^sVR&Regz+<4>hia?;Y{AX-8tNfCaCCcvxv*G;d zH@+-1e=*DZ{cgxJw56C<1GTW?}m&l3+@XpkAMc^tne=-T)-_ZhV9Pd^bBb)df zd&OYjRSl!{xwbx9WPNRqv0pIl$rl4YKM`tvU*N?jjpK&U@4~YYG?}4ZFL)WawS!ov zV>8iVphW0QVb$qK7WU?`1EOkT4#=3#JceO3Nz4L0jpx<=+pBDj`fsKk)s+ojpJ;1v z=+%K+Z;g&?uuc4WLuIui{mpuZt?KqMr5Y-4y|uDobQzu<^B51&WA=uT%Ev`VSKVN9 zRPWzkWw(tgBjzP5U`U62VbfUIqcH3v7Z&r^l%|31DwRDJG^e6Fgl>fE_-b#>Oyn_D$|ZY(zMg_o8bE=U|%FQD#Y7avmMLh5+S z;ZIF1h#X_KFf0mPWqd}hv%aReJ9+&RA$C=%;4v^cy{vKO^!?+5nI%igC+D-7OsT-J zFMaWYU6V~|%WGV}4&KXqkI1Ml7FeS%h$my{05mS+`>O%P+7^CfCxNHU_7D z>V+HcdX};2a$Grd@y8zA#I6cGaecD8xu)J(JA;?GDuQKU8;hlTvpieYGA=I58eftL zfx?a_!_#LrE=x}iEQCGouqd)DcJ|Ut#^h}%US_&?>g-S4q4r%A3Qq2N@ZyaRPMfuB zZ*8V)X|Q8~j6wAJtuTxz$ZCaLTfml590>}Y04bIZ=0?*A(Gs4;sEVNs{lz}7)I zUKmgCNKn-Y{fN*@f*3&#Fx4f~+S7`5KNv>hhBBGFn0Bjrx=C-EY>J<0&LQFw9C2Z; z+h@>Rw=cNn)-iJ}#LiP^^9&$yUIB0|${E16mgMKkI(fPn+WagNRIBt42h{>#W7x#L zXUb=)1rF(eH4fq_Bn~G()R$7UO+pjUDyUV_C}0S(R&R}qCWhdj z*iq{Fr>dfEvoVHE$dBJIG?i^$&75PKwgE-a`a)wOBMn7qV~nHR2p?8xR|=aI+9euB zgEj2kDn80Es$I&dJs*Amb+9Bwc25bkTT6!G6 zI{i~=sIyQluMMH@j&=yJLWm?QN@(Gv3(PW0)lik~NTC`Mc2MjgRUPKNFc{hpe2KMGTN4M0Mq{Zl7$q%OlR~e$WNHmHn(mOr zq`1mLAp1Z?gwU>zwq!@BL%bYVkJ{Mzrw-0@KS02|i9RWBIV8)@#wQkj^SZ#jQC0iX7Hsm&?_{R*=3X9F*Rozj&&d*i5&ee#Df(Wo$?NepMIka+wHwLXAQe{NflsU6% z+zxRIBNcg#jyPUWzB?3zI>jf3WSQxWnp;;nj0ekA89h^N+-}hkc@jTv9e!mluM)%; zbs2`+3Td=zg=AW-mUV>h3~{e4`e~y7{DULJWhZV z$Ix5LWYw+$yj2?_apDWI9Lg3Aky~NUU`60ftD;%`vgT5CuhW7!nL&*!G)8L3U9MWJ zPN!96_~?`tripbs6t`N2v9ytsgAXsTVuZqgyK?5XxR?W>H&xw=DACNOFwCnGP}Fk8 zDl>)a77Qqc+Z{m@tjwjW9;+g2nnROa7|F$VAi$DUmD3=fPeSJa>)<86A-6XIG$z-Fn_bf<X~j}>pSeswiai#x7;04^a=|o zHdzXu3~D!k_twGB!iup-<%>wx!n(HuDjeATlAIHvY9Un}`;FJJc|{`9 z-^eP`5K?4)M{evN9gQ)Ivh+8UDT=wU1GBf!lmQtmso=k_g?xr&l!&KZ3_Az9*8E0P zi+U}-`{WnV=3tR(`03+Msx(gd1-|R#&qqX{Imr*3ZT1Iz{{}+=eG!d^m^rdjB)d}@ zhv6|Gg(Yc-5b`RBcykb*k*rxTX9aa6^#76}DUg)W_p?cD%^=e2hYDQ!00MXh&pi5I z3G44!t4i6tWW-GI$p8@?0~mrqGDd}bo&*j9YpI__JtHg*t=Pz5=w`NuBnsrA174Bj zAoLZJYFr@J5w>!s6rAJ=Rv~d9ei09fyQ*wF%r3YGod%I3J`{A1@v!mmJv2b1fr9qw z9(DmP_#+NSJ-UFHS>9?~!b9Q7|;*yG03lx9S&g z2w#aT#@!2P_+)8@v`ku!t_wS^w1>1bU}!)Hfrk-&9rN|-g4Jm8E7m9lmnE|A5eBz- zmKRF!C6901yL8)iTJP0UXZEPd=+9l-dKT}!ZSUe9Tj6upLuQ;j`J93^sT|+7bnnK; zm#956r(WHwU1u5#azNpdMQq);#&Du?f8KS5Ph+bs!p797E_@+7|LCG6*Qz`AS0=)Z zCdBjmI$D>Co8tS9>Me{SF zN22wq%KM_xS1TIEmXdEg`@UsYU$gAUvXv{(*>&~uSC@~;;}eIdJtkK>BIWM-PTg-u z8g{M!Q4u*1<-bQFT5%wnLZOQ4(S`DF9$j`|+1dZG?CNXJS-BE5kIvG%z*@}$cU54F z1YAHpAOwLxqYCxS6bI_rHy=Hb1G>CxJ4eL7M;Mzrr+@RohMS&Y*+<`mW8IA#nxI7`cA~EsZ zB0@lmq&3oJ>1t`ObO&yc#1>XDDv%tR-ePrQje|G`4N4jDr3v(wtYAU4(j_8a+ex)6 zsBQWJXkpTUEL70BNfOp!r)h1GK}%E41v~=NWkfweB~&y1@Dzf0!i*WUAl*T4m7fy) zIJ<bgFWYnPZRf1A>+6^9Ik0S&)wyez(>iO}fjvvt>uN*e z+57I@vuwSNl9o&Pmt0jd^0O{|Znre2adYkAvU3nxxuN)Ov@(KDXfy1?z@_Owo|qeFgb>z;9S;=l){ z*y{q8=7{V8S;YQ3#xogX$>sePsI@&x#K>jXgSX4rG_VN)f6=~Cji?X_Sb^Y+5+p(& z**FA(#%DgDj~0lyy%jMx5F64@n+QR#*h_{pn!x|00m={3mmnB@3WB`;XHCl*KVgm7 zVsZR8HqFSA$3K_q<)52L1s6=$eikcya{>>e4&!U}KQVs7KV$sF_!PdKH$ZOQ_!5p( z-#_#>C2QsYZA?;5?oqE(uOod2c`X6lOu?h+tR(WL2##0X*y-ktwOq^2@i&K`mRHNMSxQTG)~ zS5D`%FZ|e!M=q2tSAO!*UtOMm+~)91xAF5A9^8C!-_T#XmuHrC^Vwy|%2C;m4gEiK{lgY8LcUti zW04jM6b(hIrcKn;^qA49KP*2w?p`q@oth;ycU&APof9cKu(wZ_q{VSE2U;^DnfkO8 z^gEzvik@S>!VV3&_^8$uHEv_CkBx|2&=Zm$#kK+UXsKrHxT!)MeX+E_t3pS}?h&W_ z01V*Fxs-o1_6i$`bd702pWL+W)xW~}Yns#ttbK`e9ngVTHA48BZqrkcKBOTT5g)LE zddeS+3!y6sBx`UNLVvzaYCzjYcn4rdyRuUK-&WPDEpeB(v#Dz{oYp|NY~{7mn{3C&AtI6|43)`Tu!rgp-*)z4*b^gHU3 zi?5yLs{l{=KY(m8KR9{7|DU06X@Cnq#sM0b@sRo831Zd6+f((G}2m25mpZIv36j}4j( z;C=Nq(4g@E8s1cNzlZRAGc8BzL@rXqqENp@K`qic>gu|&5uIobG}rDcTrg*AenUPJ zniI{)VZ~5_UGPkp^bfra@_w(r&L)I^kP0?6IokinDX1=M@ z)?IMu{%zZvTRb*fKcvzFhupsB+hh9Y2r0a}cxS?e<~qsHpj78{-N{vTg3y<&XhxL~NFa@zFmU3ak= z$8(BK?8)>E+}_FeMa6wK6k17W0?SmC_w#zy5m3%ib+?Z?AKfvaV(w zp81BXm$8}InMH{X2Tt9Q#)WV~9tcB^Q9}r~F;>KVq)G502hIW(@e-wgk>D(Q>Dw%_ z4rpg3juR(fH+a$EP-|#^;^pPb^Yih?c0T`nb2I+L->0vnzL`D{zssL}tB#(g=riiT;) zg!eRU!GI}(9~hZd_ybdHN?I);B)R*${0d8c)2#ooUah#pv*|jgC1i?;C2XscFoAw0Y5=wuX+8! zTOPc6UCUI9E`nIW)&)5$?9!`pCL8-~ZqW&zJE`zHv2j;_dU*3oyBm9UUD?t5&7di$ z9SgmF%Q?6F=H9&zeY~(Gylrtob^GS|Q>x_diR+fIoqyr}UfFd6V#W~PpQ)V#l_OV1 zrE+u?HiR#!92sSaF_i|0kxP}%_v*{sYnqS!dE%u{ukAgy>zvYAGt6$upw`%{e{uiK z_wQfZOqKJ*t6Jv!miz3_&|^F<0i56^iwYl$HL%zp=iRkq%DA3OuV`O&XHadhl-a$` z)w|VpmA%|qWY00^<==gH%j$=MQTN{#o>#LpG1j~K-1fDtLGcZQDU`*^I%af~ zRkV+F*a2@ zlYQqRbxTeMJGyd5?cCnp%ANyrc3+vF3T}UJ%DnbXQzle5cvfJL|~-hkLbp`M02S`iMdZr((3Y9evH-jHK2a+cexH1<$k@5Xs`leX+m zG_C8dzc|#guKnCq-m!_LHRmnd%Z}~eKWSz~dwWGFo=C()*WN1sSJRG5yPG4y{zv;s7K452_o-6#ymjR42ds~zQd zO>VwvMv0kpt|c>eAKpEqMA-=?YY(4H5>1klhd+e+88j^F*J8_(J*@xgu82z>c>mgi zJ7><^c~IHOCCE382V}k#6DO1O2<0{c@dE8)2}va;5xD{%KqYQX!La}`lbnF%ADgHj ziJioA_^}h-`?W;&__G)&BH_T{SuWh9Q5gs%We{KBH)F%N9|@h|b;`2|RZ>Vw{JSLg zku1(1266@hi||q9LsBC9Jv@Oj%8X|d%Ckd}LL8w%NboYlX#-DFI8UbVKzU54@E_;D zhhlYryANDzXem4qY@z)g-4lKA|3u1#3jm$a12@oYUO-Bo>;rm_)N?ZF90{R7ylX!& z%&A?V!5i7CkOoO49cm|D-r-`7YPR2IwZs|PkbeiC`^vs!*)O7YKpTqaJ6^`G=sWbg z(w>>Vf;Usag$L2NAdyk>e?;``4su8rH1jPEdaM?-ny33@rEVxLxrsu&Yhv|AHPg& z9DJYHG0|TY{nv_;%Brf$l1qOdV+&>-tdUP9w3T^94o6X5r8e=AujIzInZ4b-&mV`s z>v|kn!9StI2m_!bf}9+|C66>zplpx|-1d;e2Dce^nAQOgJ6C?1En}3b&Xm=6RnxwxbjUsJ z2bM)xiPIW1M52SAL6mWNSXXFpUn^o4xZVuCizi=&29j$k6^K|rDwVoTENq9-OW^`q`_Mk ziAUB05TC4ur3~M)z+{5=*$h#<+vw5jNd;MK##fC2d>^)0$t~bB_}1ySqEu(Nb@wS% zDe4j<4i|g{pBtnLqKvj=^?@^BhQZD3nX|3}JO*M!$rlD|Vl-nx&D@dk7GyR)24Ycr zt%HL7$#a|o1Tmws`}}-Opt?ePesj0Y)ph#;m#s`#&VNZM;6pz7adJ}>Vb zrg@rPa^0u$Q#7uLE}#KG7d*87!CQ#rbArv+Vr-M_UQ}m`5<)u04FQIM9T`wLpyHiR6ePH9uQ>%NH z%x+sB)#$GI8*}{aC&S=kZu=Rq#U5p`haXO_54;X8(6*J?wHT^HZIpW9OAr~@mt!%2 z?-v&%aq-5_CtLEI=&@j*C zEHGGlpLpeo53c^(SHL!${Nk$-8!o;0b@SXo)qOB5y&dB4_GD;iiR`>|T3&1A5NQAqrVQ@)sSb{in6v}%w; z7jq-#7E3Tdc9XZhb}Q_4Ggr>c1@9?d204?MTNm>RtwKC`&C^x{^@`qys=ymmJ?G-b`H=HsMU4Q76d3-LJjVW zIxTdX;t7_f^hki`aCW~UYB!&WDv{fN;CX;xo>YSL-vV^A7`~;j7@@Z_hA7}gqo3SX zS_{CKqI>#Skl#<6)CIVIehPgI*9FCdL1rhj73)C{h=jsd^1L-RAT2CK-*M#yaTOfm z7|o9*o#M+}+;Zuyf$tu9PhuGrhLKB1CBWmLsoP0v;(zeg!y$zlA)|AGA*CUhFc7?S4q%t`D!ldH>{nx)E|oN{wpg{!N(%T>{4F3-uSl$x8$S1-Qd zneRVy!(tJQ;51iM<88s|wUc+wDleb4bMpDKjAh2#Zn)t#>}H*R$EK?3TdH&GB7s1p zHqYy;s4lCmEvv5ZdGl)NT3v4Smg!ZS?pX2grt#x9JH+b;BuyGJuxc)&V^oP%f#DKti~TMtPKgC4pFD#B*e+D0d zmYLq<_W3<;*XNsIpMUfq?DNxG3&=h{s*GqlCCwrrZ-#u7A#G!PfiXN=8R;`8C;4U+A(-|$01{+vA5IHI1%=+ zN#k<%v5EU~)*cQb=qU)*9p6uAf}YQy>x3=CDEFsbTmS?JGPP^Rfde}_cOTxe#9G_= zvTJ1v@X5MbR=QqpE$HnnXiXemyEw0eW_d~8VnX2ZR{Y|=k^ z_gx^Wp)H8-Nv7KZy3Gv#29O=C-30*a7T9LF+N;{jO=9S|LL_qSR6kl;(qkM235Qb{pzL8ZmeAT*`^r`AXlt}529YAF z+Ld9%`5ev-@VGz>B;pL{SZRIgn4#VwAks^a!|@{42vGxvcA#B|L*5FHCR~1;J)KgV*D`=XsnQpsTdad4%C3J0>d`> z_^5LzOVcZRh_bly94Bdsmyao0#U;?(RDw(|86=v_@nBL?kAO70kMp8vgmqkN&rAl+W~;;gX%WkpM{t z6oxFz4Vtu(UovN&QTz^AeF@tnnmanF#=BSQkLTEFh-I|W)NgR;SNlpclrJ6YvX4#}ro z8JjEt>IgbYUf%ypWArOV)ZmR$GDsvicrwYymDsPikM;C$2D+cN{J4C0`Vig~sy0CD zPa=&Gq1c(5VYeEJOF$on$;VWiVb7er`_g@g-c%evnlMf>y$L3pFTDz{!M6&xhQ(H~ zL#LhW(pcZ}%dkURbU#MKj|wc+w6!mT`{wQf1GHWZ9U=nU-=DEfCy5OBoi92Q{yxPj z!ylbSCTT(YW0N6ulHJS5ogqcwV z&qu;1`#M$sT3jBNhR#q$*h`4}OLERe>Oa}vH_ZJ7agmWH#Tjbz@s~1%;Jz6CRNADJ zP4aed&_&*k}kB9L;+<$O24wD4k!dQ)04Ok9slF9GNeFF*k zcN3`jd-@WIzW$zIFxlUq3AZ)2nZP260oKFR2pdWS@jv7$i$2Ku27>)ToiFLr zVL!n7g18D^H`s_QCE(!_XQmYc+LH;6!ad}E?8W~W<%dZ;YgV}w z70pnQU>H}Te$!+Ug;OTh=yJ*ZO4;Ze_?A*Ce12rfgapc>lxp+?LgUDS3E-h;i2syo zfQ>(fBvefQAu}V-4X9_*nJx-j4Ap=&lq(Qh_XZBC4F-8TyP6$1VgutLrd|1(oA#XiXWc#waFCwugwTx5zJby1j0Wl}zOHNL>V#oj=<&U9Ir zp;UpYg2Gc)OR5OHfND1SGL>tF>KjsxGlizwGwt9yo45YUs5uCq*sF1eJyU4{vp=pSg<}f+wRamPUl?Nd;5Db!1!ygR>Qv+l)*1+a01Vzq) z4H7pY&LDTY$m|v~5gki&SF{`HD{w0+rGg%s>kBDg8leV&=0dE?2r4`R0t|wO%7%-) zti%HH!hso7SJ#3lyJ}b;eVV_u{bV0dMEU1W;`8dBJ_VAhPuys;^&!3%c5wj(QqXb5 zo?(Txb8v1C@i{$MrKng~W>CN+)&eaed0=?VSPyAcIK9<|i=B=sVc$lw6>0%9wFVp; zhOzZlajnsSq9Gon!iqm1;grbR1sH0i6Y(mZ_hZrx7FAIx zKogz))C7HOER;5|r;v@McKR|73-u}K?9=*taYis09OO4hv?aQgS$~Wuk4hD^Fk3zg zBKb8pHU^7;(+G>5c$55V%4^HB+n$!aSL(}3l>5EYz!30_^qNkwYgp5V*40*lgnaVh zrX`q`Iyxs+OnQMk^9`bEW0#!l+DImQEOLmbT6?&mc%W;e2<_1se-ILMd1IH*Po{pp zJRV*P=2yA>4A-g1r5tX5LKs@cw-ks!NlZQevtZ8iP0sd z2R3${aX4Vy1VyD7q%~LZ(o`cRv%iu`jAi$73#)5;ULc-c`F~UgBQ=6ckw*=&zvI{ z+UcS0)T{JRySSJhTHV9rDh5B`Str@$eDqR%Sk@TjKBAdX$^AUDhnuMQZDv6HUQIs> z9-imOWiAm0BT^ef=^7_DM8bGSLu6JRm^5pGaB){%CR&jb*Jib=)#29Vn{K;f`2aaq zsgTQEMagr8pWYK^eczVS11fQ40 zyr+3q1-(BgKde<143rp|{IZU{WcVUS5$vGq&lfQ#T16*}U9kOENMz39mMul^O=@w9 zXMnCUr)6GC4sC?nh7O-QaM76CCp|Lh*3yd(B$gk#a?S&Dt~|6nG0+m-f8!4iFP)jZ z|G-siL#NwdyluQbeTz}m;9;v_a zP4NleYHgHnj!%HLpFbPix3sUSB1rAZcvf<6z56qP^efdl)#xu zoB=3Q*(!vfMX==yp!7p&amjz=!pP6$pG9;&e@>+?Xa58Hb97^?eX@a1bpc{I{;_GR z9{xxk{OI9T*fZ&)huwU5K9H@_2e-@Q|G@?H=VC~Y`RvJIewpx>MGa&_v%)YQ)$aoOQ);M zK~)9)|FmvKcqxN=E%D$aIJ-PWt8Of3GHrQI8$_Zxuex*I}nb zQ_y<;H8dg_f2@oGsmP{+9WM-0Oz;+=YB2#th{KY!IH23eIusJ=A(!6CZ@$@o=|9SX3zi2DzN8bFE_?N%l>~g9b%+<~ce_6Q9z zLB2-vnp(|fiEUF3gm0X&0#{Rw6ctli@bZ+6Z}R!by{X$BH;XYP?Q0 z%9mVyV^igp&4zbTtS5!2uPW{QN^f3fAkdhHbUlQCoDaZ|L!At>0wBtv-kXyx<{ zDq#o_#J^JL6;tm>CGEv(gC~&c_k;}&ms(}E1sqnb^sSSsu%HfmghZgM7*1DOrv-{# z@Wqrn8+@?EO@np+h9kbjmR*lnZlV zx|o|fDkU=po58*jmI`t1zc5Pm`p*a8*QLU(zr|lq|L{Fx4;Jst>F0Vq?*7-{QJO4V ze&RlYd_JJ){$I}-8h`}XJ zz7?KTMAq6eVW4w=a&B2IB-z@s^sa7Y{rKr6F*`r?@u#F``ED}b_S7!Uk>9;6T3XyX z!Jo6ZmIQTN5^IN#Wvd@pV3CsMS?P-zc^y^&l?72DQQ#b%3xuC-;6#Wf(Ns|s$R3xM zgjKF@sP+JIdx&9FlVXxjwHP6XL6b<{`}LH31qfeJB}^1^PfKnh1m;461t{xTui$cU z`qgUENDh6JJ#$KBFq@3BR}DGf5Pm6IRO9z$saqyZq_v~ zb;~F6Cuy)C=D;=i@iZO~o9Py=%X&@fAIhuQEvHmQ-_Qq{{*;Q31q7O6NYrEnGY{}I zP<wD4m;$J15AMqV$M(8_|yWS+rb=ZI3fAtPu(cef{XYA@^{>8lr&PRtXJMQ z;$sR;=)pu8#Jsce*fc&jGLr%NIHG9et4B&KK1CpxkSGZuo@g5<-VS7I7KDBuI2s?{ zu;zl;q_WtUdYoC^duBFOpW8CNG(6etFq!W)t98)jb=|XP4)bLm@ClRax|^B<9`C#y zdqKomKKI6Ops}(fk(YChO}ERCZ)S$p-dj*$E^iAor}HVd7Wuf)NKqzlW*UQCC2a@X znX`VTi%@cMy)U$CT(?F^y>Wo6!>DWhT;{-r;W9r?^+%;u{UnLdhRU!Un|zdk^uMQh zGC2{uL1l`GQDs?GWxqZ@m&NF7F_z0BWQ~om-~hdwHj*Z#qGOS^oNB3nx4uqQNVp*p zcbL!%!UTx~kPN37j)yp)Lrq2u1*^(nB$b%4i0}UP{2)5HJ7Yhz~e| zdV}>2Sx&z2+||fGBe-!z)a6{u*sf<^5k5@GqEtKcoSC&vV`?fao;Ci++%*?oRW)tV z^m_4w`|lqt(VN^Z---KKnAsk9Pl^J2(^T@_1M+9`uZ8XQXy|TgENu>TDdSB|c?!insMEx+Qz!M=>m+{7I{hsrOXA2nb*;bfstGGrPL;l* zO22tEP|i-TQTv*X#?Ba32tYQFw=To{5ka|C5kfffkm`kx04$>*M;Lfwl63+3?s3g$ zR%6a!GTN9@McZsR7I7@%I7x6hQoL|l?x3n{Od<9X_OvdlPQA_j9eZ(t!OqdZ;ftVk z1HuX{K6%s*1&Z_ZgG!eh>l%1!R*qCLauNHpj)fdN*kd2|I)$%kYyX zxp>x?DdnA!3xmvKEWE6@qGeuqOnCk5c^BnJ@+%@;%MR-!dNYtRg@TB9cv)AZ0@p8^ z-?bih&1*?~P{{!P>I;{Zd&X6DmCjkho}NuV?Tpy86sa*x@#9eyQ3S4jR|V6@ zvYP~j)AFuBmainBzWc#9Gp@em%lhpKC@yX`HuXYZyzq=-##Ck z^iGl>)~i=^C{8Ux0@-M; zZ=3q8_;^aS;K98+=S=Zy0e9=4GH2)B2Nx)W5Z@ynNi~Fb5hi-*h4eFc<)tvcr|6r0Qou5{qQ8d=5+2 z@ywIl45h}lhm3YT$`&Rm&-_J zT2LYdxsv!JgqV4XqJmVRc!P`IHUZC8loLkFDbl*Mk>ieS^mNi8nPUTiaa?IyLe zVf>ng9GEC9tiobs{UU&jO=@L$_sIP=y_WR|4&y5C<68y?Xrzn5wGZZRsBD@V(uK9A zYM&uEZTtjBNg35GRA6)nJpc`+x)q%Ya(-J23;0mo0BHz48-Jm~#US556Kl@rwLM+TJD&p8uVu<`Us#N-ZWDf}z1l;&b%JCe5BQ zYaTHHwY@tcKTjZ!L){yshpc9JyyjL^_O`4)3xF6Rw~IxHvm&wV02;G=mt1L zA7q*z-ZM%=j4FdzepWH+~Hh68Nu+sCw^XA7qY^}srSEqJb|56j*sRE-RI73=B-s^mpI1f&srlt6cX;4&{f_^EL{KTQGabEI<2!#br0& z{{N{}bDL1%2W+yLx$vNa8Q;F$ zYce2TDR=_#yd$PR<2u#_Hl2-gp8jo_iajks@JL_83|Lpa$LS%-EQ zURM=apCoJ8))mjyGyAJ5PO;=Ddj=0xMWry(BbASBzHTV7M5k*MzQT8ll#-PA85(+U zKO>yBk{Bhxh6277kgFX-VN5+7Ha)NTh%z zJsvoJ(^Mut7~fFQXmf)1;`$n}3#3!8CvqI(ykcFDT)g^=ivn^#UJ6HJJ3a}Oma)&Q z2e6ydGI;mYpp5sjWI;3{B#r$R7nr@_ek1z>#~A#&dS8{69IH z<77A!S7pz%k8qE|is2sR=G&d(mD#gtnC@#p-Q9{O9P?_)@ti{<@b*L64dRl(5Q90% zmQzSyz;3#=wxNf;VX@2a*v%F@Fnr~cLQoz^4T#C5xw*IIcI7S=`mzhg9=Wx)r-A*4 znI5s2>5)`I2r|q~c|hn{iYIQ(&0X4)UDE7!${}B9ihD*^Yc)W>PIGP?pyPC!MIPgF zkb~r>K2#b)@EmjmOy=0AVc)|BfSo@k?;!5uEryNHUOp3{E;jFSTzNV1_Yn5p4& z0`ZS~7mi4)MZp>rSR<>%V3r%|3tGc9MB zRe2<3@d2ew8VnrgC`vK9m82aGuiWo!cgp=v!4q&yh_e+?~~wsDa#{`WsnE(@%)6X15aq-BXGG z1P{{#iUb?H75Qf1B@!F5K1DP6NSjz4ApJ?Zi+jjKs)oOumau=x7!uNWl|xcA=MyfJ z1k&vFh_8i3lTj_1oxT7%!1VyWmcOOn-<6DY9k zeyN(hY111-pE@A>knZJWD>wunbO7?Mu`gfdC@RQxBVCNyZ2I#Nlbh1cAe9pG=rHv= zPV*+SbKF>mWwXWc22*+Qee)4A$s)ZHGRY)20y$u_KhkM3SvMN3+pb2+7&Tsifmf5E=#u-pSB!S(VDbmw6V`^%i>y%xtG9{&90 zBNO!M+@kL3zj9dinw|0$$M7JE%2c($ws`|G({h}^)HcL&lIJ3N0GUe0QlD{*ctD#~ z=uo=)Azc&Df2jMY8t`@`_ea2@X~Z{va>QZTZ+5m{+SQq(wp&+gZC1UoX-_0F`_lYK zS8ZLad}d|)n2H?x^LIJT`z?-f>pGep8oOz>&T27>-ul*sCCe_hmqeyjRK^>6>L99Pm zDGZg^G!EAxEAm%~j&PoLL8reg76>B^thX}SI(|{Q&-S3tTG0l)0f08+p+pVfzGL8m zl@5exCSZHWvQ=~+X7XqWW$6M?)J#@ zsc+a_POCG_X7@)xfU?0B!rThb(&fxfw)9@>2#4twt1D*Q^c7t9g|KwME%>AAfDtlCg zO?6mSo1OC=mR_?{Xt&vH4tZg8p>L6$-Rrbj?5XcL&Ak@Ke5ZLeFgKnyJBgPeVG?x! z3=s}#iAJy#5C+1b;gSsv#vy7#ct+{z#2q{&=N?F=FlVq0sh8wO*uSZrWUbSDf5t35 zKvxD3P9JzlT>a8cIl=ChcmLN#qn+1q;bxS5o5ev21X3ZOY&sxZ+Tf9$r@9a$!x?tM zqzed3M6`u!Vqv-fpj+jFA|r}?#E4Dc0sQe>_iBAdeA;inen0j`yU_O<)%CH^ zb+o%+G4hbvuJ)_XVXM#6`gZ%Y%h?6zs{L2n3`hn+()V%^pE? zUJ9Z#vQnsFzhFm`$sk5)>Q@`SZj^ntux;|dxuB*W&Uj*c; z1jKy+hgP?0=mbjxPFgk6^^TjjZ8d9aW^TP~&h1?#w>u^~Un*#N^Y{a}QrL zY5l}Xk96uJ8wA3^Gd1iGV+Eb}GB)_R@Y$fYpy|BST}2H=IVO!DKgvY4$>xV6#}}cR zkQZ418PsSDDCpjT3WZPSW81F8L=LNDAZox&6$#nN)DQoS40uBjA)|S+IH#I5REw&? z0a7jyHUp&%NwSo+T7Ico;nnziNv5izdGnQ6=2_~X5#K&L%mh1gsropzq756u!FR9= z&r(#BwGg(AU6@J+$SUosIha2+kPG5rEfyK1N=y4caIr`+TySX#rqMV<#4)8>z+A#W z3Aq`V3OC&tN798jCZ4v2_RboobpLlIn9FN96S&_mhSV0$e}$O%*#+&$3O( z^@rqcCdUUC3-$8#8mrNwcYpDQJTR^DpOw?(cPGAo&-+sEZ!2w*ixrwq=4SwzpkY(@ z&_p@W=eXi8=LmL(9yrrZ!AqwXtkWGDMmso+J{Jbg+|^PrTVsF`kV;bD3E1L9PS6SK z=O?FB`~=&cGu3(+j6Ro8o8bz` z!85mp&^M~iBU)ovvl1Mt;N~+m1=~FI`&k=+k9qa0>ABuP-n|iW)_{5oT;titd<2d- zq12QRqv-h8?Aeum_jj@CK-m;Rw`?bOZF>lU1;&h@R^FPKwh z(`h$pCG)n0-rVcYUvubtLgnVo>~XD6Z8Mo2jSHSjZ62EMLv^p`p3TE`|8hDvs(Q{Z zYmTo`_t&!P_v0^V2q|6plMkJ#_JgCVsjfL=d(iq$a(e>nJLy+}1E}=6;)pRCT^hpx z=}3_8jB=i7w1ksPdCp*OK_^260(ihys6vn#keR(_b;AGGv7} zsMCQ|rV?|{+}uwu!8?V(P%s8AENCkWPH$;w85h|&VY*Nd@B>33;ukK@i3q~x#KMrH zIZ_fUYj!!^1=YpP`M&7%vOp<oB$@JDx<&+A))0Jz~>h*p{ zsI#iqms1q=hcBJ6@XmJo^r9;gjry3?Zm$rDVPj+*8g6=!5aBbr96hWnUc}0@ zU}UUB?v-m*-&8%J`VmG+8~|rpH)ec2z|;!e@Bu>(fp8o+Yw@&kt|qOPw__l1gB@-m zwve<3bVV`ZK@Q*!tpGGZP*`<+ZCx$pUZUWRYF10m%F$4eBZWe}1``Gl`DmPhZP&&q z!!_PjgTheU9=B&G3ONGN;IRo1tB_@kU(5*d83z#YmOMKQ19{K3x2Im{nu;_89kEDA zuW3iZ9G8c+X-#9op^lDV(HN8Vq#&9C@!CAMD{oc6eMO;9!{o~o3Bm0&w3l9m)Pf&f zRW{z>asdYXY9V?xAi!NI^EuOM;xlzYZP+-Kh1_{nH37FfP*auXKGxB}p`|-CM!cPU zo~{1-%U#uo_IS9krsji*@?v)X#NF}@#pSuSC@Ylz;S;O{%(vlCt-EAQ5&P)w;u81M z`aFxrQ5+34UEUOkMspjdkFW7FliMgZ+*wm|XKhOS&fKylwbiO_DqDE;@p+}qblhAz z4-t;VKmM_Isdsh#PcPonm=}%aHS%4cnQfN;TwoJ?4C!nm4mg_Wvb9Bgb^tHw&sZyl z$Hx+2*X&YVt-3??7?;1XCQwL-8q8m9b)<%{ZS6IoGjvO)^WqpCaT-r`k$9L77=)ys z*0Jb$3^xc^)jU(LRukky1ksr^DuR53uo@AaPI;1QoSCslj0#aDFM#t;AEDyQF|Wtt zjj=iBoHN+CPJU_4N)}waI3LN2*EgxZW9#6nJ!c8XTE&xrSVw0p zH!n6}G6WDI)wf`Q@C(0XQRA~I|FeyY&3+s=JtMr&j|cs$cC55iMsn9qVo&ErCUit| zbE6#-BDrkVl6ZB6S+|6VjzB&u`p*szEBAC(RCFHh?oR!LeJo#D;ueE!y}YB!7isB! zVT!+@?l-A5W9#b!bImn|q6rIE&x+L4L}neuE*=Qz#UH&fVZs{|Qwu-b+SH|SyER=+ z8$YIFt;?mwv1Eb4`|r#;^}ykVr-bJ2e(wx*gtKmvYJUy9Qw9K7Rwy-)z7lrwT&jZm<+%7|kvAf~R?ER$J zFaFGEOnu6_j0S_}lM-F&BfKE!BO@L2~kRm+3yHr?;CCn&h(cM6Rr`>&b&ZHvWR zB+fR4Q!zmfg&{bzx0&#twyQ=?7e!A3T?F|u!>XuKEC?C1CGsNCItkQqK9(ux1_fEB zM>C=eRQa;1pfD7&SrO_EMZ93O+SX3`{owB3Pg-ZQScUYtxF>zSWU8GdTncvfBk*qr>xZF1t-VNG9xeqd> z31h`^tC8gy?uao;78$YwNh#t~;}0%gNDLlvA}f4fszrQ?oxCZ`c8Gn0zlMb_)iy_X zIF_3KGvT}$sUz$dyKbkvNoe13^N#(uuv^%YR7V))8Au%#)-D=r@(a&FCd{mfiroyFVNeqCU>qrZxaLwe8j*-c2 zvKWvIYsh&NJw|=*kwufdU4*PdBuG5=+@aM56s@W zb+&ZT?5!6HSG9HSerqSQ_II|WF7}7R?8z@4d+dwHgd6Y69Wy5PK0Nf%@aUNR zBPar~gR&sOs~JlGRNP<&Drg>I4Z!qqf)guJgZm^$V{l}@TqfZ zI5q)N7(!7Fy*TBCs4qec5rDWWb=%^xyxeHfl==;p7niq96QvuMF1h4A*W|J)`5pPA z(u#y5e`$U5dvCYJmoCs*&1FRke(}QUib-=4uAHF8@du%Pz^$ z>vfe?T0@~fH>}s@nzSUUah%Bs_?rJ3=KW(eiaVpvfS$_>tQrI=Yr`FZ;kZ&H& z?nDcseFe&#SqDznS&N*-AXHX{8Tm)o@C-NUqOL1mKA4@P2u*^3Xf}z1KC*GFElOfs9NMI zn8O;~evR4%%~g)e>C?h+rPk)8L~SfbTDw+by1ij`pkjq{{955BaZi1yEnq6Ny2j>r zUi-5mb*-z=*yYMyVs=H{@K>uIo(1qqK*OnK!ta~bB+w~jw}tYXcuvlBy3>3vH4=Ey zI0h-RHYmWQ#`sqq!o)6)I{>& zvV#bodyRQ{Rbx9ZgVDLPrFCXU>p1pdc9ULqtifx~&0oP{$5{BBapOvgz2B18&nzt| zinv@Bv!p()O~g|PA%&ra=mS+c-@<5>neds-EZ<`=TMY7DW}V(OphTiUNV3UE#6~7< zPNy_L%A1oxyoG!-R614X(fEZd8m0(n%gaK$(28O?}+`?G7v zra%2o(xH*{X-GQ+-3a(4O+OW3RH=l$XbM0wW>*0Xgm?1(R&PRkMtQ_wdRURv6D|}H zLZNWC#6NQh3%^5#2a~Lf1R8cAkS>pUQ*7Sl$*Ls_#<$F#U32TrH*VVa$mBJ>h2_gv zP1@dFTRST}{($^$UVd9$U8F;tHuZ6aq=Ibxu3gUugP}s4sQ>Zap@aGPg@xmb5*;<& zn|8h^UD7gbT3emNsJVIlx-p^+ZrekC@t6}L)^sD*a#&I$a7m!(d1Ws=lv+T4n&jX% za*+}oscqeeX#78^3xs%T`{2jBgqy_+2j3U&Lj8$mVTP%9<84;>|I`EfZ3(VdlQ)*e zC8hUjWpz{7JcRCpQAKx>o)Y3ES}GbRBTn2-L5k$14rhS60`eIGb;BT~6 z(CZC)*zusp6Z8(AENO09(A+G|N|aA)UeJ7?xwNF2O|3`>kFHA&u1Kz*q&1nflb5}@ zY_isD(z3(!dvi%?vy|th_bC5<(Oe?WDQ#{pWsjCLJ5#GF5`UtzKPlTpg>XB&x&DQ1 z+g_;OYu0K^`$|gonKW8+>gLQ-rAbur|yq$=ZoR~y3#^aB=%C-|g?SZg@QjkuR%X<@ z9cDAL6y|s&$z_aLn>0F&Cnu6?Fgn0%*mFF#bq=N+v z8wwe`O_{;6z@G1O$AdM6db2|?!RwblTkl7!l>*!cL`qHz;|PgS_0ez6rSh|v%T)D=1c4!uS2L>)Gl)6j5EaZ}5b_*i2s z7z&9NX0iHh0qK0^WExb3Sw*8+BhO(vz+CAJ0<#&A!3*6j$hSLu)|`MX&rql>Rgb;U zzw=|k9&NfPDDn=>RKkY=Qt5#o>1o(yY-@Ow^c7n+Hp`{ zjVrL06$qkH&+?p}d{$Br71LGX4bUt@MTW&65WyYUx3QFGndTT|oXl<&h z@OA2JIzg@1*4nI-qdHARPKP&-IkyJgYZm(*k)Tm5vHJzMurRCZM>?dC77ef>3buNQ zIR=b&9X$JBuMUXnzX=+hU}a{rMl!3RY%qyTI`NVz$LsOHbJ!s{rv_|Vhd$4PVT?}7 z4dyV`Y{sxQ*^S3#%p-3qoN8jjnT=^3)N_ zy!wf|#!pg*s=_&_R*um)b&{!|CO=@rBA3B|OCqj32n|IAkV0BvQCJRnF)D`1a2|t} zON_>(5UtQ&B}FhO3CKiH9fhK}l|h|Rrv^!)6UiBk(Nmo60DB3(Id#ZLmVslFR3*y= z!B%(E?yJJqXFuH6;tt9`l@GH;UDY=pxHKA(9IG$hd7wYYD#W+n_{qXC8*Uo>I~H_d z)^lG>pS5?(gi9thTi+88F}ekhSkfwhUH8PiovV7G5{Q zcv!fxs`Xs0W#_w#7vIs{X)!bPFW5ig#LlYM~ue%Ondf@LQPFGVK5yDu$0Q2 zb7znQxJ7j64927rNwNc}vF(>s#NQ9nmR%<#>4e)$Ma%F_Q8X{-rJ?jv55WHd2r%5r z12-SHlLiy_Dj$+6Fo2wKcmi>grV=xaX3xaRkn=}P-k-`p*CR@(y`rz89kv+#=jDIO zt0`^(IO>$uEV+6LaGd0xz5lUy?|(3Of|RoP`{eVj4uD#JN~wVX`ssIA*&X}jhf5oZ z^L#A1Zk?R;i9PhdUZt#%EeDXvhP-OQp;FsG+jPb~%&us&O!*`gViywtd*pvO2IwY$ zEad@S8ZkkcNPwB&Gq{nLAy?!>u?K z0@x^zw^GjNJq3PnD88}C>V!dgSW-4>K^%3cxh?6zc8D>=+?lEi&gii zt#;EFUzlz9l~pUhnoP>C@~imOX8z&}6Yuk+`um7;aA1V0B1FrGlxaBCLsrTN&%nwv zuh$iE)|j9$$l(?zz{UBvuHk9ZjUS+v=-p0JI?9vEh#uUu_#g>~+ z9I9~?Sc);H6@9T{GcKjxfaf1qdWNb;YZ*q{kflTx>V&W=dj{i|6Dpd{8f=Ac^VmA3 z8cfh7Zsla(9)`ofOcqqZQ+=8q=mXl}o2J63FNMHMl#qr2kUKF=083Dr9;AS1f$I{% z{UM42@jEmeLKqZjFdYVYFzC_r0P&*ZH5i)f951R}iT34VlQrj0X|hQ;ul4_`q6(R&HjxqyI1yQva2L&u&tVUoq#0+?C@u`5(4><-(Yfw69 zM)MgY7ZOL19zyU&Ah&3Dd5`+W%rw~x>1rsWDOzjI#D7EHj)J{%2hL6 zQDg6v;&!vCP%n6#M!&#JYI{Mbv37CP*jiXwpcf>6>5|so9R@4RJNPH4t$K1FRh@cB z^SOE&^vy)|DiM*o23BxYWJnH%w1eu-W1?9RFJA=tjV2?)$l)YI92>=@ zI&extAX4bUF`K-3Efl>9FbVRiuWbGgJjqzpE~ph`F9q5A7h99z#=R<_23WXl>EN@ zUvKTXCix&+Jav4zq_J2vnrnVpQC=>nEe6xLrJY;nB_F(UYT^cq3By2WYH8bIwg6<#(YQuf)_rLM zzK$}q^_cN>-x#%dR!?e6!0)II%z3JFLfoM#XsFcq0bns~ci0TAh!Z}(DhlC`L2#$6 z^$75%B*aC?NDN|WN2H^4!NV^+|L}ny7lwZ<-;sLd7+k!i__0?~PqL!>3%k1)esS>N z7wQ%{Fesn5;#bV~T{hvDsS^2vU#(zA2HBtUe<@>%LT5<2s7s)KK_nith{U35R8WUt z^#wh)2v8^h0aozV(XpD2)lf3UE7XwoB@09wkf>IyK^B_I8ah;85?s{XyP|tmv(3Iq zKJuCqDOQfM(p5#1yB95AFgLXMrTv@Ra^iliXHw^~ISUfynu(V!U(iw$@~8ol5SY|Z zYl+rOxuCg7t#QGo3AxBpS+{7}<()#TW#;^O)0^yeZ?(oZt!w+%>)3a?wzdRCOMZ^Q z@Sgl{=8xvEw~kvJI&<07-E%8l;hEFR_VzJR5bb#lQ@2dawL8Z&wY61QZI?{ZxF$^9 zxak|6Ia9jMSu}TI9efFv__f})cw>R!oq5@umV5{1k9gx%T5nTDRH%a8%nkqHzryxO zUf3=ko5Z;+3Z#Qt4r(|%{YBs^rZ6wkU$@L2Cl97RnY~5&<;jxF-RMMf>bHYgs8rClzow^(gBx zJF|h|PmAb+)*4}pNHNOVC=;lXfmA;ArKJ^z>_wS4P_8E(F6L++el!mtsiJotLDZL&koA%;!_`kmrnBt0xYObF z6~0_^F8Fe{st#1Z%ULpTX^wiV13>-COsED**bl=NE-u?zfMH z#mLsxp;cFw=9ZOu^Ylg$+P=!bxQTW572BL9cSn`o2x?(3Dsq>!l+G*MyS?}7kybl# z@BGT~F40+1Kfg*_F}-%lOn0!tH+%eQ=;k8-x3a5&v!lA|bME`x_p!T4^PK=oNJ9uA zY<82)hZHtp2}wvoNMlGs!ppq(?t5?Y=FLpzW50l~4IiaIDMri>u|-5gtcW!#(we3b z5h)_piY?-=h_PaeNU^rH@{7U$xihob1*|{c?wxz?x#ymH?z!ilduQg(On(+DsR!m| zvI_(*9-cGxqLsy^pFPrBnNyfPeaj>F;3XXkPmkZ5#$7r1XxxMtOO0s*NK6yS@RUxS zuD~B)p|oNm9PZ*i2d4-8^hPE%JqD)q@h59>`+i1p?5k&vf9;X>sozedb8W?$-;d*| z?Lg8{$DEn?c1jo>r=-G)lV3Y?{Hxf%TvU>w@P&;TzoVqy6Tx>raPIfPeTpAie~;mO8eXHHKb*@F z(Eji_kp2JX6WSl5SDb#<6Wd`wVDH4?8{K-TQQ@m+ zLS?IRY3i}F;_uj2pl75 zClU7|W+4OzMtv1JxRn2tGcyuK8(vLzQ~JZVj6V8c>NRG_K`5?Sq3f>$4Yj_BPe;0 z7vV-#dm`G2`Dwg^E;**HKnOnArk|1SS9vH0UMo}`A@3sBqv{&dc`Lmiz_>;X>^O){3BW5ywLa2(5ma&wXHpGX($ zhi!m^7}NR@xDJ($@#B0z19%aqP&F}J*hn4L0^o=C*TC|3luLdKOu1YfiG}g5-{g6jv|=T$m@&o zs6WABB9D)PS28mWAbI81ze`xF2P@cxGT8if&BNPG@*h z0G`uH#9Rl{f5dMF_LKd8|IXF6X-BkIXdOB96!v9amROKDoZOInIr(1dvee_L)9D@Q z=Q6d->Fkc|k?b378`_>|JA=0s-k*Cdza;-qVW2Qvc(K@5+*^FCeW3k`ju{=BJ09=c z)p>X4sVR%6d~xc))Tci-JZ;sq2d2F{ebe;EW^A2ta%RuW+RS4!e==*qtZlO%oZUJ5 zzS%#WvwzP0bG|hf`u16c)=+=7{@ty;pq$a zUwH3@#}_SLba>I@i{8Fy{zbbkdUA1L@w&y2U);XLTJl}omYlY9&C(-F-@UZ|(z`Bw zvwNWX$z_L@o$4`r-sqj$yS?|N<#U!_zWn&|pR8E5;`4o4-_E`#SI%E~3|FDwSbg*A z7uU>KQ(p6>Pn@{C{c`j2qnE#N#r7*+?Kk@$>VIYJv30Z74X-xZv@ zZdd27y}O>+^`qVWyASMsVE2jL-`mr@=g^+xHzaT9yWz+U@9f>V*WdfhzP^3K`%dxS zjoWTKQJPmew15Bp*Y(5tv*pF*d&{p?u$ijzeD!Gc9oa3b^5t4ztyX)t-d{gff2*;z zaoi{vYm8CjE5_*qmmM$<9BCGs1I@>qZ<$NXhs~%;)OyWcVq5kz zj&L?RuN+)*@F_R#Hr%JZJ>Iu`;qUTa3AP3=4{jZNX=u~XH->kNR7dxYK012(rp-4U zx#{(r*W7H~{Kzc>x4eC5;i17pj~sgO(2s6C_twE%A0At9_=mS0xqaI0qqjeI$DBKE zyyM|Jr`=h-^NCMS{q(DMeetgEerEJDU%ESe_ujjoxckj}`tN!A-dXpKe)tcghwy(? z%*NR~|AfK-r}ZO*zoPaihB_s25e@f0dDt^d7-KyVEO38xLj)(Z`M5(G(%@848;;-< zo;rOvg3~DbYy@Y({nZH0YO`oGg4?udbR>fDjRtx=f?v?^{k91Hy4Fo^;=3ao@s`Uj z?OLoLC7uiK($;G>Vjs|ET;r=KtcPP4t|Kf(i1XLtYb8?iK;1&T9ifi5hMSs>uR*K_ zzpdI1a9E2g(rb{~0o+yi?$kEG+f^#8Wipqp5AfLut}f~@luTXt#?Vr&Tir?Sg8sT8 zP4E9A&o)RRAxkK^3%I6ub)jW8+Tv>sq`Pn~VWZ_EsKtQ%4b^TgQvnp$S_6$cp$w-( z4f(+9cpgYX2i)!^sC1NMyn#F2!2~WAN-yyeYRq|eslI3xVu+O@&LySvwp-*h^?!q6xN^co7xCY1NIQAkw zt5ddQ{N5kc_Jq*nBOOH=uh7?UeOS9syGOfQ`>e({SCV+pK8;;iS>B$5{h{yyfvuHNWp}Ba?Hoq$WJnEwJX+GXsy@0RL(uK5$E~3SB zG2VrD2`>F!O5NDm)r0ff<@^)_zDTi(R?`~1$n7%v1a87zLH)EAbI_GEKv&Uv>;cJLv$;R(WmGz-A1?59dsvs zn(iWeewOZ`d+D=uAAOGQr(eMH1HVWQ&@a(Z?7V-FewiMkU!l*_7wBR7ReFSejUJ_6 zr^o0w@RG>i#8-oUi@r#|O;6JA&{Oog^d7VIM`WN~heV^W9s0liEAPCumoz$YSp zOh2Ljq@U7%(R+mV4A6hm8G0Y{KXz*2T6R*TL|SA7UI!_1c(F-A6a}vMicaiznkqgf zritldhM1|%7qi4{F-Oc5^TauLrsF)(CC(S~#RX!4__$aoE)d1fAg&VY#nobi*eEuMYs6-; zMQjz<~XMc8cr8F0ote5jTjvVxPECl*E3ai?a4jQ4v)kMNQO2L*T7+ z*c@Prmav2^9C1*%!V|s-#Gn`w!(v2?ikrmE;udj8+$zSzr^I1#o48%vp*@fZETg-7 zZ8yg~-Q97#EK2u8ac>kakKz?k+!w_wqj*&mua4riVcfGmj8~}mD%6vzo4V(vT7hR& z(w@}aN+T<+L225KOf``9lb)};IX;wR%kf8&fhXN$%`jV8zfm%Ew=RX>$S`bpzOb8V zSGMdynHjb1R>`okDz*bZVb^MD&!}6vnW)(Hl<(?ZBiXQ9G7E09q?>-yH(E03+IqE6 zwTCPd0Hd>UA{{u4OBq(#9?mVuWpr0S@R1aSdo@5-F%pE znYrwJJPBcX0D|>C6-mX zX}!t}p<&1=tA?NQ8oDb}m4<|dxWkH`FP&0ZuQZ2rw_2>}P+^?P#z2ylo^o^;0Sv=- zGBw*}@`56d6N*!mNXY}T;ulcQplgRMFUASggf_Emu4Pyem=BFep)+<<#l?ex zgi64KiQ5dTW{1VRiYuk%HEh2a6$`DR4Fy9eSJtf<)LqveQku+%ppqgR!hw?u0c8)H_@==0C=!gU#l&)`}#wk&{VY|jC%vU$tVDY62?7}bjLxvB#3>D8t z#%8Zlh0x+lsNA&^O*xXpX!f#^$X?NJ1g)}H3LI8kN0ef5Io+llNkcbldF5R~pOWDY zg^MVfhSh{|hCQ5d0e3%3CeV>OivF|0HycN!!4x`7(Xp&f+YfvZWG@Ih8e zjrY7V@vx%yc<_eFoFY(#Gf{)Haa+?N=X3x!RB7g6Vi+{6;A+D4yhNi~&6Z&eP@a`6 zOVi9(SgkcE)|a^ky0H{mw*q;*XA~4TZ7ODkObLy%bk-uLPQoY#9g|RjGr176fe*LK zGCkyC%r{cL?lrwMJSue7R(1_ptLUE0vE_#2Bvp6qz=2z_nkg7$P)(Pm4iAy21U|ab z8Ob@iqwL3UlAb;&bKEsCdk zTe8|T{Ctf?LM;a*M3< zf~sIPgxRAi{!E&wO0S7&BW>yqN6JwALd!05yVPhbME0)iEq5@m{ZO=g2!{QP)>;-C z6Vj$I`#$>j8{~9O4m&(V0it)&fsUsZAStf}K~go$5LTik8<{$0 zcSo;g;pUWGWO*&Y#o861Tnp^FnuU%rd+8=dP*t`mfk0+&}oBi3yY$@+znO zEXWI;wAV1CS#6Ienoyc4JVlk@USUIl;WeO97tT)d#4}u}!a+r|w(gT%B;25!Xu3m*vR~n4vTPe4vz^Khl}8|= z)6mNpk)__A)l4}z6F?W*k<4x#5}-16yR1L8T@442@X)z@CNu^v#TACdA`t||;-DUMaCk_l9+ qx{Kk=rVu5YQ9XR<GPS>b$X_& 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 z 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
V$fDV|Iw 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 diff --git a/themes/dark/img/grid1.png b/themes/dark/img/grid1.png deleted file mode 100644 index a6c493aba57b3dcf7f3092dd76e01774a36e1f70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YjLblhj}pEoffQSSPlzj!27;yOJI@0t#*!ev zU^jKvj>D^vLFrV5@Av&@Hg>PSlePTq|IY&m Y?Bzen8XRii;RN}?)78&qol`;+0ET;rjj7P zUL+`;IEGZjy}jkQs>MKn<-(!KJ3e|8&h4E(JD5vIO`U`5??0t8=`H38 zCYh@yy}5bMitA;G)!*;W;wLShyEgX!;`C~}v&narLrbjY{_Bl2SAYNGYV9BEeX(CX zIOqB;ug|z9oBZiqGT-yk{*VhVOLj$uJ1xKbvh0SE)m*>nzH6=ng>sz!`7OU(>i6V* ziB;@#7YHXM2*f#3z5Mc7D{Gy(e%lY9QhNbX`@F?(`Rh45u3vmvGFSMg^<2N}mJ>a} zocBQcUeCD!R@UUV{Ipt$A5h1+&T84Ye&y>gTQ0o((n`H3!fNii;zxTggS6jf0c+<2 zIt*+UP$JHK`Q^K>p*m%z0gXvKYh^Vz@7hg}x#v1d8bFquxDRyqxz0ae8^O9Qfo`0B zcvfkN)!j9l4_|s&V!b8@=m<2WP<=jK*wn%te3JLU5ynUD+iP?{(dOyu=d#Wzp$P!R C0{065 diff --git a/themes/dark/img/grid11.png b/themes/dark/img/grid11.png deleted file mode 100644 index ef37b27e06d21940965e3662000f99bb9f714dde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YjLblhj}pEoffQSSPl)S(FbJ*rngbMJED7=p zW^j0RBMrz|>gnPbQW5v|oS`6tf&jDQ5rvj-Z}(m*XHat5IdhBo=InA-`@;IgXYB_N Z{AbRVdS&*gHV@=222WQ%mvv4FO#pQROGE$w diff --git a/themes/dark/img/grid12.png b/themes/dark/img/grid12.png deleted file mode 100644 index 3f100c41ab3dbd3e80aaeaef07057b689eb14208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8Yj6eZ~$7>&{11YAGAirP+hO)_LEr7heo-U3d z6^w5$oD_915Ma1a>DL!^q3f2&8s;p8>OVQl&wNX^-B$enpU%W>QOA$Z-J)0b=f}s# i$NS~&2bz)gshZ)NdH@fLcq!033=E#GelF{r5}E)XvW0m7 diff --git a/themes/dark/img/grid13.png b/themes/dark/img/grid13.png deleted file mode 100644 index 1a0d83f3af56f947e5f8d4f0031a10c6d2766ce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YjLblhj}pEoffQSSPl)S(FbJ*rngbMJED7=p zW^j0RBMr#ehjcb>g%{ht>=jDMW jeEIWnInW;L%==8Y9-OUOnY2_M=z0cES3j3^P6&{11YAGAirP+hO)_LEr7h0o-U3d z6^w7M9AtEMU~oM+U*%vRr&r*tNu>_l3@3IROenAPoK-Vfuk@bhY_0W{?S7wa&VN3< zYOVQyoAdgge;xm9v%VfELI&e`#k}WV`=3|F{U^Y9uW|nKo`1dmChwe2di~D_dBxM! K&t;ucLK6V42YIOg diff --git a/themes/dark/img/grid15.png b/themes/dark/img/grid15.png deleted file mode 100644 index 1f0417a5d4d9713ed1ddcfe0cbdb91da24273143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YOw2%$Z9B{*ffQ$ePlzj!{tpJl6-$$W9Hx>W zzhH)j+1h>*K=pB+E{-7;jBjtYcW!VHal5!&)Q8h-sqBq8zO#}UpM8G5VK@7a2cHs@ zlw8gJ2d%01ni&6C{>%LrB~?3rhrRz76Z=uVZ29GvQR(GYbJvx^nRP$01tGVyi6<@yyH1)C-$kr&J>{dUJN!vL=mX(9mUAsBgZ#h^CSQ%C;;ZFN* zmI(B~yLAv}q8pko406u%bub4ac@*r{UAxc4!rg%6n|o?jToXKw%nv&!1`KxwPgg&e IbxsLQ00E-nuK)l5 diff --git a/themes/dark/img/grid16.png b/themes/dark/img/grid16.png deleted file mode 100644 index 984454f49d69835c0f85405fb519b07b4a03d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YOw2%$Z9B{*ffP@GPl)S(B=B`9UolXexg^Lh zn4#f7)WmtJKs`~OE{-7;ac^&Lpp>^m41Y z>q^Uj8ln))@ALQD?Y{i7qQ{f Vsk7s_5-`viJYD@<);T3K0RaA@>23f3 diff --git a/themes/dark/img/grid17.png b/themes/dark/img/grid17.png deleted file mode 100644 index fe48c9dd67a4d0104ef7451d9fcc5960361ffa35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YOw2%$Z9B{*ffP@GPlzj!{tp8d2dq~B`OGCj ze!&b4J*vMa&jad-@^oA7d*LUtinNQWuKvl%% zDYZlN&eb!Y=n1uL`s@V|YqzhT3}a58{bBuLi0Jg$8!f;xePoSb%z&zrdW5}KyY zn^5X^X_LzBA6GYp+05`*e);9~`SQEPUzS+y{l0m>{rUXrqs+VOU0#&zx^{D}-}3Ca zcVCvQwQh3|wb@`j*YA5=db!oyb){uMeNiChyZ<2eR=?LE4VkiY{mSE>@96{SyLJ(% zaWha)dH$hyC02KBy~|?-5^sX5yKDtCYR|b!paIvd)-Hw_ey;_j=eyPJ%Mi2H zl}5QQzkGLg0j5@<6|t}1_yOH=4rJS2PLQ7WrN%En;&8|1AKJ?aazDrzh@(Hl4F}o` v((_#nXiE0n??4wJtE(1%=X(L@irtKrRpG`xlUa`dW zzhDO6x_=);f$IG|T^vIy7~ftqWNc7ia6M=*6)@Fe$^sV6PR0i-H{Cl{zjCM1TaWoa zm)NRa=ChjnPrUY9tohG*%P+rdf3@q}v5PNv`CY&GvLtr->lY=v)?F?wv5LL^(#mS? zy4N`}bN#NDn)UfDe{Ci0zWj3O+}_2PU+x0)W5N7&AU?A8&4nQCH!V=KUoXX>C;c(V yO6urAIJ-m^;C-sIM9suOj3zE-%SxHR|WaY)78&qol`;+07Qp{vH$=8 diff --git a/themes/dark/img/grid20.png b/themes/dark/img/grid20.png deleted file mode 100644 index 30e3faeaf7ea78d396cc74d350a0e456dc459560..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 493 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YOw2%$Z9B{*ffQ$ePl)S(80hnQ`VT0`R1)MD z%-~!1?}I2%{X|a}$B>G+x3>(r4jYIt2TYuta&qFFo8J1@gUeR@jNL84{>Q3i8rwa! zoFyvheWCrmC029)#r^aw+PZsdxNTM6`|VX{s#C@1`YpFteqDFcx@b}V{Kxkr*XJy} z{PGKX>fO+XG5uW6E7!kSaQS6P zuCtv`&XN}(&X$GfYR_`c_1kV)xNh;~muBj}%B|++6)&2+2*kP61~(y~OJ7GZ%jE<(I#1*wp8@{Iu0y zYmmJc`G5|dEez%C2YP6>FxUz0OE15yiimVa^BbB{s6Nk&*wo%_f%xqw!-FG?k1|^V R?SWCn;OXk;vd$@?2>^Y2`>Fr{ diff --git a/themes/dark/img/grid3.png b/themes/dark/img/grid3.png deleted file mode 100644 index 4617c9d981cbfd853a1f26f2fc23551f5db55343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YjLblhj}pEoffQSSPlzj!27;yOJI@0t#*!ev zUf8IzarXUY zKQ4YQk6-`X|NQ;id*|8P*8h3&^YZ88{cz^;=lwv@s((K&f5yp_2P?P;Qh=4|e_kGF j!k0fEmjms=&b-fb>%rNol}StGL0bP0l+XkKyNQLl diff --git a/themes/dark/img/grid4.png b/themes/dark/img/grid4.png deleted file mode 100644 index 2a1f1801b129d2c80047823fa45dff8a7b40b08c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YjLblhj}pEoffQSSPlzj!27;yOJI@0t#*!ev zUGm};{#E&`a^Car zS9SkC|Cv|u_i^RC>-O`WSK?#*KKj{aeZ9^3&%ch7$+-LBS2=@v&<=(M>)lU5j`wu+ Kb6Mw<&;$U~w|7eb diff --git a/themes/dark/img/grid5.png b/themes/dark/img/grid5.png deleted file mode 100644 index a1d710e03008c0416911a07c095bc55eb6182b54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YOw2%$Z9B{*ffQ$ePlzj!hJfbemj{3>rjj7P zV1|a-+I|v1^>Lmqjv*C{Z*R7DZg3EBySQA`htq7S?2S3TvyvH~eSW@SH~WtVpAwXm zT+RLmt*Q5#82?%R%l#K6RXcx&z5f>z`%%7Z`Q?{U>E%{)*OkJVbwB!_oy!Mt-&yUx z{IX>2X6w0r*Wt`}xrc7E%=Ih3zVr2ql3mv_WkHf_7embf%DyYHx*LmRru*{C`xj=< zz5B9c*LF^;x$o8$U%v=6^|BSn)+nItRzHwQ+c`m&m4nq?yE)fyIamu=8CEOdPWx__ z2=u_abr5Hw8=5Z+a?bO0Fb5)e6ztYryU)eK-GJnqdumo(6FiR04?8CYiUChoKbLh* G2~7a9w%t(x diff --git a/themes/dark/img/grid6.png b/themes/dark/img/grid6.png deleted file mode 100644 index 71b4148db2e42061888a8e7d9edc23bd093408a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YOw2%$Z9B{*ffP@GPlzj!h6B@==F@;2=8_=4 zV1|YRQ4{B>0`=s0x;TbZFuuKgd}gx)PeWku-2*1i|3xogJmBuWZq}D4XJ5X3`QKnc z$BMvzdv>PRJQmY!pJ!Q8RT=X)+WnCEmUl%jN_Jh#l%4B$-D>UP%P*srmjd}$-`WOn z-oIdFHTT^Pzt@;5eif~?j(!#8zWlQ6byU4pv9GuE-Aj7$O>Ik`-*W49mw{%iD+Q_C z3NdJ_jMdz{d?%2hkKs0gbgi4~w>*39wTmxHs)aF3z7BWhcJqa$C02I}!7A5Y-c^Qb z{$5UyFZzIv0GbwidLhI|U|0Dqzdak~rCTpCd~J32UJJkisc@b)>BI84 z&xeDRq*j(#&GlP;`Q?{iLD4Rc=lwQ1qq1nC7f=8szJ71i`iJL5FB*J5F920mb~SE& zRJ(n+i}KB7Q$QL^tnSK|{VAE&;id&PsKn~;kIhDZSAY#ze);X|JNKc?r)p=QDq{1L z+97)9>X}dUgxWTJ_5z5t+t*KqF{jV|uzoQ_bo%TK%a_8K6J#N3^~@E`9U=Pj;?-eH zJ@dqOP=6H(f7=3K-c5X}_5#9us`doI#B|@TJ1uuuAWq$7y#~&_bA)qZsk_&CD_18_ O40yWwxvX0`+8ix;TbZ#J#<}aczr%i0i@Kx7aj}p0x>NRNYZ$mg?&EVM2o056*)u z;Z~d0yjM}4pYrp+@u#;xJ}AxgTmHWM-@mA?7EhFoUgQIgY{g$@^zbmFD(PA@_YRPs4PkU5gel28^sdC}?oOadFhk!-S^>3!#ba^kyliDP_ubu=yDv+270(5c*KPuxnhj#U zSKBjt!R41x%S%B9ZUNf1dwp@dJH)Y2EB4MtcCOXjb)`{21$$?I$ZLW-4s69fBxiw` scXx9FJs0&n24o(>TR_L|<^&mIUs)AyTslkbJSajuUHx3vIVCg!04|Q`CIA2c diff --git a/themes/dark/img/grid9.png b/themes/dark/img/grid9.png deleted file mode 100644 index 627dda51304ff75b255426e84f012d6a41d0304c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YOw2%$Z9B{*ffP@GPlzj!h6B@==F@;2=8_=4 zUg;&O1RM#r3(c3xYjiSFDQaZ-y!-G8o+o8(;f zwQkwPmnBsze|l}I*>|$EI=phx<(HRVEPZymckyNQi*I+m{D=D7UwS1a>AzvZt>Z?Vo@cl{<%?cH^k zL2BdDL27sVtzQgMDGk){)#_~%NM)YPT)*qDw{U|DM^X|CRPxqpFW9g$S(uV_*LN0z z?7yrBGV}Sdi!aOO#(@pn4ODr%v2VD$`G d3GrUJ%YX0`-_up!f)0Y>!_(EzWt~$(69BQE>Hz=% diff --git a/themes/dark/js/base.js b/themes/dark/js/base.js deleted file mode 100644 index 1db589c..0000000 --- a/themes/dark/js/base.js +++ /dev/null @@ -1,225 +0,0 @@ -function getSearchTerm() { - var sPageURL = window.location.search.substring(1); - var sURLVariables = sPageURL.split('&'); - for (var i = 0; i < sURLVariables.length; i++) { - var sParameterName = sURLVariables[i].split('='); - if (sParameterName[0] == 'q') { - return sParameterName[1]; - } - } -} - -$(document).ready(function() { - /** - * ------------------------------------------------------------------------ - * Taken from themes/mkdocs/js/base.js - * ------------------------------------------------------------------------ - */ - var search_term = getSearchTerm(), - $search_modal = $('#mkdocs_search_modal'), - $keyboard_modal = $('#mkdocs_keyboard_modal'); - - if (search_term) { - $search_modal.modal(); - } - - // make sure search input gets autofocus everytime modal opens. - $search_modal.on('shown.bs.modal', function() { - $search_modal.find('#mkdocs-search-query').focus(); - }); - - // Close search modal when result is selected - // The links get added later so listen to parent - $('#mkdocs-search-results').click(function(e) { - if ($(e.target).is('a')) { - $search_modal.modal('hide'); - } - }); - - if (typeof shortcuts !== 'undefined') { - // Populate keyboard modal with proper Keys - $keyboard_modal.find('.help.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.help]; - $keyboard_modal.find('.prev.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.previous]; - $keyboard_modal.find('.next.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.next]; - $keyboard_modal.find('.search.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.search]; - - // Keyboard navigation - document.addEventListener("keydown", function(e) { - if ($(e.target).is(':input')) return true; - var key = e.which || e.key || window.event && window.event.key; - var page; - switch (key) { - case shortcuts.next: - page = $('.navbar a[rel="next"]:first').prop('href'); - break; - case shortcuts.previous: - page = $('.navbar a[rel="prev"]:first').prop('href'); - break; - case shortcuts.search: - e.preventDefault(); - $keyboard_modal.modal('hide'); - $search_modal.modal('show'); - $search_modal.find('#mkdocs-search-query').focus(); - break; - case shortcuts.help: - $search_modal.modal('hide'); - $keyboard_modal.modal('show'); - break; - default: - break; - } - if (page) { - $keyboard_modal.modal('hide'); - window.location.href = page; - } - }); - } - - $('table').addClass('table table-striped table-hover'); - - // Improve the scrollspy behaviour when users click on a TOC item. - $(".bs-sidenav a").on("click", function() { - var clicked = this; - setTimeout(function() { - var active = $('.nav li.active a'); - active = active[active.length - 1]; - if (clicked !== active) { - $(active).parent().removeClass("active"); - $(clicked).parent().addClass("active"); - } - }, 50); - }); -}); - - -/** - * ------------------------------------------------------------------------ - * Taken from themes/mkdocs/js/base.js - * ------------------------------------------------------------------------ - */ - -$('body').scrollspy({ - target: '.bs-sidebar', - offset: 100 -}); - -/* Prevent disabled links from causing a page reload */ -$("li.disabled a").click(function() { - event.preventDefault(); -}); - -// See https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes -// We only list common keys below. Obscure keys are omited and their use is discouraged. -var keyCodes = { - 8: 'backspace', - 9: 'tab', - 13: 'enter', - 16: 'shift', - 17: 'ctrl', - 18: 'alt', - 19: 'pause/break', - 20: 'caps lock', - 27: 'escape', - 32: 'spacebar', - 33: 'page up', - 34: 'page down', - 35: 'end', - 36: 'home', - 37: '←', - 38: '↑', - 39: '→', - 40: '↓', - 45: 'insert', - 46: 'delete', - 48: '0', - 49: '1', - 50: '2', - 51: '3', - 52: '4', - 53: '5', - 54: '6', - 55: '7', - 56: '8', - 57: '9', - 65: 'a', - 66: 'b', - 67: 'c', - 68: 'd', - 69: 'e', - 70: 'f', - 71: 'g', - 72: 'h', - 73: 'i', - 74: 'j', - 75: 'k', - 76: 'l', - 77: 'm', - 78: 'n', - 79: 'o', - 80: 'p', - 81: 'q', - 82: 'r', - 83: 's', - 84: 't', - 85: 'u', - 86: 'v', - 87: 'w', - 88: 'x', - 89: 'y', - 90: 'z', - 91: 'Left Windows Key / Left ⌘', - 92: 'Right Windows Key', - 93: 'Windows Menu / Right ⌘', - 96: 'numpad 0', - 97: 'numpad 1', - 98: 'numpad 2', - 99: 'numpad 3', - 100: 'numpad 4', - 101: 'numpad 5', - 102: 'numpad 6', - 103: 'numpad 7', - 104: 'numpad 8', - 105: 'numpad 9', - 106: 'multiply', - 107: 'add', - 109: 'subtract', - 110: 'decimal point', - 111: 'divide', - 112: 'f1', - 113: 'f2', - 114: 'f3', - 115: 'f4', - 116: 'f5', - 117: 'f6', - 118: 'f7', - 119: 'f8', - 120: 'f9', - 121: 'f10', - 122: 'f11', - 123: 'f12', - 124: 'f13', - 125: 'f14', - 126: 'f15', - 127: 'f16', - 128: 'f17', - 129: 'f18', - 130: 'f19', - 131: 'f20', - 132: 'f21', - 133: 'f22', - 134: 'f23', - 135: 'f24', - 144: 'num lock', - 145: 'scroll lock', - 186: ';', - 187: '=', - 188: ',', - 189: '‐', - 190: '.', - 191: '?', - 192: '`', - 219: '[', - 220: '\', - 221: ']', - 222: ''', -}; diff --git a/themes/dark/js/bootstrap-3.0.3.min.js b/themes/dark/js/bootstrap-3.0.3.min.js deleted file mode 100644 index 1a6258e..0000000 --- a/themes/dark/js/bootstrap-3.0.3.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.0.3 (http://getbootstrap.com) - * Copyright 2013 Twitter, Inc. - * Licensed under http://www.apache.org/licenses/LICENSE-2.0 - */ - -if("undefined"==typeof jQuery)throw new Error("Bootstrap 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]}}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)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]'),b=!0;if(a.length){var c=this.$element.find("input");"radio"===c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?b=!1:a.find(".active").removeClass("active")),b&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}b&&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.end&&(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]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(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")){if(this.$element.trigger(j),j.isDefaultPrevented())return;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(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}return 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("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?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):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||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(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.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){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),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?"html":"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||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(c).is("body")?a(window):a(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=/^#\w/.test(e)&&a(e);return f&&f.length&&[[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);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).parents(".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=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},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;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());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;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-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/themes/dark/keyboard-modal.html b/themes/dark/keyboard-modal.html deleted file mode 100644 index a3640b6..0000000 --- a/themes/dark/keyboard-modal.html +++ /dev/null @@ -1,40 +0,0 @@ - diff --git a/themes/dark/main.html b/themes/dark/main.html deleted file mode 100644 index 5eabbc2..0000000 --- a/themes/dark/main.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "base.html" %} - -{# -The entry point for the MkDocs Theme. - -Any theme customisations should override this file to redefine blocks defined in -the various templates. The custom theme should only need to define a main.html -which `{% extends "base.html" %}` and defines various blocks which will replace -the blocks defined in base.html and its included child templates. -#} \ No newline at end of file diff --git a/themes/dark/mkdocs_theme.yml b/themes/dark/mkdocs_theme.yml deleted file mode 100644 index 6fae0a2..0000000 --- a/themes/dark/mkdocs_theme.yml +++ /dev/null @@ -1,13 +0,0 @@ -dark_theme: true - -static_templates: - - 404.html - -include_search_page: false -search_index_only: false - -shortcuts: - help: 191 # ? - next: 78 # n - previous: 80 # p - search: 83 # s diff --git a/themes/dark/nav-sub.html b/themes/dark/nav-sub.html deleted file mode 100644 index 3578b05..0000000 --- a/themes/dark/nav-sub.html +++ /dev/null @@ -1,14 +0,0 @@ -{% if not nav_item.children %} -
  • - {{ nav_item.title }} -
  • -{% else %} - -{% endif %} diff --git a/themes/dark/nav.html b/themes/dark/nav.html deleted file mode 100644 index 77a7aae..0000000 --- a/themes/dark/nav.html +++ /dev/null @@ -1,109 +0,0 @@ - diff --git a/themes/dark/search-modal.html b/themes/dark/search-modal.html deleted file mode 100644 index b1eddb7..0000000 --- a/themes/dark/search-modal.html +++ /dev/null @@ -1,27 +0,0 @@ - diff --git a/themes/dark/toc.html b/themes/dark/toc.html deleted file mode 100644 index 26519c5..0000000 --- a/themes/dark/toc.html +++ /dev/null @@ -1,13 +0,0 @@ - \ No newline at end of file From 1c6b4d2b316348521c80b725c4a99fc4671edfc0 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 12:40:50 +0200 Subject: [PATCH 05/46] adding a virtual environment --- .gitignore | 1 + README.md | 6 +++++- requirements.txt | Bin 0 -> 36 bytes 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index 50f57e5..22e3c5a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.arkc *.py[ouc] __pycache__/ +venv/ \ No newline at end of file diff --git a/README.md b/README.md index b169980..4cab0e5 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,11 @@ A documentation generator for ArkScript. ## Usage ```bash -~$ git clone https://github.com/ArkScript-lang/ArkDoc.git +git clone https://github.com/ArkScript-lang/ArkDoc.git +python3 -m venv venv +source ./venv/bin/activate +pip3 install -r requirements.txt +python3 -m arkdoc --help ``` ## Syntax diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..56c59d16e9da4ca1f7c250e95b76664b2eede257 GIT binary patch literal 36 jcmezWFPR~qAqR+y7!nzBf!G!Z4H)zoOu(3zfr|kEvIGXv literal 0 HcmV?d00001 From c72680719e50b45f486034fde5e790f6bb54f360 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 12:41:03 +0200 Subject: [PATCH 06/46] adding a basic logger --- arkdoc/__init__.py | 4 +++- arkdoc/logger.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 arkdoc/logger.py diff --git a/arkdoc/__init__.py b/arkdoc/__init__.py index 5f7ce86..73d8250 100644 --- a/arkdoc/__init__.py +++ b/arkdoc/__init__.py @@ -1 +1,3 @@ -#!/usr/bin/env python3 \ No newline at end of file +#!/usr/bin/env python3 + +from .logger import logger \ No newline at end of file diff --git a/arkdoc/logger.py b/arkdoc/logger.py new file mode 100644 index 0000000..884add6 --- /dev/null +++ b/arkdoc/logger.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +import colorama +from enum import Enum +from datetime import datetime + + +class LogLevel(Enum): + DEBUG = 4 + INFO = 3 + WARN = 2 + ERROR = 1 + NONE = 0 + + +class Logger: + def __init__(self, name: str, level: LogLevel = LogLevel.NONE): + self.name = name + self.level = level + + def _print(self, kind: LogLevel, *args): + if kind.value > self.level: + return + + colors = { + LogLevel.DEBUG: colorama.Fore.MAGENTA, + LogLevel.INFO: colorama.Fore.CYAN, + LogLevel.WARN: colorama.Fore.YELLOW, + LogLevel.ERROR: colorama.Fore.RED + } + now = datetime.now().isoformat(timespec='minutes') + print(f"[${colors[kind]}{kind.name}{colorama.Fore.RESET}] -- {now} -- {' '.join(args)}") + + def debug(self, *args): + self._print(LogLevel.DEBUG, *args) + + def info(self, *args): + self._print(LogLevel.INFO, *args) + + def warn(self, *args): + self._print(LogLevel.WARN, *args) + + def error(self, *args): + self._print(LogLevel.ERROR, *args) + + +colorama.init() +logger = Logger('ArkDoc', level=LogLevel.DEBUG) From 235b7ca9c09ed27ed34a022f96ffd38029625a63 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 12:41:26 +0200 Subject: [PATCH 07/46] adding argument [source_folder] --- arkdoc/__init__.py | 2 +- arkdoc/__main__.py | 19 ++++++++++++++++--- arkdoc/logger.py | 4 +++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/arkdoc/__init__.py b/arkdoc/__init__.py index 73d8250..6d43ffb 100644 --- a/arkdoc/__init__.py +++ b/arkdoc/__init__.py @@ -1,3 +1,3 @@ #!/usr/bin/env python3 -from .logger import logger \ No newline at end of file +from .logger import logger diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index 72f340f..57aafe7 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -1,21 +1,34 @@ #!/usr/bin/env python3 +import os import sys import argparse +from . import logger + EXIT_SUCCESS = 0 EXIT_FAILURE = 1 def main() -> int: - parser = argparse.ArgumentParser(description='ArkScript Documentation generator') + parser = argparse.ArgumentParser( + description='ArkScript Documentation generator' + ) + parser.add_argument( + 'source_folder', + type=str, + help='Path to the ArkScript source folder' + ) args = parser.parse_args() - print(args) + + if not os.path.exists(args.source_folder): + logger.error(f"Folder `${args.source_folder}` does not exists") + return EXIT_FAILURE return EXIT_SUCCESS if __name__ == '__main__': - sys.exit(main()) \ No newline at end of file + sys.exit(main()) diff --git a/arkdoc/logger.py b/arkdoc/logger.py index 884add6..14aa57b 100644 --- a/arkdoc/logger.py +++ b/arkdoc/logger.py @@ -29,7 +29,9 @@ def _print(self, kind: LogLevel, *args): LogLevel.ERROR: colorama.Fore.RED } now = datetime.now().isoformat(timespec='minutes') - print(f"[${colors[kind]}{kind.name}{colorama.Fore.RESET}] -- {now} -- {' '.join(args)}") + print( + f"[${colors[kind]}{kind.name}{colorama.Fore.RESET}] -- {now} -- {' '.join(args)}" + ) def debug(self, *args): self._print(LogLevel.DEBUG, *args) From 96c8c89d5358c8e0087d1a83d954aa795bbf023b Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 13:25:29 +0200 Subject: [PATCH 08/46] adding a very basic WIP parser --- arkdoc/parser/__init__.py | 4 ++ arkdoc/parser/ast.py | 14 +++++++ arkdoc/parser/parser.py | 80 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 arkdoc/parser/__init__.py create mode 100644 arkdoc/parser/ast.py create mode 100644 arkdoc/parser/parser.py diff --git a/arkdoc/parser/__init__.py b/arkdoc/parser/__init__.py new file mode 100644 index 0000000..544151d --- /dev/null +++ b/arkdoc/parser/__init__.py @@ -0,0 +1,4 @@ +#!/usr/bin/env python3 + +from .ast import NodeType, Node +from .parser import Parser \ No newline at end of file diff --git a/arkdoc/parser/ast.py b/arkdoc/parser/ast.py new file mode 100644 index 0000000..0974d24 --- /dev/null +++ b/arkdoc/parser/ast.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 + +from enum import Enum + + +class NodeType(Enum): + Comment = 1 + Definition = 2 + Other = 3 + + +class Node: + def __init__(self, node_type: NodeType): + self.node_type = node_type \ No newline at end of file diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py new file mode 100644 index 0000000..8549323 --- /dev/null +++ b/arkdoc/parser/parser.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 + +from typing import List +from collections import OrderedDict + +from .. import logger + + +class Symbol(str): + pass + + +class Comment(str): + pass + + +Keywords = "let mut set del fun if while import begin quote".split() +Number = (int, float) +Atom = (Comment, Symbol, Number) + + +class Parser: + def __init__(self, filename: str): + self.filename = filename + self.ast = None + + def _tokenize(self, chars: str) -> List[str]: + transformations = OrderedDict([ + ('\n', ' '), + ('\r', ' '), + ('\t', ' '), + ('{', '(begin'), + ('}', ')'), + ('[', '(list'), + (']', ')'), + ('(', ' ( '), + (')', ' ) '), + ]) + + for before, after in transformations.items(): + chars = chars.replace(before, after) + + return chars.split(' ') + + def _read_from_tokens(self, tokens: List[str]) -> List: + if len(tokens) == 0: + raise SyntaxError('unexpected EOF') + + token = tokens.pop(0) + + if token == '(': + L = [] + while tokens[0] != ')': + L.append(self._read_from_tokens(tokens)) + + tokens.pop(0) # pop off ')' + return L + elif token == ')': + raise SyntaxError('unexpected )') + else: + return self._atom(token) + + def _atom(self, token: str) -> Atom: + try: + return int(token) + except ValueError: + try: + return float(token) + except ValueError: + if token and token[0] == '#': + return Comment(token) + else: + return Symbol(token) + + def parse(self): + with open(self.filename, 'r') as f: + program = f.read() + + self.ast = self._read_from_tokens(self._tokenize(program)) + logger.debug(self.ast) From 927adb331832d355e93f621783ea32aced961fdd Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 13:26:25 +0200 Subject: [PATCH 09/46] renaming logger.py to logger_utils.py --- arkdoc/__init__.py | 4 +++- arkdoc/{logger.py => logger_utils.py} | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) rename arkdoc/{logger.py => logger_utils.py} (88%) diff --git a/arkdoc/__init__.py b/arkdoc/__init__.py index 6d43ffb..ca8f576 100644 --- a/arkdoc/__init__.py +++ b/arkdoc/__init__.py @@ -1,3 +1,5 @@ #!/usr/bin/env python3 -from .logger import logger +from .logger_utils import logger +from .parser import Parser +from .reader import parse_all_in \ No newline at end of file diff --git a/arkdoc/logger.py b/arkdoc/logger_utils.py similarity index 88% rename from arkdoc/logger.py rename to arkdoc/logger_utils.py index 14aa57b..0691ca7 100644 --- a/arkdoc/logger.py +++ b/arkdoc/logger_utils.py @@ -19,7 +19,7 @@ def __init__(self, name: str, level: LogLevel = LogLevel.NONE): self.level = level def _print(self, kind: LogLevel, *args): - if kind.value > self.level: + if kind.value > self.level.value: return colors = { @@ -30,7 +30,7 @@ def _print(self, kind: LogLevel, *args): } now = datetime.now().isoformat(timespec='minutes') print( - f"[${colors[kind]}{kind.name}{colorama.Fore.RESET}] -- {now} -- {' '.join(args)}" + f"[{colors[kind]}{kind.name:^5}{colorama.Fore.RESET}] -- {now} -- {' '.join(args)}" ) def debug(self, *args): From c82dd39c4837b79628173e09ce88b270b7153113 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 13:26:52 +0200 Subject: [PATCH 10/46] adding a file explorer and reader --- arkdoc/__main__.py | 12 +++++++++--- arkdoc/reader.py | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 arkdoc/reader.py diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index 57aafe7..32ac4a5 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -5,6 +5,7 @@ import argparse from . import logger +from .reader import parse_all_in EXIT_SUCCESS = 0 @@ -12,21 +13,26 @@ def main() -> int: - parser = argparse.ArgumentParser( + cli = argparse.ArgumentParser( description='ArkScript Documentation generator' ) - parser.add_argument( + cli.add_argument( 'source_folder', type=str, help='Path to the ArkScript source folder' ) - args = parser.parse_args() + args = cli.parse_args() if not os.path.exists(args.source_folder): logger.error(f"Folder `${args.source_folder}` does not exists") return EXIT_FAILURE + parsers = parse_all_in(args.source_folder) + for p in parsers: + logger.info(f"Parsing {p.filename}...") + p.parse() + return EXIT_SUCCESS diff --git a/arkdoc/reader.py b/arkdoc/reader.py new file mode 100644 index 0000000..7cd6f0c --- /dev/null +++ b/arkdoc/reader.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import glob +from typing import List + +from .parser import Parser + + +def explore(folder: str) -> List[str]: + return glob.glob(f"{folder}/*.ark", recursive=True) + + +def parse_all_in(folder: str) -> List[Parser]: + parsers = [] + for f in explore(folder): + parsers.append(Parser(f)) + return parsers From d62c170912a7b8ddc788453d3500cdafcd68076e Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 13:39:23 +0200 Subject: [PATCH 11/46] adding a generator module plus the specification --- arkdoc/generator/__init__.py | 1 + arkdoc/generator/specification.py | 39 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 arkdoc/generator/__init__.py create mode 100644 arkdoc/generator/specification.py diff --git a/arkdoc/generator/__init__.py b/arkdoc/generator/__init__.py new file mode 100644 index 0000000..5f7ce86 --- /dev/null +++ b/arkdoc/generator/__init__.py @@ -0,0 +1 @@ +#!/usr/bin/env python3 \ No newline at end of file diff --git a/arkdoc/generator/specification.py b/arkdoc/generator/specification.py new file mode 100644 index 0000000..3d851e7 --- /dev/null +++ b/arkdoc/generator/specification.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +from typing import List +from dataclasses import dataclass + + +@dataclass +class Param: + name: str + desc: str + + +@dataclass +class Description: + brief: str + details: str + params: List[Param] + code: str + authors: List[str] + + +@dataclass +class Function: + name: str + desc: Description + + +class File: + def __init__(self, path: str): + assert( + path.endswith('.ark'), + f"{path} isn't an ArkScript source file" + ) + self.path = path + + +@dataclass +class FileList: + files: List[File] From 395f59fdd7f168c8b373663a4ec6a858c14a3844 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 13:55:14 +0200 Subject: [PATCH 12/46] enhancing generator and adding basic WIP template --- arkdoc/generator/__init__.py | 4 +++- arkdoc/generator/html.py | 19 +++++++++++++++++++ arkdoc/generator/specification.py | 12 ++++++------ templates/temp.html | 10 ++++++++++ 4 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 arkdoc/generator/html.py create mode 100644 templates/temp.html diff --git a/arkdoc/generator/__init__.py b/arkdoc/generator/__init__.py index 5f7ce86..9dddc90 100644 --- a/arkdoc/generator/__init__.py +++ b/arkdoc/generator/__init__.py @@ -1 +1,3 @@ -#!/usr/bin/env python3 \ No newline at end of file +#!/usr/bin/env python3 + +from . import specification diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py new file mode 100644 index 0000000..a3fa99e --- /dev/null +++ b/arkdoc/generator/html.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 + +from . import specification + +from .. import logger + + +class CodeToHTML: + def __init__(self, list: specification.FileList): + self.list = list + self.template = (specification.TEMPLATE_FOLDER / "temp.html").read_text('utf-8') + + def generate(self): + for file in self.list.files: + logger.info(f"Generating {file.path} documentation...") + logger.info(f"Found {len(file.functions)} functions") + + for func in file.functions: + logger.debug(func) diff --git a/arkdoc/generator/specification.py b/arkdoc/generator/specification.py index 3d851e7..89884ce 100644 --- a/arkdoc/generator/specification.py +++ b/arkdoc/generator/specification.py @@ -2,8 +2,11 @@ from typing import List from dataclasses import dataclass +from pathlib import Path +TEMPLATE_FOLDER = Path("templates") + @dataclass class Param: name: str @@ -25,13 +28,10 @@ class Function: desc: Description +@dataclass class File: - def __init__(self, path: str): - assert( - path.endswith('.ark'), - f"{path} isn't an ArkScript source file" - ) - self.path = path + path: str + functions: List[Function] @dataclass diff --git a/templates/temp.html b/templates/temp.html new file mode 100644 index 0000000..d2c054a --- /dev/null +++ b/templates/temp.html @@ -0,0 +1,10 @@ + + + + {title} + + + + {content} + + \ No newline at end of file From 14cddc0d3a74cdbce4a6c6be7491e6edecf27bb5 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 13:55:59 +0200 Subject: [PATCH 13/46] updating python requirements --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4cab0e5..73cc27f 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A documentation generator for ArkScript. ## Dependencies -* Python >= 3.7 +* Python >= 3.9 ## Usage From 3b203b320b9bd33799eaf9d60f030044f556b1de Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 14:02:09 +0200 Subject: [PATCH 14/46] adding more files for the templates --- assets/css/.gitkeep | 0 assets/js/.gitkeep | 0 templates/404.html | 0 templates/index.html | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/css/.gitkeep create mode 100644 assets/js/.gitkeep create mode 100644 templates/404.html create mode 100644 templates/index.html diff --git a/assets/css/.gitkeep b/assets/css/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/assets/js/.gitkeep b/assets/js/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..e69de29 diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..e69de29 From bb981a6352b5b2cbaf371779c8276b2dc773f190 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 15:06:22 +0200 Subject: [PATCH 15/46] enhancing the parser's tokenizer --- arkdoc/logger_utils.py | 13 +++-- arkdoc/parser/parser.py | 111 +++++++++++++++++++--------------------- 2 files changed, 62 insertions(+), 62 deletions(-) diff --git a/arkdoc/logger_utils.py b/arkdoc/logger_utils.py index 0691ca7..53f07c9 100644 --- a/arkdoc/logger_utils.py +++ b/arkdoc/logger_utils.py @@ -19,18 +19,23 @@ def __init__(self, name: str, level: LogLevel = LogLevel.NONE): self.level = level def _print(self, kind: LogLevel, *args): - if kind.value > self.level.value: - return - colors = { LogLevel.DEBUG: colorama.Fore.MAGENTA, LogLevel.INFO: colorama.Fore.CYAN, LogLevel.WARN: colorama.Fore.YELLOW, LogLevel.ERROR: colorama.Fore.RED } + + if kind.value > self.level.value: + return + + prefix = f"[{colors[kind]}{kind.name:^5}{colorama.Fore.RESET}]" now = datetime.now().isoformat(timespec='minutes') + colored_now = f"{colorama.Fore.MAGENTA}{now}{colorama.Fore.RESET}" + rest = ' '.join(str(el) for el in args) + print( - f"[{colors[kind]}{kind.name:^5}{colorama.Fore.RESET}] -- {now} -- {' '.join(args)}" + f"{prefix} -- {colored_now} -- {rest}" ) def debug(self, *args): diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index 8549323..e9b7067 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -1,22 +1,63 @@ #!/usr/bin/env python3 -from typing import List +import re +from typing import List, NamedTuple from collections import OrderedDict from .. import logger -class Symbol(str): - pass +class Token(NamedTuple): + type: str + value: str + line: int + column: int - -class Comment(str): - pass + def __str__(self): + return f"Token({self.type}, '{self.value}', line={self.line}, col={self.column})" Keywords = "let mut set del fun if while import begin quote".split() -Number = (int, float) -Atom = (Comment, Symbol, Number) +TokenSpecification = [ + ('NUMBER', r'\d+(\.\d*)?'), + ('STRING', r'"[^"]*"'), + ('ID', r'[\w:?=!@&<>+\-%*/.]+'), + ('PARENS', r'[()\[\]{}]'), + ('COMMENT', r'#[^\n]*'), + ('NEWLINE', r'\n'), + ('SKIP', r'[ \t]+'), + ('MISMATCH', r'.'), +] + + +def tokenize(code: str) -> List[Token]: + tok_regex = '|'.join( + '(?P<%s>%s)' % + pair for pair in TokenSpecification + ) + line_num = 1 + line_start = 0 + + lines = code.split('\n') + + for mo in re.finditer(tok_regex, code): + kind = mo.lastgroup + value = mo.group() + column = mo.start() - line_start + + if kind == 'ID' and value in Keywords: + kind = value + elif kind == 'NEWLINE': + line_start = mo.end() + line_num += 1 + continue + elif kind == 'SKIP': + continue + elif kind == 'MISMATCH': + raise RuntimeError( + f'{value!r} unexpected on line {line_num}\n{lines[line_num - 1]}' + ) + yield Token(kind, value, line_num, column) class Parser: @@ -24,57 +65,11 @@ def __init__(self, filename: str): self.filename = filename self.ast = None - def _tokenize(self, chars: str) -> List[str]: - transformations = OrderedDict([ - ('\n', ' '), - ('\r', ' '), - ('\t', ' '), - ('{', '(begin'), - ('}', ')'), - ('[', '(list'), - (']', ')'), - ('(', ' ( '), - (')', ' ) '), - ]) - - for before, after in transformations.items(): - chars = chars.replace(before, after) - - return chars.split(' ') - - def _read_from_tokens(self, tokens: List[str]) -> List: - if len(tokens) == 0: - raise SyntaxError('unexpected EOF') - - token = tokens.pop(0) - - if token == '(': - L = [] - while tokens[0] != ')': - L.append(self._read_from_tokens(tokens)) - - tokens.pop(0) # pop off ')' - return L - elif token == ')': - raise SyntaxError('unexpected )') - else: - return self._atom(token) - - def _atom(self, token: str) -> Atom: - try: - return int(token) - except ValueError: - try: - return float(token) - except ValueError: - if token and token[0] == '#': - return Comment(token) - else: - return Symbol(token) - def parse(self): with open(self.filename, 'r') as f: program = f.read() - self.ast = self._read_from_tokens(self._tokenize(program)) - logger.debug(self.ast) + self.ast = [] + for token in tokenize(program): + self.ast.append(token) + logger.debug(*self.ast) From 3ac4796e802f262a0518b01b2172e712388971ab Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 15:23:48 +0200 Subject: [PATCH 16/46] fixing parser and better tokenizer --- arkdoc/parser/parser.py | 42 +++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index e9b7067..a906f93 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -2,7 +2,6 @@ import re from typing import List, NamedTuple -from collections import OrderedDict from .. import logger @@ -22,7 +21,8 @@ def __str__(self): ('NUMBER', r'\d+(\.\d*)?'), ('STRING', r'"[^"]*"'), ('ID', r'[\w:?=!@&<>+\-%*/.]+'), - ('PARENS', r'[()\[\]{}]'), + ('LPAREN', r'[(\[{]'), + ('RPAREN', r'[)\]}]'), ('COMMENT', r'#[^\n]*'), ('NEWLINE', r'\n'), ('SKIP', r'[ \t]+'), @@ -60,16 +60,46 @@ def tokenize(code: str) -> List[Token]: yield Token(kind, value, line_num, column) + +def tree_from_tokens(tokens: List[Token]) -> List: + if len(tokens) == 0: + raise SyntaxError('unexpected EOF') + + token = tokens.pop(0) + + L = [] + while token.type == 'COMMENT': + L.append(token) + token = tokens.pop(0) + + if token.type == 'LPAREN': + L2 = [] + while tokens[0].type != 'RPAREN': + L2.append(tree_from_tokens(tokens)) + tokens.pop(0) + L.append(L2) + return L + elif token.type == 'RPAREN': + raise SyntaxError(f"unexpected ) on line {token.line}, at {token.column}") + else: + return token + + class Parser: def __init__(self, filename: str): self.filename = filename self.ast = None + def visit(self, node: List, depth: int = 0): + for n in node: + if not isinstance(n, list): + logger.debug(depth * " ", n) + else: + self.visit(n, depth + 1) + def parse(self): with open(self.filename, 'r') as f: program = f.read() - self.ast = [] - for token in tokenize(program): - self.ast.append(token) - logger.debug(*self.ast) + self.ast = tree_from_tokens(list(tokenize(program))) + self.visit(self.ast) From c6bdd30c377e3ffcea61c66d96be82ed0d68b878 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 15:54:10 +0200 Subject: [PATCH 17/46] cleaning the parser code and adding a documentation extractor --- arkdoc/parser/__init__.py | 1 - arkdoc/parser/ast.py | 14 ---- arkdoc/parser/parser.py | 137 ++++++++++++++++--------------------- arkdoc/parser/tokenizer.py | 86 +++++++++++++++++++++++ 4 files changed, 146 insertions(+), 92 deletions(-) delete mode 100644 arkdoc/parser/ast.py create mode 100644 arkdoc/parser/tokenizer.py diff --git a/arkdoc/parser/__init__.py b/arkdoc/parser/__init__.py index 544151d..49b488e 100644 --- a/arkdoc/parser/__init__.py +++ b/arkdoc/parser/__init__.py @@ -1,4 +1,3 @@ #!/usr/bin/env python3 -from .ast import NodeType, Node from .parser import Parser \ No newline at end of file diff --git a/arkdoc/parser/ast.py b/arkdoc/parser/ast.py deleted file mode 100644 index 0974d24..0000000 --- a/arkdoc/parser/ast.py +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env python3 - -from enum import Enum - - -class NodeType(Enum): - Comment = 1 - Definition = 2 - Other = 3 - - -class Node: - def __init__(self, node_type: NodeType): - self.node_type = node_type \ No newline at end of file diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index a906f93..b0c778a 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -1,88 +1,45 @@ #!/usr/bin/env python3 import re -from typing import List, NamedTuple +from typing import List +from dataclasses import dataclass +from collections.abc import Iterable from .. import logger +from .tokenizer import tree_from_tokens, tokenize, Token -class Token(NamedTuple): - type: str - value: str - line: int - column: int +def deep_flatten(lst): + return ([a for i in lst for a in + deep_flatten(i)] if isinstance(lst, Iterable) else [lst]) + + +@dataclass +class Documentation: + comments: List[Token] + target: List + + def _token_format(self, token: Token): + return token.value + + def extract_signature(self, on: List[Token] = None): + top = self.target[:] if on is None else on + while True: + if isinstance(top, list) and \ + len(top) and isinstance(top[0], list): + top = top[0] + else: + break + + transform = lambda L: list(map(lambda t: t.value, deep_flatten(L))) + + if on is None: + return transform(top[:2]) + self.extract_signature(on=top[2]) + else: + return transform(top[1:2]) def __str__(self): - return f"Token({self.type}, '{self.value}', line={self.line}, col={self.column})" - - -Keywords = "let mut set del fun if while import begin quote".split() -TokenSpecification = [ - ('NUMBER', r'\d+(\.\d*)?'), - ('STRING', r'"[^"]*"'), - ('ID', r'[\w:?=!@&<>+\-%*/.]+'), - ('LPAREN', r'[(\[{]'), - ('RPAREN', r'[)\]}]'), - ('COMMENT', r'#[^\n]*'), - ('NEWLINE', r'\n'), - ('SKIP', r'[ \t]+'), - ('MISMATCH', r'.'), -] - - -def tokenize(code: str) -> List[Token]: - tok_regex = '|'.join( - '(?P<%s>%s)' % - pair for pair in TokenSpecification - ) - line_num = 1 - line_start = 0 - - lines = code.split('\n') - - for mo in re.finditer(tok_regex, code): - kind = mo.lastgroup - value = mo.group() - column = mo.start() - line_start - - if kind == 'ID' and value in Keywords: - kind = value - elif kind == 'NEWLINE': - line_start = mo.end() - line_num += 1 - continue - elif kind == 'SKIP': - continue - elif kind == 'MISMATCH': - raise RuntimeError( - f'{value!r} unexpected on line {line_num}\n{lines[line_num - 1]}' - ) - yield Token(kind, value, line_num, column) - - - -def tree_from_tokens(tokens: List[Token]) -> List: - if len(tokens) == 0: - raise SyntaxError('unexpected EOF') - - token = tokens.pop(0) - - L = [] - while token.type == 'COMMENT': - L.append(token) - token = tokens.pop(0) - - if token.type == 'LPAREN': - L2 = [] - while tokens[0].type != 'RPAREN': - L2.append(tree_from_tokens(tokens)) - tokens.pop(0) - L.append(L2) - return L - elif token.type == 'RPAREN': - raise SyntaxError(f"unexpected ) on line {token.line}, at {token.column}") - else: - return token + return f"Documentation({len(self.comments)} comments, {self.extract_signature()})" class Parser: @@ -97,9 +54,35 @@ def visit(self, node: List, depth: int = 0): else: self.visit(n, depth + 1) + def _is_doc_comment(self, token: Token) -> bool: + return token.type == 'COMMENT' and re.match( + r'^#+ *@\w+', token.value + ) is not None + + def extract_doc(self, node: List): + doc = None + + for n in node: + if not isinstance(n, list): + if self._is_doc_comment(n): + if doc is None: + doc = Documentation([], None) + doc.comments.append(n) + elif doc is None: + self.extract_doc(n) + else: + doc.target = n + yield doc + doc = None + + yield from self.extract_doc(n) + def parse(self): with open(self.filename, 'r') as f: program = f.read() self.ast = tree_from_tokens(list(tokenize(program))) - self.visit(self.ast) + # self.visit(self.ast) + + for e in self.extract_doc(self.ast): + logger.debug(e) diff --git a/arkdoc/parser/tokenizer.py b/arkdoc/parser/tokenizer.py new file mode 100644 index 0000000..b5cbb75 --- /dev/null +++ b/arkdoc/parser/tokenizer.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 + +import re +from typing import List +from dataclasses import dataclass + + +@dataclass +class Token: + type: str + value: str + line: int + column: int + + def __str__(self): + return f"Token({self.type}, '{self.value}', line={self.line}, col={self.column})" + + +Keywords = "let mut set del fun if while import begin quote".split() +TokenSpecification = [ + ('NUMBER', r'\d+(\.\d*)?'), + ('STRING', r'"[^"]*"'), + ('ID', r'[\w:?=!@&<>+\-%*/.]+'), + ('LPAREN', r'[(\[{]'), + ('RPAREN', r'[)\]}]'), + ('COMMENT', r'#[^\n]*'), + ('NEWLINE', r'\n'), + ('SKIP', r'[ \t]+'), + ('MISMATCH', r'.'), +] + + +def tokenize(code: str) -> List[Token]: + tok_regex = '|'.join( + '(?P<%s>%s)' % + pair for pair in TokenSpecification + ) + line_num = 1 + line_start = 0 + + lines = code.split('\n') + + for mo in re.finditer(tok_regex, code): + kind = mo.lastgroup + value = mo.group() + column = mo.start() - line_start + + if kind == 'ID' and value in Keywords: + kind = value + elif kind == 'NEWLINE': + line_start = mo.end() + line_num += 1 + continue + elif kind == 'SKIP': + continue + elif kind == 'MISMATCH': + raise RuntimeError( + f'{value!r} unexpected on line {line_num}\n{lines[line_num - 1]}' + ) + yield Token(kind, value, line_num, column) + + +def tree_from_tokens(tokens: List[Token]) -> List: + if len(tokens) == 0: + raise SyntaxError('unexpected EOF') + + token = tokens.pop(0) + + L = [] + while token.type == 'COMMENT': + L.append(token) + token = tokens.pop(0) + + if token.type == 'LPAREN': + L2 = [] + while tokens[0].type != 'RPAREN': + L2.append(tree_from_tokens(tokens)) + tokens.pop(0) + L.append(L2) + return L + elif token.type == 'RPAREN': + raise SyntaxError( + f"unexpected ) on line {token.line}, at {token.column}" + ) + else: + return token From f7a4aa772a97c2107ea3a0c7fbe840022cb91192 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 16:13:53 +0200 Subject: [PATCH 18/46] adding documentation extraction --- arkdoc/parser/parser.py | 49 ++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index b0c778a..eb7a702 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -22,8 +22,10 @@ class Documentation: def _token_format(self, token: Token): return token.value - def extract_signature(self, on: List[Token] = None): + def _signature(self, on: List[Token] = None): + transform = lambda L: list(map(lambda t: t.value, deep_flatten(L))) top = self.target[:] if on is None else on + while True: if isinstance(top, list) and \ len(top) and isinstance(top[0], list): @@ -31,15 +33,22 @@ def extract_signature(self, on: List[Token] = None): else: break - transform = lambda L: list(map(lambda t: t.value, deep_flatten(L))) - if on is None: - return transform(top[:2]) + self.extract_signature(on=top[2]) + return transform(top[:2]) + self._signature(on=top[2]) else: return transform(top[1:2]) + @property + def function_signature(self): + kw, name, *args = self._signature() + return f"({kw} {name} (fun ({' '.join(args)}) (...)))" + + @property + def defined_at(self): + return deep_flatten(self.target[:])[0].line + def __str__(self): - return f"Documentation({len(self.comments)} comments, {self.extract_signature()})" + return f"Documentation({len(self.comments)} comments, {self.function_signature}, line={self.defined_at})" class Parser: @@ -59,30 +68,34 @@ def _is_doc_comment(self, token: Token) -> bool: r'^#+ *@\w+', token.value ) is not None - def extract_doc(self, node: List): - doc = None + def _doc_extractor(self, node: List): + comments = None for n in node: if not isinstance(n, list): if self._is_doc_comment(n): - if doc is None: - doc = Documentation([], None) - doc.comments.append(n) - elif doc is None: - self.extract_doc(n) + comments = [n] if comments is None else comments + [n] else: - doc.target = n - yield doc - doc = None + if comments is None: + yield from self._doc_extractor(n) + elif comments is not None: + yield Documentation(comments, n) + comments = None + yield from self._doc_extractor(n) - yield from self.extract_doc(n) + def extract_documentation(self): + yield from self._doc_extractor(self.ast) def parse(self): with open(self.filename, 'r') as f: program = f.read() - self.ast = tree_from_tokens(list(tokenize(program))) + self.ast = [] + tokens = list(tokenize(program)) + + while tokens: + self.ast += tree_from_tokens(tokens) # self.visit(self.ast) - for e in self.extract_doc(self.ast): + for e in self.extract_documentation(): logger.debug(e) From 6edec06ecbe4a7c251312c447e420f75189d42b7 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 16:15:10 +0200 Subject: [PATCH 19/46] removing debug code --- arkdoc/parser/parser.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index eb7a702..1f84b9a 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -56,13 +56,6 @@ def __init__(self, filename: str): self.filename = filename self.ast = None - def visit(self, node: List, depth: int = 0): - for n in node: - if not isinstance(n, list): - logger.debug(depth * " ", n) - else: - self.visit(n, depth + 1) - def _is_doc_comment(self, token: Token) -> bool: return token.type == 'COMMENT' and re.match( r'^#+ *@\w+', token.value @@ -95,7 +88,3 @@ def parse(self): while tokens: self.ast += tree_from_tokens(tokens) - # self.visit(self.ast) - - for e in self.extract_documentation(): - logger.debug(e) From 6586432fbed0de7ad51fa744fa5ba7e6b876d420 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 16:46:49 +0200 Subject: [PATCH 20/46] improving documentation generator --- arkdoc/__main__.py | 15 +++++++++ arkdoc/generator/__init__.py | 3 ++ arkdoc/generator/base.py | 32 +++++++++++++++++++ arkdoc/generator/html.py | 22 ++++++------- arkdoc/generator/specification.py | 2 +- arkdoc/generator/utils.py | 51 +++++++++++++++++++++++++++++++ arkdoc/parser/__init__.py | 3 +- arkdoc/parser/documentation.py | 50 ++++++++++++++++++++++++++++++ arkdoc/parser/parser.py | 49 ++--------------------------- 9 files changed, 167 insertions(+), 60 deletions(-) create mode 100644 arkdoc/generator/base.py create mode 100644 arkdoc/generator/utils.py create mode 100644 arkdoc/parser/documentation.py diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index 32ac4a5..8ce8622 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -5,7 +5,9 @@ import argparse from . import logger +from .logger_utils import LogLevel from .reader import parse_all_in +from .generator import HTMLGenerator EXIT_SUCCESS = 0 @@ -21,6 +23,10 @@ def main() -> int: type=str, help='Path to the ArkScript source folder' ) + cli.add_argument( + '--dry-run', + help='Run and log everything but don\'t generate any file' + ) args = cli.parse_args() @@ -28,11 +34,20 @@ def main() -> int: logger.error(f"Folder `${args.source_folder}` does not exists") return EXIT_FAILURE + if args.dry_run: + logger.level = LogLevel.DEBUG + parsers = parse_all_in(args.source_folder) for p in parsers: logger.info(f"Parsing {p.filename}...") p.parse() + if args.dry_run: + list(p.extract_documentation()) + + if not args.dry_run: + pass + return EXIT_SUCCESS diff --git a/arkdoc/generator/__init__.py b/arkdoc/generator/__init__.py index 9dddc90..5ce88b5 100644 --- a/arkdoc/generator/__init__.py +++ b/arkdoc/generator/__init__.py @@ -1,3 +1,6 @@ #!/usr/bin/env python3 from . import specification +from .utils import documentation_to_specification +from .base import Generator +from .html import HTMLGenerator diff --git a/arkdoc/generator/base.py b/arkdoc/generator/base.py new file mode 100644 index 0000000..5fee22d --- /dev/null +++ b/arkdoc/generator/base.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +from typing import List +from pathlib import Path + +from . import specification as spec +from . import documentation_to_specification +from .. import logger +from ..parser import Parser + + +class Generator: + def __init__(self, parsers: List[Parser], template: Path): + self.template = template.read_text('utf-8') + self.list = spec.FileList([]) + + for p in parsers: + functions = [] + for doc in p.extract_documentation(): + functions.append(documentation_to_specification(doc)) + file = spec.File(p.filename, functions) + self.list.files.append(file) + + def _generate(self, path: str, functions: List[spec.Function]): + raise NotImplementedError + + def __call__(self): + for file in self.list.files: + logger.info(f"Generating {file.path} documentation...") + logger.info(f"Found {len(file.functions)} functions") + + self._generate(file.path, file.functions) diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index a3fa99e..f7c04e9 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -1,19 +1,17 @@ #!/usr/bin/env python3 -from . import specification +from typing import List +from . import specification as spec +from . import Generator from .. import logger +from ..parser import Parser -class CodeToHTML: - def __init__(self, list: specification.FileList): - self.list = list - self.template = (specification.TEMPLATE_FOLDER / "temp.html").read_text('utf-8') +class HTMLGenerator(Generator): + def __init__(self, parser: Parser): + super().__init__(parser, spec.HTML_TEMPLATE_FOLDER / "temp.html") - def generate(self): - for file in self.list.files: - logger.info(f"Generating {file.path} documentation...") - logger.info(f"Found {len(file.functions)} functions") - - for func in file.functions: - logger.debug(func) + def _generate(self, path: str, functions: List[spec.Function]): + logger.debug(path, functions) + return None diff --git a/arkdoc/generator/specification.py b/arkdoc/generator/specification.py index 89884ce..e189535 100644 --- a/arkdoc/generator/specification.py +++ b/arkdoc/generator/specification.py @@ -5,7 +5,7 @@ from pathlib import Path -TEMPLATE_FOLDER = Path("templates") +HTML_TEMPLATE_FOLDER = Path("templates") @dataclass class Param: diff --git a/arkdoc/generator/utils.py b/arkdoc/generator/utils.py new file mode 100644 index 0000000..1305aef --- /dev/null +++ b/arkdoc/generator/utils.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +import re + +from . import specification as spec +from ..parser import Documentation + + +def documentation_to_specification(doc: Documentation) -> spec.Function: + _, name, *args = doc.signature() + + data = { + 'brief': '', + 'details': '', + 'params': [], + 'code': '', + 'author': [] + } + + for comment in doc.comments: + for key in data: + tag = f"@{key}" + + if tag in comment: + res = re.sub(fr'#+ *{tag}', '', comment).strip() + + if isinstance(data[key], list): + data[key].append(res) + else: + data[key] = res + + if len(data['params']) != len(args): + raise ValueError( + f"Function {name} was defined with {len(args)} arguments, " + f"but only {len(data['params'])} are documented" + ) + + for i, param in enumerate(data['params']): + param_name, desc = param.split(' ', 1) + data['params'][i] = spec.Param(param_name, desc) + + return spec.Function( + name, + spec.Description( + data["brief"], + data["details"], + data["params"], + data["code"], + data["author"] + ) + ) diff --git a/arkdoc/parser/__init__.py b/arkdoc/parser/__init__.py index 49b488e..f70767b 100644 --- a/arkdoc/parser/__init__.py +++ b/arkdoc/parser/__init__.py @@ -1,3 +1,4 @@ #!/usr/bin/env python3 -from .parser import Parser \ No newline at end of file +from .documentation import Documentation +from .parser import Parser diff --git a/arkdoc/parser/documentation.py b/arkdoc/parser/documentation.py new file mode 100644 index 0000000..58159fe --- /dev/null +++ b/arkdoc/parser/documentation.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +from dataclasses import dataclass +from collections.abc import Iterable +from typing import List + +from .tokenizer import Token + + +def deep_flatten(lst): + return ([a for i in lst for a in + deep_flatten(i)] if isinstance(lst, Iterable) else [lst]) + + +@dataclass +class Documentation: + comments: List[Token] + target: List + + def _token_format(self, token: Token): + return token.value + + def signature(self, on: List[Token] = None): + def transform(L): return list( + map(lambda t: t.value, deep_flatten(L))) + top = self.target[:] if on is None else on + + while True: + if isinstance(top, list) and \ + len(top) and isinstance(top[0], list): + top = top[0] + else: + break + + if on is None: + return transform(top[:2]) + self.signature(on=top[2]) + else: + return transform(top[1:2]) + + @property + def pretty_signature(self): + kw, name, *args = self.signature() + return f"({kw} {name} (fun ({' '.join(args)}) (...)))" + + @property + def defined_at(self): + return deep_flatten(self.target[:])[0].line + + def __str__(self): + return f"Documentation({len(self.comments)} comments, {self.pretty_signature}, line={self.defined_at})" diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index 1f84b9a..c7b2d30 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -2,55 +2,11 @@ import re from typing import List -from dataclasses import dataclass -from collections.abc import Iterable -from .. import logger +from . import Documentation from .tokenizer import tree_from_tokens, tokenize, Token -def deep_flatten(lst): - return ([a for i in lst for a in - deep_flatten(i)] if isinstance(lst, Iterable) else [lst]) - - -@dataclass -class Documentation: - comments: List[Token] - target: List - - def _token_format(self, token: Token): - return token.value - - def _signature(self, on: List[Token] = None): - transform = lambda L: list(map(lambda t: t.value, deep_flatten(L))) - top = self.target[:] if on is None else on - - while True: - if isinstance(top, list) and \ - len(top) and isinstance(top[0], list): - top = top[0] - else: - break - - if on is None: - return transform(top[:2]) + self._signature(on=top[2]) - else: - return transform(top[1:2]) - - @property - def function_signature(self): - kw, name, *args = self._signature() - return f"({kw} {name} (fun ({' '.join(args)}) (...)))" - - @property - def defined_at(self): - return deep_flatten(self.target[:])[0].line - - def __str__(self): - return f"Documentation({len(self.comments)} comments, {self.function_signature}, line={self.defined_at})" - - class Parser: def __init__(self, filename: str): self.filename = filename @@ -67,7 +23,8 @@ def _doc_extractor(self, node: List): for n in node: if not isinstance(n, list): if self._is_doc_comment(n): - comments = [n] if comments is None else comments + [n] + comments = [ + n] if comments is None else comments + [n] else: if comments is None: yield from self._doc_extractor(n) From ad96bbbca5a1bd7379caaa8ec45ce8ff17d53991 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 17:02:55 +0200 Subject: [PATCH 21/46] tidying the code and adding more options to the cli --- arkdoc/__init__.py | 7 ++-- arkdoc/__main__.py | 56 +++++++++++++++++++++---------- arkdoc/generator/base.py | 2 +- arkdoc/generator/html.py | 8 +++-- arkdoc/generator/specification.py | 1 + arkdoc/generator/utils.py | 20 ++++++----- arkdoc/logger_utils.py | 1 - arkdoc/parser/parser.py | 8 +++-- 8 files changed, 67 insertions(+), 36 deletions(-) diff --git a/arkdoc/__init__.py b/arkdoc/__init__.py index ca8f576..deffa41 100644 --- a/arkdoc/__init__.py +++ b/arkdoc/__init__.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 -from .logger_utils import logger +from .logger_utils import Logger, LogLevel + +logger = Logger('ArkDoc', level=LogLevel.INFO) + from .parser import Parser -from .reader import parse_all_in \ No newline at end of file +from .reader import parse_all_in diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index 8ce8622..3b0bba3 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -14,6 +14,35 @@ EXIT_FAILURE = 1 +def compute(args) -> bool: + global logger + + if not os.path.exists(args.source_folder): + logger.error(f"Folder `${args.source_folder}` does not exists") + return False + + if args.dry_run: + logger.level = LogLevel.DEBUG + + parsers = parse_all_in(args.source_folder) + for p in parsers: + logger.info(f"Parsing {p.filename}...") + p.parse() + + if args.dry_run: + _ = list(p.extract_documentation()) + + if not args.dry_run: + if args.html: + gen = HTMLGenerator(parsers) + gen() + else: + logger.error('Missing generator!') + return False + + return True + + def main() -> int: cli = argparse.ArgumentParser( description='ArkScript Documentation generator' @@ -25,31 +54,22 @@ def main() -> int: ) cli.add_argument( '--dry-run', + action='store_true', help='Run and log everything but don\'t generate any file' ) + cli.add_argument( + '--html', + action='store_true', + help='Generate HTML documentation' + ) args = cli.parse_args() - if not os.path.exists(args.source_folder): - logger.error(f"Folder `${args.source_folder}` does not exists") + if compute(args): + return EXIT_SUCCESS + else: return EXIT_FAILURE - if args.dry_run: - logger.level = LogLevel.DEBUG - - parsers = parse_all_in(args.source_folder) - for p in parsers: - logger.info(f"Parsing {p.filename}...") - p.parse() - - if args.dry_run: - list(p.extract_documentation()) - - if not args.dry_run: - pass - - return EXIT_SUCCESS - if __name__ == '__main__': sys.exit(main()) diff --git a/arkdoc/generator/base.py b/arkdoc/generator/base.py index 5fee22d..e314b1b 100644 --- a/arkdoc/generator/base.py +++ b/arkdoc/generator/base.py @@ -27,6 +27,6 @@ def _generate(self, path: str, functions: List[spec.Function]): def __call__(self): for file in self.list.files: logger.info(f"Generating {file.path} documentation...") - logger.info(f"Found {len(file.functions)} functions") + logger.info(f"\tFound {len(file.functions)} functions") self._generate(file.path, file.functions) diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index f7c04e9..314813a 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 from typing import List +from pprint import pformat from . import specification as spec from . import Generator @@ -9,9 +10,10 @@ class HTMLGenerator(Generator): - def __init__(self, parser: Parser): - super().__init__(parser, spec.HTML_TEMPLATE_FOLDER / "temp.html") + def __init__(self, parsers: List[Parser]): + super().__init__(parsers, spec.HTML_TEMPLATE_FOLDER / "temp.html") def _generate(self, path: str, functions: List[spec.Function]): - logger.debug(path, functions) + # TODO + logger.info(path, pformat(functions, indent = 4)) return None diff --git a/arkdoc/generator/specification.py b/arkdoc/generator/specification.py index e189535..39d8c7c 100644 --- a/arkdoc/generator/specification.py +++ b/arkdoc/generator/specification.py @@ -25,6 +25,7 @@ class Description: @dataclass class Function: name: str + signature: str desc: Description diff --git a/arkdoc/generator/utils.py b/arkdoc/generator/utils.py index 1305aef..da7a9c6 100644 --- a/arkdoc/generator/utils.py +++ b/arkdoc/generator/utils.py @@ -4,6 +4,7 @@ from . import specification as spec from ..parser import Documentation +from .. import logger def documentation_to_specification(doc: Documentation) -> spec.Function: @@ -12,7 +13,7 @@ def documentation_to_specification(doc: Documentation) -> spec.Function: data = { 'brief': '', 'details': '', - 'params': [], + 'param': [], 'code': '', 'author': [] } @@ -21,30 +22,31 @@ def documentation_to_specification(doc: Documentation) -> spec.Function: for key in data: tag = f"@{key}" - if tag in comment: - res = re.sub(fr'#+ *{tag}', '', comment).strip() + if tag in comment.value: + res = re.sub(fr'#+ *{tag}', '', comment.value).strip() if isinstance(data[key], list): data[key].append(res) else: data[key] = res - if len(data['params']) != len(args): - raise ValueError( + if len(data['param']) != len(args): + logger.warn( f"Function {name} was defined with {len(args)} arguments, " - f"but only {len(data['params'])} are documented" + f"but only {len(data['param'])} are documented" ) - for i, param in enumerate(data['params']): + for i, param in enumerate(data['param']): param_name, desc = param.split(' ', 1) - data['params'][i] = spec.Param(param_name, desc) + data['param'][i] = spec.Param(param_name, desc) return spec.Function( name, + doc.pretty_signature, spec.Description( data["brief"], data["details"], - data["params"], + data["param"], data["code"], data["author"] ) diff --git a/arkdoc/logger_utils.py b/arkdoc/logger_utils.py index 53f07c9..8d88f05 100644 --- a/arkdoc/logger_utils.py +++ b/arkdoc/logger_utils.py @@ -52,4 +52,3 @@ def error(self, *args): colorama.init() -logger = Logger('ArkDoc', level=LogLevel.DEBUG) diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index c7b2d30..05103a9 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -5,6 +5,7 @@ from . import Documentation from .tokenizer import tree_from_tokens, tokenize, Token +from .. import logger class Parser: @@ -24,7 +25,8 @@ def _doc_extractor(self, node: List): if not isinstance(n, list): if self._is_doc_comment(n): comments = [ - n] if comments is None else comments + [n] + n + ] if comments is None else comments + [n] else: if comments is None: yield from self._doc_extractor(n) @@ -34,7 +36,9 @@ def _doc_extractor(self, node: List): yield from self._doc_extractor(n) def extract_documentation(self): - yield from self._doc_extractor(self.ast) + for doc in self._doc_extractor(self.ast): + logger.debug(doc) + yield doc def parse(self): with open(self.filename, 'r') as f: From 4ec30d956ab1c7b92bc0d78d59632e3bf1adae63 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 18:02:16 +0200 Subject: [PATCH 22/46] adding toggle to parse documentation comments from the builtins --- arkdoc/__main__.py | 8 +++ arkdoc/generator/specification.py | 1 + arkdoc/generator/utils.py | 96 ++++++++++++++++++++++++------- arkdoc/parser/__init__.py | 2 +- arkdoc/parser/documentation.py | 7 +++ arkdoc/parser/parser.py | 50 +++++++++++----- arkdoc/parser/tokenizer.py | 20 +++++++ arkdoc/reader.py | 3 +- 8 files changed, 150 insertions(+), 37 deletions(-) diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index 3b0bba3..0df23c4 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -25,6 +25,8 @@ def compute(args) -> bool: logger.level = LogLevel.DEBUG parsers = parse_all_in(args.source_folder) + if args.builtins: + parsers += parse_all_in(args.builtins) for p in parsers: logger.info(f"Parsing {p.filename}...") p.parse() @@ -52,6 +54,12 @@ def main() -> int: type=str, help='Path to the ArkScript source folder' ) + cli.add_argument( + '--builtins', + type=str, + help='Path to the builtins folder', + default=None + ) cli.add_argument( '--dry-run', action='store_true', diff --git a/arkdoc/generator/specification.py b/arkdoc/generator/specification.py index 39d8c7c..8a6963a 100644 --- a/arkdoc/generator/specification.py +++ b/arkdoc/generator/specification.py @@ -7,6 +7,7 @@ HTML_TEMPLATE_FOLDER = Path("templates") + @dataclass class Param: name: str diff --git a/arkdoc/generator/utils.py b/arkdoc/generator/utils.py index da7a9c6..e83689e 100644 --- a/arkdoc/generator/utils.py +++ b/arkdoc/generator/utils.py @@ -1,34 +1,59 @@ #!/usr/bin/env python3 import re +from typing import Tuple, Dict from . import specification as spec -from ..parser import Documentation +from ..parser import Documentation, Source from .. import logger -def documentation_to_specification(doc: Documentation) -> spec.Function: +def extractor(data: Dict, doc: Documentation) -> Tuple[Dict, str]: + in_code = False + code = [] + + for comment in doc.comments: + if not in_code: + for key in data: + tag = f"@{key}" + + if tag in comment.value: + res = re.sub( + fr'#+ *{tag}', '', comment.value).strip() + + if isinstance(data[key], list): + data[key].append(res) + else: + data[key] = res + else: + if "=begin" in comment.value: + in_code = True + else: + if "=end" not in comment.value: + code.append(comment.value) + else: + in_code = False + + if code: + margin = code[0].index('(') + code = [line[margin:] for line in code] + + for i, param in enumerate(data['param']): + param_name, desc = param.split(' ', 1) + data['param'][i] = spec.Param(param_name, desc) + + return data, '\n'.join(code) + + +def from_ark(doc: Documentation) -> spec.Function: _, name, *args = doc.signature() - data = { + data, code = extractor({ 'brief': '', 'details': '', 'param': [], - 'code': '', 'author': [] - } - - for comment in doc.comments: - for key in data: - tag = f"@{key}" - - if tag in comment.value: - res = re.sub(fr'#+ *{tag}', '', comment.value).strip() - - if isinstance(data[key], list): - data[key].append(res) - else: - data[key] = res + }, doc) if len(data['param']) != len(args): logger.warn( @@ -36,10 +61,6 @@ def documentation_to_specification(doc: Documentation) -> spec.Function: f"but only {len(data['param'])} are documented" ) - for i, param in enumerate(data['param']): - param_name, desc = param.split(' ', 1) - data['param'][i] = spec.Param(param_name, desc) - return spec.Function( name, doc.pretty_signature, @@ -47,7 +68,38 @@ def documentation_to_specification(doc: Documentation) -> spec.Function: data["brief"], data["details"], data["param"], - data["code"], + code, data["author"] ) ) + + +def from_cpp(doc: Documentation) -> spec.Function: + data, code = extractor({ + 'name': '', + 'brief': '', + 'details': '', + 'param': [], + 'author': [] + }, doc) + + return spec.Function( + data['name'], + f"Builtin ({data['name']} {' '.join(e.name for e in data['param'])})", + spec.Description( + data["brief"], + data["details"], + data["param"], + code, + data["author"] + ) + ) + + +def documentation_to_specification(doc: Documentation) -> spec.Function: + if doc.source == Source.ArkScript: + return from_ark(doc) + elif doc.source == Source.Cpp: + return from_cpp(doc) + else: + raise NotImplementedError diff --git a/arkdoc/parser/__init__.py b/arkdoc/parser/__init__.py index f70767b..c854105 100644 --- a/arkdoc/parser/__init__.py +++ b/arkdoc/parser/__init__.py @@ -1,4 +1,4 @@ #!/usr/bin/env python3 -from .documentation import Documentation +from .documentation import Documentation, Source from .parser import Parser diff --git a/arkdoc/parser/documentation.py b/arkdoc/parser/documentation.py index 58159fe..89d925f 100644 --- a/arkdoc/parser/documentation.py +++ b/arkdoc/parser/documentation.py @@ -3,6 +3,7 @@ from dataclasses import dataclass from collections.abc import Iterable from typing import List +from enum import Enum from .tokenizer import Token @@ -12,8 +13,14 @@ def deep_flatten(lst): deep_flatten(i)] if isinstance(lst, Iterable) else [lst]) +class Source(Enum): + ArkScript = 0 + Cpp = 1 + + @dataclass class Documentation: + source: Source comments: List[Token] target: List diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index 05103a9..e5a4481 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -3,8 +3,8 @@ import re from typing import List -from . import Documentation -from .tokenizer import tree_from_tokens, tokenize, Token +from . import Documentation, Source +from .tokenizer import cpp_tokenize, tree_from_tokens, cpp_tokenize, tokenize, Token from .. import logger @@ -12,11 +12,23 @@ class Parser: def __init__(self, filename: str): self.filename = filename self.ast = None + self.in_code = False def _is_doc_comment(self, token: Token) -> bool: - return token.type == 'COMMENT' and re.match( - r'^#+ *@\w+', token.value - ) is not None + if token.type == 'COMMENT': + if "=begin" in token.value: + self.in_code = True + return True + if "=end" not in token.value and self.in_code: + return True + if "=end" in token.value: + self.in_code = False + return True + + return re.match( + r'^#+ *@\w+', token.value + ) is not None + return False def _doc_extractor(self, node: List): comments = None @@ -31,21 +43,33 @@ def _doc_extractor(self, node: List): if comments is None: yield from self._doc_extractor(n) elif comments is not None: - yield Documentation(comments, n) + yield Documentation(Source.ArkScript, comments, n) comments = None yield from self._doc_extractor(n) def extract_documentation(self): - for doc in self._doc_extractor(self.ast): - logger.debug(doc) - yield doc + if self.filename.endswith('.ark'): + for doc in self._doc_extractor(self.ast): + logger.debug(doc) + yield doc + elif self.filename.endswith('.cpp'): + for node in self.ast: + yield Documentation(Source.Cpp, node, None) + else: + raise NotImplementedError def parse(self): with open(self.filename, 'r') as f: program = f.read() - self.ast = [] - tokens = list(tokenize(program)) + if self.filename.endswith('.ark'): + self.ast = [] + tokens = list(tokenize(program)) - while tokens: - self.ast += tree_from_tokens(tokens) + while tokens: + self.ast += tree_from_tokens(tokens) + elif self.filename.endswith('.cpp'): + self.ast = list(cpp_tokenize(program)) + logger.debug(self.ast) + else: + logger.error(f"Could not parse {self.filename}") diff --git a/arkdoc/parser/tokenizer.py b/arkdoc/parser/tokenizer.py index b5cbb75..017132d 100644 --- a/arkdoc/parser/tokenizer.py +++ b/arkdoc/parser/tokenizer.py @@ -60,6 +60,26 @@ def tokenize(code: str) -> List[Token]: yield Token(kind, value, line_num, column) +def cpp_tokenize(code: str) -> List[str]: + tok_regex = r'^ */\*\*\n( *\* *@.+\n)+ *\*/' + line_num = 1 + line_start = 0 + + def transform(line: str): + nonlocal line_num + lines = line.split('\n') + + for e in lines[1:-1]: + line = '#' + e.strip()[1:] + line_num += 1 + yield Token('COMMENT', line, line_num, column) + + for mo in re.finditer(tok_regex, code, flags=re.MULTILINE): + value = mo.group() + column = mo.start() - line_start + yield list(transform(value)) + + def tree_from_tokens(tokens: List[Token]) -> List: if len(tokens) == 0: raise SyntaxError('unexpected EOF') diff --git a/arkdoc/reader.py b/arkdoc/reader.py index 7cd6f0c..7db5730 100644 --- a/arkdoc/reader.py +++ b/arkdoc/reader.py @@ -7,7 +7,8 @@ def explore(folder: str) -> List[str]: - return glob.glob(f"{folder}/*.ark", recursive=True) + for ext in ['ark', 'cpp']: + yield from glob.glob(f"{folder}/*.{ext}", recursive=True) def parse_all_in(folder: str) -> List[Parser]: From 3a5d504681f66b339627a84ddf33c7e353080092 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 18:07:23 +0200 Subject: [PATCH 23/46] updating base generator to merge files with the same name (ignoring the extension) --- arkdoc/generator/base.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/arkdoc/generator/base.py b/arkdoc/generator/base.py index e314b1b..97e77f8 100644 --- a/arkdoc/generator/base.py +++ b/arkdoc/generator/base.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import os from typing import List from pathlib import Path @@ -14,11 +15,20 @@ def __init__(self, parsers: List[Parser], template: Path): self.template = template.read_text('utf-8') self.list = spec.FileList([]) + registered = {} + for p in parsers: functions = [] for doc in p.extract_documentation(): functions.append(documentation_to_specification(doc)) - file = spec.File(p.filename, functions) + + base = os.path.splitext(os.path.basename(p.filename))[0] + if base in registered: + registered[base].functions += functions + else: + file = spec.File(base, functions) + registered[base] = file + self.list.files.append(file) def _generate(self, path: str, functions: List[spec.Function]): From 8847d0bb876836f82fcb207994ef9757ff5dd34e Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 18:11:11 +0200 Subject: [PATCH 24/46] fixing workflow --- .github/workflows/linter.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 8d36720..a5977d5 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -2,9 +2,9 @@ name: super-linter on: push: - branches: * + branches: [ master ] pull_request: - branches: * + branches: [ master ] jobs: build: From 38872181a4aca957743862c46b0047623dbb9fe7 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 18:22:31 +0200 Subject: [PATCH 25/46] linter --- arkdoc/__init__.py | 2 +- arkdoc/__main__.py | 29 +++++----------- arkdoc/generator/base.py | 2 +- arkdoc/generator/html.py | 2 +- arkdoc/generator/utils.py | 51 +++++++++------------------- arkdoc/logger_utils.py | 10 +++--- arkdoc/parser/documentation.py | 15 +++++---- arkdoc/parser/parser.py | 20 +++++------ arkdoc/parser/tokenizer.py | 61 ++++++++++++++++------------------ arkdoc/reader.py | 2 +- templates/404.html | 10 ++++++ templates/index.html | 10 ++++++ templates/temp.html | 2 +- 13 files changed, 100 insertions(+), 116 deletions(-) diff --git a/arkdoc/__init__.py b/arkdoc/__init__.py index deffa41..53311be 100644 --- a/arkdoc/__init__.py +++ b/arkdoc/__init__.py @@ -2,7 +2,7 @@ from .logger_utils import Logger, LogLevel -logger = Logger('ArkDoc', level=LogLevel.INFO) +logger = Logger("ArkDoc", level=LogLevel.INFO) from .parser import Parser from .reader import parse_all_in diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index 0df23c4..5cfd9a8 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -39,37 +39,26 @@ def compute(args) -> bool: gen = HTMLGenerator(parsers) gen() else: - logger.error('Missing generator!') + logger.error("Missing generator!") return False return True def main() -> int: - cli = argparse.ArgumentParser( - description='ArkScript Documentation generator' - ) - cli.add_argument( - 'source_folder', - type=str, - help='Path to the ArkScript source folder' - ) + cli = argparse.ArgumentParser(description="ArkScript Documentation generator") cli.add_argument( - '--builtins', - type=str, - help='Path to the builtins folder', - default=None + "source_folder", type=str, help="Path to the ArkScript source folder" ) cli.add_argument( - '--dry-run', - action='store_true', - help='Run and log everything but don\'t generate any file' + "--builtins", type=str, help="Path to the builtins folder", default=None ) cli.add_argument( - '--html', - action='store_true', - help='Generate HTML documentation' + "--dry-run", + action="store_true", + help="Run and log everything but don't generate any file", ) + cli.add_argument("--html", action="store_true", help="Generate HTML documentation") args = cli.parse_args() @@ -79,5 +68,5 @@ def main() -> int: return EXIT_FAILURE -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(main()) diff --git a/arkdoc/generator/base.py b/arkdoc/generator/base.py index 97e77f8..f78cc3b 100644 --- a/arkdoc/generator/base.py +++ b/arkdoc/generator/base.py @@ -12,7 +12,7 @@ class Generator: def __init__(self, parsers: List[Parser], template: Path): - self.template = template.read_text('utf-8') + self.template = template.read_text("utf-8") self.list = spec.FileList([]) registered = {} diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index 314813a..3c5d937 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -15,5 +15,5 @@ def __init__(self, parsers: List[Parser]): def _generate(self, path: str, functions: List[spec.Function]): # TODO - logger.info(path, pformat(functions, indent = 4)) + logger.info(path, pformat(functions, indent=4)) return None diff --git a/arkdoc/generator/utils.py b/arkdoc/generator/utils.py index e83689e..b347518 100644 --- a/arkdoc/generator/utils.py +++ b/arkdoc/generator/utils.py @@ -18,8 +18,7 @@ def extractor(data: Dict, doc: Documentation) -> Tuple[Dict, str]: tag = f"@{key}" if tag in comment.value: - res = re.sub( - fr'#+ *{tag}', '', comment.value).strip() + res = re.sub(fr"#+ *{tag}", "", comment.value).strip() if isinstance(data[key], list): data[key].append(res) @@ -35,27 +34,21 @@ def extractor(data: Dict, doc: Documentation) -> Tuple[Dict, str]: in_code = False if code: - margin = code[0].index('(') + margin = code[0].index("(") code = [line[margin:] for line in code] - for i, param in enumerate(data['param']): - param_name, desc = param.split(' ', 1) - data['param'][i] = spec.Param(param_name, desc) + for i, param in enumerate(data["param"]): + param_name, desc = param.split(" ", 1) + data["param"][i] = spec.Param(param_name, desc) - return data, '\n'.join(code) + return data, "\n".join(code) def from_ark(doc: Documentation) -> spec.Function: _, name, *args = doc.signature() + data, code = extractor({"brief": "", "details": "", "param": [], "author": []}, doc) - data, code = extractor({ - 'brief': '', - 'details': '', - 'param': [], - 'author': [] - }, doc) - - if len(data['param']) != len(args): + if len(data["param"]) != len(args): logger.warn( f"Function {name} was defined with {len(args)} arguments, " f"but only {len(data['param'])} are documented" @@ -65,34 +58,22 @@ def from_ark(doc: Documentation) -> spec.Function: name, doc.pretty_signature, spec.Description( - data["brief"], - data["details"], - data["param"], - code, - data["author"] - ) + data["brief"], data["details"], data["param"], code, data["author"] + ), ) def from_cpp(doc: Documentation) -> spec.Function: - data, code = extractor({ - 'name': '', - 'brief': '', - 'details': '', - 'param': [], - 'author': [] - }, doc) + data, code = extractor( + {"name": "", "brief": "", "details": "", "param": [], "author": []}, doc + ) return spec.Function( - data['name'], + data["name"], f"Builtin ({data['name']} {' '.join(e.name for e in data['param'])})", spec.Description( - data["brief"], - data["details"], - data["param"], - code, - data["author"] - ) + data["brief"], data["details"], data["param"], code, data["author"] + ), ) diff --git a/arkdoc/logger_utils.py b/arkdoc/logger_utils.py index 8d88f05..af321a0 100644 --- a/arkdoc/logger_utils.py +++ b/arkdoc/logger_utils.py @@ -23,20 +23,18 @@ def _print(self, kind: LogLevel, *args): LogLevel.DEBUG: colorama.Fore.MAGENTA, LogLevel.INFO: colorama.Fore.CYAN, LogLevel.WARN: colorama.Fore.YELLOW, - LogLevel.ERROR: colorama.Fore.RED + LogLevel.ERROR: colorama.Fore.RED, } if kind.value > self.level.value: return prefix = f"[{colors[kind]}{kind.name:^5}{colorama.Fore.RESET}]" - now = datetime.now().isoformat(timespec='minutes') + now = datetime.now().isoformat(timespec="minutes") colored_now = f"{colorama.Fore.MAGENTA}{now}{colorama.Fore.RESET}" - rest = ' '.join(str(el) for el in args) + rest = " ".join(str(el) for el in args) - print( - f"{prefix} -- {colored_now} -- {rest}" - ) + print(f"{prefix} -- {colored_now} -- {rest}") def debug(self, *args): self._print(LogLevel.DEBUG, *args) diff --git a/arkdoc/parser/documentation.py b/arkdoc/parser/documentation.py index 89d925f..0fe1d26 100644 --- a/arkdoc/parser/documentation.py +++ b/arkdoc/parser/documentation.py @@ -9,8 +9,11 @@ def deep_flatten(lst): - return ([a for i in lst for a in - deep_flatten(i)] if isinstance(lst, Iterable) else [lst]) + return ( + [a for i in lst for a in deep_flatten(i)] + if isinstance(lst, Iterable) + else [lst] + ) class Source(Enum): @@ -28,13 +31,13 @@ def _token_format(self, token: Token): return token.value def signature(self, on: List[Token] = None): - def transform(L): return list( - map(lambda t: t.value, deep_flatten(L))) + def transform(L): + return list(map(lambda t: t.value, deep_flatten(L))) + top = self.target[:] if on is None else on while True: - if isinstance(top, list) and \ - len(top) and isinstance(top[0], list): + if isinstance(top, list) and len(top) and isinstance(top[0], list): top = top[0] else: break diff --git a/arkdoc/parser/parser.py b/arkdoc/parser/parser.py index e5a4481..0065cce 100644 --- a/arkdoc/parser/parser.py +++ b/arkdoc/parser/parser.py @@ -15,7 +15,7 @@ def __init__(self, filename: str): self.in_code = False def _is_doc_comment(self, token: Token) -> bool: - if token.type == 'COMMENT': + if token.type == "COMMENT": if "=begin" in token.value: self.in_code = True return True @@ -25,9 +25,7 @@ def _is_doc_comment(self, token: Token) -> bool: self.in_code = False return True - return re.match( - r'^#+ *@\w+', token.value - ) is not None + return re.match(r"^#+ *@\w+", token.value) is not None return False def _doc_extractor(self, node: List): @@ -36,9 +34,7 @@ def _doc_extractor(self, node: List): for n in node: if not isinstance(n, list): if self._is_doc_comment(n): - comments = [ - n - ] if comments is None else comments + [n] + comments = [n] if comments is None else comments + [n] else: if comments is None: yield from self._doc_extractor(n) @@ -48,27 +44,27 @@ def _doc_extractor(self, node: List): yield from self._doc_extractor(n) def extract_documentation(self): - if self.filename.endswith('.ark'): + if self.filename.endswith(".ark"): for doc in self._doc_extractor(self.ast): logger.debug(doc) yield doc - elif self.filename.endswith('.cpp'): + elif self.filename.endswith(".cpp"): for node in self.ast: yield Documentation(Source.Cpp, node, None) else: raise NotImplementedError def parse(self): - with open(self.filename, 'r') as f: + with open(self.filename, "r") as f: program = f.read() - if self.filename.endswith('.ark'): + if self.filename.endswith(".ark"): self.ast = [] tokens = list(tokenize(program)) while tokens: self.ast += tree_from_tokens(tokens) - elif self.filename.endswith('.cpp'): + elif self.filename.endswith(".cpp"): self.ast = list(cpp_tokenize(program)) logger.debug(self.ast) else: diff --git a/arkdoc/parser/tokenizer.py b/arkdoc/parser/tokenizer.py index 017132d..6fff09f 100644 --- a/arkdoc/parser/tokenizer.py +++ b/arkdoc/parser/tokenizer.py @@ -13,66 +13,65 @@ class Token: column: int def __str__(self): - return f"Token({self.type}, '{self.value}', line={self.line}, col={self.column})" + return ( + f"Token({self.type}, '{self.value}', line={self.line}, col={self.column})" + ) Keywords = "let mut set del fun if while import begin quote".split() TokenSpecification = [ - ('NUMBER', r'\d+(\.\d*)?'), - ('STRING', r'"[^"]*"'), - ('ID', r'[\w:?=!@&<>+\-%*/.]+'), - ('LPAREN', r'[(\[{]'), - ('RPAREN', r'[)\]}]'), - ('COMMENT', r'#[^\n]*'), - ('NEWLINE', r'\n'), - ('SKIP', r'[ \t]+'), - ('MISMATCH', r'.'), + ("NUMBER", r"\d+(\.\d*)?"), + ("STRING", r"\"[^\"]*\""), + ("ID", r"[\w:?=!@&<>+\-%*/.]+"), + ("LPAREN", r"[(\[{]"), + ("RPAREN", r"[)\]}]"), + ("COMMENT", r"#[^\n]*"), + ("NEWLINE", r"\n"), + ("SKIP", r"[ \t]+"), + ("MISMATCH", r"."), ] def tokenize(code: str) -> List[Token]: - tok_regex = '|'.join( - '(?P<%s>%s)' % - pair for pair in TokenSpecification - ) + tok_regex = "|".join("(?P<%s>%s)" % pair for pair in TokenSpecification) line_num = 1 line_start = 0 - lines = code.split('\n') + lines = code.split("\n") for mo in re.finditer(tok_regex, code): kind = mo.lastgroup value = mo.group() column = mo.start() - line_start - if kind == 'ID' and value in Keywords: + if kind == "ID" and value in Keywords: kind = value - elif kind == 'NEWLINE': + elif kind == "NEWLINE": line_start = mo.end() line_num += 1 continue - elif kind == 'SKIP': + elif kind == "SKIP": continue - elif kind == 'MISMATCH': + elif kind == "MISMATCH": raise RuntimeError( - f'{value!r} unexpected on line {line_num}\n{lines[line_num - 1]}' + f"{value!r} unexpected on line {line_num}\n{lines[line_num - 1]}" ) yield Token(kind, value, line_num, column) def cpp_tokenize(code: str) -> List[str]: - tok_regex = r'^ */\*\*\n( *\* *@.+\n)+ *\*/' + tok_regex = r"^ */\*\*\n( *\* *@.+\n)+ *\*/" line_num = 1 line_start = 0 def transform(line: str): nonlocal line_num - lines = line.split('\n') + lines = line.split("\n") for e in lines[1:-1]: - line = '#' + e.strip()[1:] + line = "#" + e.strip()[1:] line_num += 1 - yield Token('COMMENT', line, line_num, column) + yield Token("COMMENT", line, line_num, column) for mo in re.finditer(tok_regex, code, flags=re.MULTILINE): value = mo.group() @@ -82,25 +81,23 @@ def transform(line: str): def tree_from_tokens(tokens: List[Token]) -> List: if len(tokens) == 0: - raise SyntaxError('unexpected EOF') + raise SyntaxError("unexpected EOF") token = tokens.pop(0) L = [] - while token.type == 'COMMENT': + while token.type == "COMMENT": L.append(token) token = tokens.pop(0) - if token.type == 'LPAREN': + if token.type == "LPAREN": L2 = [] - while tokens[0].type != 'RPAREN': + while tokens[0].type != "RPAREN": L2.append(tree_from_tokens(tokens)) tokens.pop(0) L.append(L2) return L - elif token.type == 'RPAREN': - raise SyntaxError( - f"unexpected ) on line {token.line}, at {token.column}" - ) + elif token.type == "RPAREN": + raise SyntaxError(f"unexpected ) on line {token.line}, at {token.column}") else: return token diff --git a/arkdoc/reader.py b/arkdoc/reader.py index 7db5730..0018e70 100644 --- a/arkdoc/reader.py +++ b/arkdoc/reader.py @@ -7,7 +7,7 @@ def explore(folder: str) -> List[str]: - for ext in ['ark', 'cpp']: + for ext in ["ark", "cpp"]: yield from glob.glob(f"{folder}/*.{ext}", recursive=True) diff --git a/templates/404.html b/templates/404.html index e69de29..6cba8e0 100644 --- a/templates/404.html +++ b/templates/404.html @@ -0,0 +1,10 @@ + + + + {title} + + + + {content} + + \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index e69de29..6cba8e0 100644 --- a/templates/index.html +++ b/templates/index.html @@ -0,0 +1,10 @@ + + + + {title} + + + + {content} + + \ No newline at end of file diff --git a/templates/temp.html b/templates/temp.html index d2c054a..6cba8e0 100644 --- a/templates/temp.html +++ b/templates/temp.html @@ -1,5 +1,5 @@ - + {title} From f0809dec92bcc943bb70f190392ffe255c538f00 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 18:38:00 +0200 Subject: [PATCH 26/46] adding test workflow --- .github/workflows/test.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..2dbacc8 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,35 @@ +name: Tests CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + ci: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Checkout std + uses: actions/checkout@v2 + with: + repository: ArkScript-lang/std + path: './std-latest' + + - name: Checkout Ark + uses: actions/checkout@v2 + with: + repository: ArkScript-lang/Ark + path: './ark-latest' + + - name: Python + uses: actions/setup-python@v2 + with: + python-version: '3.9' + + - run: pip install -r requirements.txt + - run: python -m arkdoc std-latest/ --builtins ark-latest/src/Builtins --dry-run || exit 1 \ No newline at end of file From ae5dbedae45f591c8044ac042877ea3ac4fd0a44 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 18 Jul 2021 18:42:04 +0200 Subject: [PATCH 27/46] handling multiple authors --- arkdoc/generator/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arkdoc/generator/utils.py b/arkdoc/generator/utils.py index b347518..b75a0c5 100644 --- a/arkdoc/generator/utils.py +++ b/arkdoc/generator/utils.py @@ -41,12 +41,14 @@ def extractor(data: Dict, doc: Documentation) -> Tuple[Dict, str]: param_name, desc = param.split(" ", 1) data["param"][i] = spec.Param(param_name, desc) + data["author"] = [el.strip() for el in data["author"].split(",")] + return data, "\n".join(code) def from_ark(doc: Documentation) -> spec.Function: _, name, *args = doc.signature() - data, code = extractor({"brief": "", "details": "", "param": [], "author": []}, doc) + data, code = extractor({"brief": "", "details": "", "param": [], "author": ""}, doc) if len(data["param"]) != len(args): logger.warn( @@ -65,7 +67,7 @@ def from_ark(doc: Documentation) -> spec.Function: def from_cpp(doc: Documentation) -> spec.Function: data, code = extractor( - {"name": "", "brief": "", "details": "", "param": [], "author": []}, doc + {"name": "", "brief": "", "details": "", "param": [], "author": ""}, doc ) return spec.Function( From 99654a38cf981d89f9b437908810115bf1a3c011 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Tue, 20 Jul 2021 20:31:02 +0200 Subject: [PATCH 28/46] enhancing the C++ tokenizer and adding more details about the syntax --- README.md | 12 ++++++------ arkdoc/parser/tokenizer.py | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 73cc27f..2ef7365 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,12 @@ python3 -m arkdoc --help ## Syntax -- `@meta ` -- `@brief ` -- `@param ` -- `@details ` -- `=begin` / code block / `=end` -- `@author ,,...` +- `@brief `: a single brief declaration is expected +- `@param `: multiple `@param` declaration can be written +- `@details `: a single detailled declaration is expected +- `=begin` / code block / `=end`: a single code block (it can contain multiple lines) is expected +- `@author ,,...`: the url to the profiles of the authors must be separated by commas, spaces can be added +- any line not starting with a `@` will be ignored, unless it is enclosed in a `=begin`/`=end` bloc ## Example diff --git a/arkdoc/parser/tokenizer.py b/arkdoc/parser/tokenizer.py index 6fff09f..9f2be1b 100644 --- a/arkdoc/parser/tokenizer.py +++ b/arkdoc/parser/tokenizer.py @@ -60,7 +60,20 @@ def tokenize(code: str) -> List[Token]: def cpp_tokenize(code: str) -> List[str]: - tok_regex = r"^ */\*\*\n( *\* *@.+\n)+ *\*/" + """ + The following regex accepts this kind of comment + + /** + * test + * test + * test + * @meta test + test + test + test + */ + """ + tok_regex = r"^ */\*\*\n(@?.*\n)+ *\*/" line_num = 1 line_start = 0 From da0e86f17ecd971f535b7ed8d02751e7578d6914 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Tue, 20 Jul 2021 20:40:43 +0200 Subject: [PATCH 29/46] removing @meta for now --- README.md | 1 - arkdoc/parser/tokenizer.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 2ef7365..999d22e 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ python3 -m arkdoc --help ## Example ```lisp -# @meta List # @brief Iterate over a given list and run a given function on every element. # @param _L the list to iterate over # @param _func the function to call on each element diff --git a/arkdoc/parser/tokenizer.py b/arkdoc/parser/tokenizer.py index 9f2be1b..caff76f 100644 --- a/arkdoc/parser/tokenizer.py +++ b/arkdoc/parser/tokenizer.py @@ -67,7 +67,7 @@ def cpp_tokenize(code: str) -> List[str]: * test * test * test - * @meta test + * @brief test test test test From 2b4c3eae8d1827bb508ce16b25fa940cd2486361 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sat, 24 Jul 2021 17:46:50 +0200 Subject: [PATCH 30/46] fixing the cpp doxygen comment extractor --- arkdoc/parser/tokenizer.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arkdoc/parser/tokenizer.py b/arkdoc/parser/tokenizer.py index caff76f..7999997 100644 --- a/arkdoc/parser/tokenizer.py +++ b/arkdoc/parser/tokenizer.py @@ -68,12 +68,9 @@ def cpp_tokenize(code: str) -> List[str]: * test * test * @brief test - test - test - test */ """ - tok_regex = r"^ */\*\*\n(@?.*\n)+ *\*/" + tok_regex = r"^ */\*\*\n( *\*( .*)\n)+" line_num = 1 line_start = 0 From 105cbea134c192c4813f23927c003cdbf6ffab1b Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sat, 24 Jul 2021 17:47:19 +0200 Subject: [PATCH 31/46] adding argument to --html option to put the generated files in it --- arkdoc/__main__.py | 4 ++-- arkdoc/generator/base.py | 7 +++++-- arkdoc/generator/html.py | 34 ++++++++++++++++++++++++++++++---- arkdoc/parser/tokenizer.py | 2 +- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index 5cfd9a8..c3af6fa 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -36,7 +36,7 @@ def compute(args) -> bool: if not args.dry_run: if args.html: - gen = HTMLGenerator(parsers) + gen = HTMLGenerator(parsers, args.html) gen() else: logger.error("Missing generator!") @@ -58,7 +58,7 @@ def main() -> int: action="store_true", help="Run and log everything but don't generate any file", ) - cli.add_argument("--html", action="store_true", help="Generate HTML documentation") + cli.add_argument("--html", type=str, help="Output folder for the HTML docs") args = cli.parse_args() diff --git a/arkdoc/generator/base.py b/arkdoc/generator/base.py index f78cc3b..0a1dd3b 100644 --- a/arkdoc/generator/base.py +++ b/arkdoc/generator/base.py @@ -11,8 +11,11 @@ class Generator: - def __init__(self, parsers: List[Parser], template: Path): - self.template = template.read_text("utf-8") + def __init__(self, parsers: List[Parser], template_folder: Path, pattern: str): + self.templates = { + file.name: file.read_text("utf-8") + for file in template_folder.glob(pattern) + } self.list = spec.FileList([]) registered = {} diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index 3c5d937..2fcfabd 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -1,7 +1,9 @@ #!/usr/bin/env python3 +import re from typing import List from pprint import pformat +from pathlib import Path from . import specification as spec from . import Generator @@ -10,10 +12,34 @@ class HTMLGenerator(Generator): - def __init__(self, parsers: List[Parser]): - super().__init__(parsers, spec.HTML_TEMPLATE_FOLDER / "temp.html") + def __init__(self, parsers: List[Parser], output: str): + super().__init__(parsers, spec.HTML_TEMPLATE_FOLDER, "*.html") + self.output = Path(output) + self.fields = { + name: re.findall(r"{\w+}", content, re.MULTILINE) + for name, content in self.templates.items() + } + + def make_nav_link(self, name: str, path: str) -> str: + return f"{name}" + + def make_code_block(self, content: str) -> str: + return f"""
    +
    +{content}
    +
    +
    """ + + def make_section(self, title: str, content: str) -> str: + return f"""
    +

    {title}

    + +
    + {content} +
    +
    """ def _generate(self, path: str, functions: List[spec.Function]): - # TODO - logger.info(path, pformat(functions, indent=4)) + logger.info("---- ", path) + logger.info(pformat(functions, indent=4)) return None diff --git a/arkdoc/parser/tokenizer.py b/arkdoc/parser/tokenizer.py index 7999997..1db34c4 100644 --- a/arkdoc/parser/tokenizer.py +++ b/arkdoc/parser/tokenizer.py @@ -78,7 +78,7 @@ def transform(line: str): nonlocal line_num lines = line.split("\n") - for e in lines[1:-1]: + for e in lines[1:]: line = "#" + e.strip()[1:] line_num += 1 yield Token("COMMENT", line, line_num, column) From 2211d9734a7350966cda7f9c861092797ea53531 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sat, 24 Jul 2021 18:00:58 +0200 Subject: [PATCH 32/46] get loglevel from an environment variable --- arkdoc/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arkdoc/__init__.py b/arkdoc/__init__.py index 53311be..053c5a6 100644 --- a/arkdoc/__init__.py +++ b/arkdoc/__init__.py @@ -2,7 +2,8 @@ from .logger_utils import Logger, LogLevel -logger = Logger("ArkDoc", level=LogLevel.INFO) +import os +logger = Logger("ArkDoc", level=LogLevel[os.environ.get("ARKDOC_LOGLEVEL", "INFO")]) from .parser import Parser from .reader import parse_all_in From f1034b95c90a3a933ed067d811a3138da40a510d Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sat, 24 Jul 2021 18:01:15 +0200 Subject: [PATCH 33/46] add info on loglevel on the readme --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 999d22e..fa2f247 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,11 @@ git clone https://github.com/ArkScript-lang/ArkDoc.git python3 -m venv venv source ./venv/bin/activate pip3 install -r requirements.txt + +# set the log level +# if not given, defaults to INFO +export ARKDOC_LOGLEVEL=DEBUG + python3 -m arkdoc --help ``` From 534e3520bf15c17b739516ae4ac977574e1c60d3 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sat, 24 Jul 2021 18:30:05 +0200 Subject: [PATCH 34/46] starting the generation of the html documentation --- .gitignore | 3 +- arkdoc/generator/base.py | 13 +- arkdoc/generator/html.py | 36 +- assets/css/.gitkeep | 0 assets/js/.gitkeep | 0 templates/assets/css/main.css | 365 +++++++++++++++++++++ templates/assets/css/main.css.map | 1 + templates/assets/css/rainbowjs-theme.css | 1 + templates/assets/css/spectre-exp.min.css | 1 + templates/assets/css/spectre-icons.min.css | 1 + templates/assets/css/spectre.min.css | 1 + templates/assets/images/Ark-A.png | Bin 0 -> 12137 bytes templates/assets/images/Ark-full.png | Bin 0 -> 27548 bytes templates/assets/images/Ark-slim.png | Bin 0 -> 22969 bytes templates/assets/js/languages/arkscript.js | 46 +++ templates/assets/js/languages/cpp.js | 26 ++ templates/assets/js/languages/shell.js | 9 + templates/assets/js/rainbow.min.js | 2 + templates/assets/sass/_all.sass | 3 + templates/assets/sass/_vars.sass | 17 + templates/assets/sass/content.sass | 60 ++++ templates/assets/sass/general.sass | 77 +++++ templates/assets/sass/page-structure.sass | 192 +++++++++++ templates/banner.html | 16 + templates/index.html | 68 +++- 25 files changed, 922 insertions(+), 16 deletions(-) delete mode 100644 assets/css/.gitkeep delete mode 100644 assets/js/.gitkeep create mode 100644 templates/assets/css/main.css create mode 100644 templates/assets/css/main.css.map create mode 100644 templates/assets/css/rainbowjs-theme.css create mode 100644 templates/assets/css/spectre-exp.min.css create mode 100644 templates/assets/css/spectre-icons.min.css create mode 100644 templates/assets/css/spectre.min.css create mode 100644 templates/assets/images/Ark-A.png create mode 100644 templates/assets/images/Ark-full.png create mode 100644 templates/assets/images/Ark-slim.png create mode 100644 templates/assets/js/languages/arkscript.js create mode 100644 templates/assets/js/languages/cpp.js create mode 100644 templates/assets/js/languages/shell.js create mode 100644 templates/assets/js/rainbow.min.js create mode 100644 templates/assets/sass/_all.sass create mode 100644 templates/assets/sass/_vars.sass create mode 100644 templates/assets/sass/content.sass create mode 100644 templates/assets/sass/general.sass create mode 100644 templates/assets/sass/page-structure.sass create mode 100644 templates/banner.html diff --git a/.gitignore b/.gitignore index 22e3c5a..f6d248e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ *.arkc *.py[ouc] __pycache__/ -venv/ \ No newline at end of file +venv/ +out/ \ No newline at end of file diff --git a/arkdoc/generator/base.py b/arkdoc/generator/base.py index 0a1dd3b..b8fa13d 100644 --- a/arkdoc/generator/base.py +++ b/arkdoc/generator/base.py @@ -12,6 +12,7 @@ class Generator: def __init__(self, parsers: List[Parser], template_folder: Path, pattern: str): + self.template_folder = template_folder self.templates = { file.name: file.read_text("utf-8") for file in template_folder.glob(pattern) @@ -34,12 +35,16 @@ def __init__(self, parsers: List[Parser], template_folder: Path, pattern: str): self.list.files.append(file) - def _generate(self, path: str, functions: List[spec.Function]): + def generate_index(self): + raise NotImplementedError + + def generate_one(self, path: str, functions: List[spec.Function]): raise NotImplementedError def __call__(self): + self.generate_index() + for file in self.list.files: - logger.info(f"Generating {file.path} documentation...") - logger.info(f"\tFound {len(file.functions)} functions") + logger.info(f"Generating {file.path} documentation... found {len(file.functions)} functions") - self._generate(file.path, file.functions) + self.generate_one(file.path, file.functions) diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index 2fcfabd..d92e3cb 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 import re +from datetime import datetime +import shutil from typing import List from pprint import pformat from pathlib import Path @@ -14,12 +16,14 @@ class HTMLGenerator(Generator): def __init__(self, parsers: List[Parser], output: str): super().__init__(parsers, spec.HTML_TEMPLATE_FOLDER, "*.html") - self.output = Path(output) + self.output_path = Path(output) self.fields = { name: re.findall(r"{\w+}", content, re.MULTILINE) for name, content in self.templates.items() } + self.footer = f"Last generation at {datetime.now()}" + def make_nav_link(self, name: str, path: str) -> str: return f"{name}" @@ -39,7 +43,31 @@ def make_section(self, title: str, content: str) -> str: """ - def _generate(self, path: str, functions: List[spec.Function]): - logger.info("---- ", path) - logger.info(pformat(functions, indent=4)) + def create_dir(self, name: str): + (self.output_path / name).mkdir() + + def generate_index(self): + if not self.output_path.exists(): + shutil.copytree(str(self.template_folder / "assets"), str(self.output_path / "assets")) + else: + shutil.rmtree(str(self.output_path)) + if self.output_path.exists(): + self.output_path.rmdir() + return self.generate_index() + + sections = self.make_section("Test", "test") + + content = self.templates["index.html"] + content = content.format( + page_title="ArkScript documentation", + banner=self.templates["banner.html"], + navigation_links="", + sections=sections, + footer=self.footer + ) + + (self.output_path / "index.html").write_text(content) + + def generate_one(self, path: str, functions: List[spec.Function]): + local_fields = self.fields.copy() return None diff --git a/assets/css/.gitkeep b/assets/css/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/assets/js/.gitkeep b/assets/js/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/templates/assets/css/main.css b/templates/assets/css/main.css new file mode 100644 index 0000000..c83959e --- /dev/null +++ b/templates/assets/css/main.css @@ -0,0 +1,365 @@ +body { + background-color: #161616; + color: #d8d8d8; + margin: 0; + padding: 0; + min-height: 100vh; +} + +img.fit { + width: 100%; +} + +img.three-quarters { + width: 75%; +} + +code:not(.rainbowjs), div.codeblock { + background-color: #161616; + color: #d8d8d8; + word-break: break-all; +} + +code:not(.rainbowjs).error, div.codeblock.error { + color: #d73e48; +} + +code.rainbowjs { + color: #e0e0e0; + background-color: inherit; +} + +div.codeblock, pre { + padding: 0 10px !important; + font-family: "SF Mono", "Segoe UI Mono", "Roboto Mono", Menlo, Courier, monospace; + font-size: 110% !important; + line-height: 0.5; + border-radius: 0.1rem; +} + +pre.preloader, div.preloader { + position: initial; +} + +.divider { + border-top: none; + border-left: 1px solid #373737; + height: 5vh; +} + +.divider.half { + height: 2.5vh; +} + +pre code.rainbowjs span.label { + background: initial; +} + +.btn:not(.btn-link) { + border-color: #0870f8 !important; +} +.btn:not(.btn-link):hover { + border-color: #076bef !important; +} + +.btn.btn-link, .btn-link, .btn.btn-link:focus { + color: deepskyblue; +} +.btn.btn-link:hover, .btn-link:hover, .btn.btn-link:focus:hover { + color: #33ccff; +} + +.btn:hover { + border-radius: 5px; + transition: border-radius 0.1s ease-in-out; +} + +.btn.btn-primary { + color: #e0e0e0; + background: #0870f8; +} +.btn.btn-primary:hover { + background-color: #0665e0; +} + +@keyframes slide-left { + 0% { + opacity: 0; + transform: translateX(1.6rem); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} +header.navbar, #banner { + padding: 0 4vw; + width: 100vw; + height: 5vh; + background-color: #161616; +} +header.navbar *, #banner * { + margin: 0 10px; +} +header.navbar a, #banner a { + font-size: 0.8rem; +} +header.navbar img, #banner img { + height: 5vh; +} +header.navbar .navbar-brand, #banner .navbar-brand { + font-size: 1.12rem; + color: #00ace6; + text-transform: uppercase; + font-weight: bold; + line-height: 5vh; +} +header.navbar .dropdown, #banner .dropdown { + margin: 0; +} +header.navbar .dropdown a, #banner .dropdown a { + border: none; +} + +header.navbar:not(.has-banner) { + height: 7.5vh; +} +header.navbar:not(.has-banner) img, header.navbar:not(.has-banner) .navbar-center, header.navbar:not(.has-banner) .navbar-center a, header.navbar:not(.has-banner) div.dropdown-link { + height: 7.5vh; +} + +#banner { + height: 60vh; + margin-bottom: 25px; +} +#banner .banner-center { + display: flex; + flex-flow: column; + text-align: center; +} +#banner img { + height: 12vh; +} + +.off-canvas .off-canvas-toggle { + position: fixed; + top: 10vh; + left: 15px; +} + +#sidebar { + background: #161616; + max-width: 15vw; +} +#sidebar ~ .off-canvas-overlay { + cursor: initial; +} +#sidebar .nav .nav-item a { + color: #d8d8d8; +} +#sidebar .nav .nav-item a:hover { + color: deepskyblue; +} + +footer#page-footer { + bottom: 0; + width: 100vw; + min-height: 9vh; + background-color: #161616; + padding: 2vh; +} +footer#page-footer p { + margin: 0; + padding: 0; +} + +.btn.btn-link.dropdown-toggle:focus { + box-shadow: none; +} + +.menu { + background-color: #161616; +} + +.dropdown .dropdown-toggle:focus + .menu, .dropdown .menu:hover, .dropdown.active .menu { + display: block !important; +} + +.hide { + display: none; +} + +.dropdown-toggle .icon.icon-caret { + margin-right: 0; +} + +@media screen and (max-width: 1280px) { + .dropdown-toggle .icon.icon-caret { + display: none; + } + + header.navbar { + min-height: 55px; + padding: 0; + position: fixed; + } + header.navbar.has-banner #menu-show { + height: 5vh; + } + header.navbar.has-banner #menu-show i { + height: 7.5vh; + } + header.navbar .dropdown { + display: flex !important; + align-items: center; + flex-direction: column; + } + header.navbar .dropdown .menu, header.navbar .dropdown .menu:hover { + animation: none; + display: flex !important; + align-items: inherit; + flex-direction: inherit; + position: relative; + margin-bottom: 20px; + } + header.navbar .dropdown .dropdown-toggle:focus + .menu { + display: flex !important; + } + header.navbar #menu-show { + min-height: 55px; + padding-top: 0; + padding-bottom: 0; + border: 0; + height: 7.5vh; + position: fixed; + top: 0; + margin-left: 0; + z-index: 500; + } + header.navbar #menu-show i { + height: 7.5vh; + } + header.navbar .logo { + align-items: initial; + position: fixed; + right: 0; + } + header.navbar .logo img { + min-height: 50px; + } + header.navbar .divider { + width: 190px; + height: 1px; + border-left: none; + border-top: 1px solid #373737; + } + + header.navbar:not(.has-banner):focus-within .navbar-section.show-on-focus { + animation: slide-down ease 0.15s 1; + padding-top: 5vh; + background-color: #161616; + left: 0; + margin: 0; + width: 100vw; + display: flex !important; + align-items: center; + flex-direction: column; + } + header.navbar:not(.has-banner):focus-within .menu { + position: initial; + } + + header.navbar.has-banner:focus-within .logo, header.navbar.has-banner:focus-within .logo * { + animation: slide-left ease 0.15s 1; + display: block !important; + } + header.navbar.has-banner:focus-within .navbar-center { + animation: slide-down ease 0.15s 1; + display: flex !important; + background-color: #161616; + position: fixed; + top: 5vh; + left: 0; + flex-direction: column; + margin: 0; + width: 100vw; + } + + .off-canvas .off-canvas-toggle { + left: -6px; + border-bottom-right-radius: 10px; + } +} +ul.no-dot { + list-style: none; + padding-left: 25px; +} + +#main { + width: 100vw; + background-color: #232323; + min-height: 83.5vh; +} + +#content { + padding: 5vh 0; +} +#content #nota-bene { + margin: 25px 0; +} +#content .inner-section { + padding-left: 25px; + border-left: 1px solid #373737; +} +#content h3, #content h4, #content h5, #content h6 { + margin-top: 3vh; +} + +#content > section, .inner-section > section { + margin-bottom: 3.5%; +} + +table.table.dark { + background-color: #161616; +} + +.table.table-striped tbody tr:nth-of-type(odd) { + background-color: #0f0f0f; +} + +.table.table-hover tbody tr:hover { + background-color: #070707; +} + +code.rainbowjs { + display: block; + overflow-x: auto; +} + +pre.rainbow-show { + position: initial; +} + +@media screen and (max-width: 1280px) { + .col-2 { + display: none; + } + + .col-8 { + width: 100vw; + } + + #content { + margin-top: 7.5vh; + padding: 5vh 10px; + } + #content h2 { + text-align: center; + } + #content section .inner-section { + padding: 0; + border: none; + } +} + +/*# sourceMappingURL=main.css.map */ diff --git a/templates/assets/css/main.css.map b/templates/assets/css/main.css.map new file mode 100644 index 0000000..86b5324 --- /dev/null +++ b/templates/assets/css/main.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../sass/general.sass","../sass/_vars.sass","../sass/page-structure.sass","../sass/content.sass"],"names":[],"mappings":"AAEA;EACI,kBCOa;EDNb,OCQU;EDPV;EACA;EACA;;;AAIJ;EACI;;;AACJ;EACI;;;AAGJ;EACI,kBCRa;EDSb,OCPU;EDQV;;;AACJ;EACI;;;AACJ;EACI,OCbS;EDcT;;;AACJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAIJ;EACI;EACA;EACA,QCvCY;;;ADwChB;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;AACA;EACI;;;AAER;EACI,OCxCa;;ADyCb;EACI;;;AAER;EACI;EACA;;;AAEJ;EACI,OCrDS;EDsDT,YCjDmB;;ADkDnB;EACI;;;AAGR;EACI;IACI;IACA;;EACJ;IACI;IACA;;;AElER;EACI;EACA;EACA,QDVY;ECWZ,kBDJa;;ACMb;EACI;;AACJ;EACI,WAXoB;;AAaxB;EACI,QDnBQ;;ACqBZ;EACI;EACA;EACA;EACA;EACA,aD1BQ;;AC4BZ;EACI;;AACA;EACI;;;AAEZ;EACI;;AACA;EACI;;;AAIR;EACI,QArCY;EAsCZ;;AAEA;EACI;EACA;EACA;;AAEJ;EACI;;;AAIR;EACI;EACA;EACA;;;AAEJ;EACI,YDrDa;ECsDb;;AAEA;EACI;;AAEJ;EACI;;AACA;EACI,ODzDK;;;AC4DjB;EACI;EACA;EACA,YD1EY;EC2EZ,kBDrEa;ECsEb;;AAEA;EACI;EACA;;;AAIR;EACI;;;AACJ;EACI,kBDjFa;;;ACkFjB;EACI;;;AAIJ;EACI;;;AAGJ;EACI;;;AAKJ;EACI;IACI;;;EAEJ;IACI;IAMA;IACA;;EALI;IACI,QDhHA;;ECiHA;IACI;;EAGZ;IACI;IACA;IACA;;EACA;IACI;IACA;IACA;IACA;IACA;IACA;;EACJ;IACI;;EACR;IACI;IAGA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EATA;IACI;;EASR;IACI;IACA;IACA;;EACA;IACI;;EACR;IACI;IACA;IACA;IACA;;;EAIJ;IACI;IACA,aD9JI;IC+JJ,kBDxJK;ICyJL;IACA;IACA;IACA;IACA;IACA;;EACJ;IACI;;;EAIJ;IACI;IACA;;EACJ;IACI;IACA;IACA,kBD1KK;IC2KL;IACA,KDnLI;ICoLJ;IACA;IACA;IACA;;;EAGR;IACI;IACA;;;AC7LR;EACI;EACA,cFHS;;;AEMb;EACI;EACA;EACA;;;AAGJ;EACI;;AAEA;EACI;;AAEJ;EACI,cFnBK;EEoBL;;AAEJ;EACI;;;AAER;EACI;;;AAEJ;EACI,kBFpBa;;;AEqBjB;EACI;;;AACJ;EACI;;;AAGJ;EACI;EACA;;;AAEJ;EACI;;;AAGJ;EAEI;IACI;;;EACJ;IACI;;;EAEJ;IACI;IACA;;EACA;IACI;;EACJ;IACI;IACA","file":"main.css"} \ No newline at end of file diff --git a/templates/assets/css/rainbowjs-theme.css b/templates/assets/css/rainbowjs-theme.css new file mode 100644 index 0000000..6b16973 --- /dev/null +++ b/templates/assets/css/rainbowjs-theme.css @@ -0,0 +1 @@ +@keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade{10%{transform:scale(1, 1)}35%{transform:scale(1, 1.7)}40%{transform:scale(1, 1.7)}50%{opacity:1}60%{transform:scale(1, 1)}100%{transform:scale(1, 1);opacity:0}}[data-language] code,[class^="lang"] code,pre [data-language],pre [class^="lang"]{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";animation:fade-in 50ms ease-in-out 2s forwards}[data-language] code.rainbow,[class^="lang"] code.rainbow,pre [data-language].rainbow,pre [class^="lang"].rainbow{animation:none;transition:opacity 50ms ease-in-out}[data-language] code.loading,[class^="lang"] code.loading,pre [data-language].loading,pre [class^="lang"].loading{animation:none}[data-language] code.rainbow-show,[class^="lang"] code.rainbow-show,pre [data-language].rainbow-show,pre [class^="lang"].rainbow-show{opacity:1}pre{position:relative}pre.loading .preloader div{animation-play-state:running}pre.loading .preloader div:nth-of-type(1){background:#0081f5;animation:fade 1.5s 300ms linear infinite}pre.loading .preloader div:nth-of-type(2){background:#5000f5;animation:fade 1.5s 438ms linear infinite}pre.loading .preloader div:nth-of-type(3){background:#9000f5;animation:fade 1.5s 577ms linear infinite}pre.loading .preloader div:nth-of-type(4){background:#f50419;animation:fade 1.5s 715ms linear infinite}pre.loading .preloader div:nth-of-type(5){background:#f57900;animation:fade 1.5s 853ms linear infinite}pre.loading .preloader div:nth-of-type(6){background:#f5e600;animation:fade 1.5s 992ms linear infinite}pre.loading .preloader div:nth-of-type(7){background:#00f50c;animation:fade 1.5s 1130ms linear infinite}pre .preloader{position:absolute;top:12px;left:10px}pre .preloader div{width:12px;height:12px;border-radius:4px;display:inline-block;margin-right:4px;opacity:0;animation-play-state:paused;animation-fill-mode:forwards}pre{background-color:#000;word-wrap:break-word;margin:0px;padding:10px;color:#fff;font-size:14px;margin-bottom:20px}pre,code{font-family:'Monaco', 'Menlo', courier, monospace}pre{background-color:#1d1f21;color:#c5c8c6}pre .comment{color:#969896}pre .variable.global,pre .variable.class,pre .variable.instance{color:#c66}pre .constant.numeric,pre .constant.language,pre .constant.hex-color,pre .keyword.unit{color:#de935f}pre .constant,pre .entity,pre .entity.class,pre .support{color:#f0c674}pre .constant.symbol,pre .string{color:#b5bd68}pre .entity.function,pre .support.css-property,pre .selector{color:#81a2be}pre .keyword,pre .storage{color:#b294bb} \ No newline at end of file diff --git a/templates/assets/css/spectre-exp.min.css b/templates/assets/css/spectre-exp.min.css new file mode 100644 index 0000000..d313774 --- /dev/null +++ b/templates/assets/css/spectre-exp.min.css @@ -0,0 +1 @@ +/*! Spectre.css Experimentals v0.5.9 | MIT License | github.com/picturepan2/spectre */.form-autocomplete{position:relative}.form-autocomplete .form-autocomplete-input{align-content:flex-start;display:-ms-flexbox;display:flex;-ms-flex-line-pack:start;-ms-flex-wrap:wrap;flex-wrap:wrap;height:auto;min-height:1.6rem;padding:.1rem}.form-autocomplete .form-autocomplete-input.is-focused{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-autocomplete .form-autocomplete-input .form-input{border-color:transparent;box-shadow:none;display:inline-block;-ms-flex:1 0 auto;flex:1 0 auto;height:1.2rem;line-height:.8rem;margin:.1rem;width:auto}.form-autocomplete .menu{left:0;position:absolute;top:100%;width:100%}.form-autocomplete.autocomplete-oneline .form-autocomplete-input{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto}.form-autocomplete.autocomplete-oneline .chip{-ms-flex:1 0 auto;flex:1 0 auto}.calendar{border:.05rem solid #dadee4;border-radius:.1rem;display:block;min-width:280px}.calendar .calendar-nav{align-items:center;background:#f7f8f9;border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-align:center;font-size:.9rem;padding:.4rem}.calendar .calendar-body,.calendar .calendar-header{display:-ms-flexbox;display:flex;-ms-flex-pack:center;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:center;padding:.4rem 0}.calendar .calendar-body .calendar-date,.calendar .calendar-header .calendar-date{-ms-flex:0 0 14.28%;flex:0 0 14.28%;max-width:14.28%}.calendar .calendar-header{background:#f7f8f9;border-bottom:.05rem solid #dadee4;color:#bcc3ce;font-size:.7rem;text-align:center}.calendar .calendar-body{color:#66758c}.calendar .calendar-date{border:0;padding:.2rem}.calendar .calendar-date .date-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:.05rem solid transparent;border-radius:50%;color:#66758c;cursor:pointer;font-size:.7rem;height:1.4rem;line-height:1rem;outline:0;padding:.1rem;position:relative;text-align:center;text-decoration:none;transition:background .2s,border .2s,box-shadow .2s,color .2s;vertical-align:middle;white-space:nowrap;width:1.4rem}.calendar .calendar-date .date-item.date-today{border-color:#e5e5f9;color:#5755d9}.calendar .calendar-date .date-item:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.calendar .calendar-date .date-item:focus,.calendar .calendar-date .date-item:hover{background:#fefeff;border-color:#e5e5f9;color:#5755d9;text-decoration:none}.calendar .calendar-date .date-item.active,.calendar .calendar-date .date-item:active{background:#4b48d6;border-color:#3634d2;color:#fff}.calendar .calendar-date .date-item.badge::after{position:absolute;right:3px;top:3px;transform:translate(50%,-50%)}.calendar .calendar-date .calendar-event.disabled,.calendar .calendar-date .calendar-event:disabled,.calendar .calendar-date .date-item.disabled,.calendar .calendar-date .date-item:disabled{cursor:default;opacity:.25;pointer-events:none}.calendar .calendar-date.next-month .calendar-event,.calendar .calendar-date.next-month .date-item,.calendar .calendar-date.prev-month .calendar-event,.calendar .calendar-date.prev-month .date-item{opacity:.25}.calendar .calendar-range{position:relative}.calendar .calendar-range::before{background:#f1f1fc;content:"";height:1.4rem;left:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.calendar .calendar-range.range-start::before{left:50%}.calendar .calendar-range.range-end::before{right:50%}.calendar .calendar-range.range-end .date-item,.calendar .calendar-range.range-start .date-item{background:#4b48d6;border-color:#3634d2;color:#fff}.calendar .calendar-range .date-item{color:#5755d9}.calendar.calendar-lg .calendar-body{padding:0}.calendar.calendar-lg .calendar-body .calendar-date{border-bottom:.05rem solid #dadee4;border-right:.05rem solid #dadee4;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:5.5rem;padding:0}.calendar.calendar-lg .calendar-body .calendar-date:nth-child(7n){border-right:0}.calendar.calendar-lg .calendar-body .calendar-date:nth-last-child(-n+7){border-bottom:0}.calendar.calendar-lg .date-item{align-self:flex-end;-ms-flex-item-align:end;height:1.4rem;margin-right:.2rem;margin-top:.2rem}.calendar.calendar-lg .calendar-range::before{top:19px}.calendar.calendar-lg .calendar-range.range-start::before{left:auto;width:19px}.calendar.calendar-lg .calendar-range.range-end::before{right:19px}.calendar.calendar-lg .calendar-events{flex-grow:1;-ms-flex-positive:1;line-height:1;overflow-y:auto;padding:.2rem}.calendar.calendar-lg .calendar-event{border-radius:.1rem;display:block;font-size:.7rem;margin:.1rem auto;overflow:hidden;padding:3px 4px;text-overflow:ellipsis;white-space:nowrap}.carousel .carousel-locator:nth-of-type(1):checked~.carousel-container .carousel-item:nth-of-type(1),.carousel .carousel-locator:nth-of-type(2):checked~.carousel-container .carousel-item:nth-of-type(2),.carousel .carousel-locator:nth-of-type(3):checked~.carousel-container .carousel-item:nth-of-type(3),.carousel .carousel-locator:nth-of-type(4):checked~.carousel-container .carousel-item:nth-of-type(4),.carousel .carousel-locator:nth-of-type(5):checked~.carousel-container .carousel-item:nth-of-type(5),.carousel .carousel-locator:nth-of-type(6):checked~.carousel-container .carousel-item:nth-of-type(6),.carousel .carousel-locator:nth-of-type(7):checked~.carousel-container .carousel-item:nth-of-type(7),.carousel .carousel-locator:nth-of-type(8):checked~.carousel-container .carousel-item:nth-of-type(8){animation:carousel-slidein .75s ease-in-out 1;opacity:1;z-index:100}.carousel .carousel-locator:nth-of-type(1):checked~.carousel-nav .nav-item:nth-of-type(1),.carousel .carousel-locator:nth-of-type(2):checked~.carousel-nav .nav-item:nth-of-type(2),.carousel .carousel-locator:nth-of-type(3):checked~.carousel-nav .nav-item:nth-of-type(3),.carousel .carousel-locator:nth-of-type(4):checked~.carousel-nav .nav-item:nth-of-type(4),.carousel .carousel-locator:nth-of-type(5):checked~.carousel-nav .nav-item:nth-of-type(5),.carousel .carousel-locator:nth-of-type(6):checked~.carousel-nav .nav-item:nth-of-type(6),.carousel .carousel-locator:nth-of-type(7):checked~.carousel-nav .nav-item:nth-of-type(7),.carousel .carousel-locator:nth-of-type(8):checked~.carousel-nav .nav-item:nth-of-type(8){color:#f7f8f9}.carousel{background:#f7f8f9;display:block;overflow:hidden;-webkit-overflow-scrolling:touch;position:relative;width:100%;z-index:1}.carousel .carousel-container{height:100%;left:0;position:relative}.carousel .carousel-container::before{content:"";display:block;padding-bottom:56.25%}.carousel .carousel-container .carousel-item{animation:carousel-slideout 1s ease-in-out 1;height:100%;left:0;margin:0;opacity:0;position:absolute;top:0;width:100%}.carousel .carousel-container .carousel-item:hover .item-next,.carousel .carousel-container .carousel-item:hover .item-prev{opacity:1}.carousel .carousel-container .item-next,.carousel .carousel-container .item-prev{background:rgba(247,248,249,.25);border-color:rgba(247,248,249,.5);color:#f7f8f9;opacity:0;position:absolute;top:50%;transform:translateY(-50%);transition:all .4s;z-index:100}.carousel .carousel-container .item-prev{left:1rem}.carousel .carousel-container .item-next{right:1rem}.carousel .carousel-nav{bottom:.4rem;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);width:10rem;z-index:100}.carousel .carousel-nav .nav-item{color:rgba(247,248,249,.5);display:block;-ms-flex:1 0 auto;flex:1 0 auto;height:1.6rem;margin:.2rem;max-width:2.5rem;position:relative}.carousel .carousel-nav .nav-item::before{background:currentColor;content:"";display:block;height:.1rem;position:absolute;top:.5rem;width:100%}@keyframes carousel-slidein{0%{transform:translateX(100%)}100%{transform:translateX(0)}}@keyframes carousel-slideout{0%{opacity:1;transform:translateX(0)}100%{opacity:1;transform:translateX(-50%)}}.comparison-slider{height:50vh;overflow:hidden;-webkit-overflow-scrolling:touch;position:relative;width:100%}.comparison-slider .comparison-after,.comparison-slider .comparison-before{height:100%;left:0;margin:0;overflow:hidden;position:absolute;top:0}.comparison-slider .comparison-after img,.comparison-slider .comparison-before img{height:100%;object-fit:cover;object-position:left center;position:absolute;width:100%}.comparison-slider .comparison-before{width:100%;z-index:1}.comparison-slider .comparison-before .comparison-label{right:.8rem}.comparison-slider .comparison-after{max-width:100%;min-width:0;z-index:2}.comparison-slider .comparison-after::before{background:0 0;content:"";cursor:default;height:100%;left:0;position:absolute;right:.8rem;top:0;z-index:1}.comparison-slider .comparison-after::after{background:currentColor;border-radius:50%;box-shadow:0 -5px,0 5px;color:#fff;content:"";height:3px;pointer-events:none;position:absolute;right:.4rem;top:50%;transform:translate(50%,-50%);width:3px}.comparison-slider .comparison-after .comparison-label{left:.8rem}.comparison-slider .comparison-resizer{animation:first-run 1.5s 1 ease-in-out;cursor:ew-resize;height:.8rem;left:0;max-width:100%;min-width:.8rem;opacity:0;outline:0;position:relative;resize:horizontal;top:50%;transform:translateY(-50%) scaleY(30);width:0}.comparison-slider .comparison-label{background:rgba(48,55,66,.5);bottom:.8rem;color:#fff;padding:.2rem .4rem;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@keyframes first-run{0%{width:0}25%{width:2.4rem}50%{width:.8rem}75%{width:1.2rem}100%{width:0}}.filter .filter-tag#tag-0:checked~.filter-nav .chip[for=tag-0],.filter .filter-tag#tag-1:checked~.filter-nav .chip[for=tag-1],.filter .filter-tag#tag-2:checked~.filter-nav .chip[for=tag-2],.filter .filter-tag#tag-3:checked~.filter-nav .chip[for=tag-3],.filter .filter-tag#tag-4:checked~.filter-nav .chip[for=tag-4],.filter .filter-tag#tag-5:checked~.filter-nav .chip[for=tag-5],.filter .filter-tag#tag-6:checked~.filter-nav .chip[for=tag-6],.filter .filter-tag#tag-7:checked~.filter-nav .chip[for=tag-7],.filter .filter-tag#tag-8:checked~.filter-nav .chip[for=tag-8]{background:#5755d9;color:#fff}.filter .filter-tag#tag-1:checked~.filter-body .filter-item:not([data-tag~=tag-1]),.filter .filter-tag#tag-2:checked~.filter-body .filter-item:not([data-tag~=tag-2]),.filter .filter-tag#tag-3:checked~.filter-body .filter-item:not([data-tag~=tag-3]),.filter .filter-tag#tag-4:checked~.filter-body .filter-item:not([data-tag~=tag-4]),.filter .filter-tag#tag-5:checked~.filter-body .filter-item:not([data-tag~=tag-5]),.filter .filter-tag#tag-6:checked~.filter-body .filter-item:not([data-tag~=tag-6]),.filter .filter-tag#tag-7:checked~.filter-body .filter-item:not([data-tag~=tag-7]),.filter .filter-tag#tag-8:checked~.filter-body .filter-item:not([data-tag~=tag-8]){display:none}.filter .filter-nav{margin:.4rem 0}.filter .filter-body{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.meter{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#f7f8f9;border:0;border-radius:.1rem;display:block;height:.8rem;width:100%}.meter::-webkit-meter-inner-element{display:block}.meter::-webkit-meter-bar,.meter::-webkit-meter-even-less-good-value,.meter::-webkit-meter-optimum-value,.meter::-webkit-meter-suboptimum-value{border-radius:.1rem}.meter::-webkit-meter-bar{background:#f7f8f9}.meter::-webkit-meter-optimum-value{background:#32b643}.meter::-webkit-meter-suboptimum-value{background:#ffb700}.meter::-webkit-meter-even-less-good-value{background:#e85600}.meter:-moz-meter-optimum,.meter:-moz-meter-sub-optimum,.meter:-moz-meter-sub-sub-optimum,.meter::-moz-meter-bar{border-radius:.1rem}.meter:-moz-meter-optimum::-moz-meter-bar{background:#32b643}.meter:-moz-meter-sub-optimum::-moz-meter-bar{background:#ffb700}.meter:-moz-meter-sub-sub-optimum::-moz-meter-bar{background:#e85600}.off-canvas{display:-ms-flexbox;display:flex;-ms-flex-flow:nowrap;flex-flow:nowrap;height:100%;position:relative;width:100%}.off-canvas .off-canvas-toggle{display:block;left:.4rem;position:absolute;top:.4rem;transition:none;z-index:1}.off-canvas .off-canvas-sidebar{background:#f7f8f9;bottom:0;left:0;min-width:10rem;overflow-y:auto;position:fixed;top:0;transform:translateX(-100%);transition:transform .25s;z-index:200}.off-canvas .off-canvas-content{-ms-flex:1 1 auto;flex:1 1 auto;height:100%;padding:.4rem .4rem .4rem 4rem}.off-canvas .off-canvas-overlay{background:rgba(48,55,66,.1);border-color:transparent;border-radius:0;bottom:0;display:none;height:100%;left:0;position:fixed;right:0;top:0;width:100%}.off-canvas .off-canvas-sidebar.active,.off-canvas .off-canvas-sidebar:target{transform:translateX(0)}.off-canvas .off-canvas-sidebar.active~.off-canvas-overlay,.off-canvas .off-canvas-sidebar:target~.off-canvas-overlay{display:block;z-index:100}@media (min-width:960px){.off-canvas.off-canvas-sidebar-show .off-canvas-toggle{display:none}.off-canvas.off-canvas-sidebar-show .off-canvas-sidebar{-ms-flex:0 0 auto;flex:0 0 auto;position:relative;transform:none}.off-canvas.off-canvas-sidebar-show .off-canvas-overlay{display:none!important}}.parallax{display:block;height:auto;position:relative;width:auto}.parallax .parallax-content{box-shadow:0 1rem 2.1rem rgba(48,55,66,.3);height:auto;transform:perspective(1000px);transform-style:preserve-3d;transition:all .4s ease;width:100%}.parallax .parallax-content::before{content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%}.parallax .parallax-front{align-items:center;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-pack:center;height:100%;justify-content:center;left:0;position:absolute;text-align:center;text-shadow:0 0 20px rgba(48,55,66,.75);top:0;transform:translateZ(50px) scale(.95);transition:transform .4s;width:100%;z-index:1}.parallax .parallax-top-left{height:50%;left:0;outline:0;position:absolute;top:0;width:50%;z-index:100}.parallax .parallax-top-left:focus~.parallax-content,.parallax .parallax-top-left:hover~.parallax-content{transform:perspective(1000px) rotateX(3deg) rotateY(-3deg)}.parallax .parallax-top-left:focus~.parallax-content::before,.parallax .parallax-top-left:hover~.parallax-content::before{background:linear-gradient(135deg,rgba(255,255,255,.35) 0,transparent 50%)}.parallax .parallax-top-left:focus~.parallax-content .parallax-front,.parallax .parallax-top-left:hover~.parallax-content .parallax-front{transform:translate3d(4.5px,4.5px,50px) scale(.95)}.parallax .parallax-top-right{height:50%;outline:0;position:absolute;right:0;top:0;width:50%;z-index:100}.parallax .parallax-top-right:focus~.parallax-content,.parallax .parallax-top-right:hover~.parallax-content{transform:perspective(1000px) rotateX(3deg) rotateY(3deg)}.parallax .parallax-top-right:focus~.parallax-content::before,.parallax .parallax-top-right:hover~.parallax-content::before{background:linear-gradient(-135deg,rgba(255,255,255,.35) 0,transparent 50%)}.parallax .parallax-top-right:focus~.parallax-content .parallax-front,.parallax .parallax-top-right:hover~.parallax-content .parallax-front{transform:translate3d(-4.5px,4.5px,50px) scale(.95)}.parallax .parallax-bottom-left{bottom:0;height:50%;left:0;outline:0;position:absolute;width:50%;z-index:100}.parallax .parallax-bottom-left:focus~.parallax-content,.parallax .parallax-bottom-left:hover~.parallax-content{transform:perspective(1000px) rotateX(-3deg) rotateY(-3deg)}.parallax .parallax-bottom-left:focus~.parallax-content::before,.parallax .parallax-bottom-left:hover~.parallax-content::before{background:linear-gradient(45deg,rgba(255,255,255,.35) 0,transparent 50%)}.parallax .parallax-bottom-left:focus~.parallax-content .parallax-front,.parallax .parallax-bottom-left:hover~.parallax-content .parallax-front{transform:translate3d(4.5px,-4.5px,50px) scale(.95)}.parallax .parallax-bottom-right{bottom:0;height:50%;outline:0;position:absolute;right:0;width:50%;z-index:100}.parallax .parallax-bottom-right:focus~.parallax-content,.parallax .parallax-bottom-right:hover~.parallax-content{transform:perspective(1000px) rotateX(-3deg) rotateY(3deg)}.parallax .parallax-bottom-right:focus~.parallax-content::before,.parallax .parallax-bottom-right:hover~.parallax-content::before{background:linear-gradient(-45deg,rgba(255,255,255,.35) 0,transparent 50%)}.parallax .parallax-bottom-right:focus~.parallax-content .parallax-front,.parallax .parallax-bottom-right:hover~.parallax-content .parallax-front{transform:translate3d(-4.5px,-4.5px,50px) scale(.95)}.progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#eef0f3;border:0;border-radius:.1rem;color:#5755d9;height:.2rem;position:relative;width:100%}.progress::-webkit-progress-bar{background:0 0;border-radius:.1rem}.progress::-webkit-progress-value{background:#5755d9;border-radius:.1rem}.progress::-moz-progress-bar{background:#5755d9;border-radius:.1rem}.progress:indeterminate{animation:progress-indeterminate 1.5s linear infinite;background:#eef0f3 linear-gradient(to right,#5755d9 30%,#eef0f3 30%) top left/150% 150% no-repeat}.progress:indeterminate::-moz-progress-bar{background:0 0}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;display:block;height:1.2rem;width:100%}.slider:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2);outline:0}.slider.tooltip:not([data-tooltip])::after{content:attr(value)}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:#5755d9;border:0;border-radius:50%;height:.6rem;margin-top:-.25rem;-webkit-transition:transform .2s;transition:transform .2s;width:.6rem}.slider::-moz-range-thumb{background:#5755d9;border:0;border-radius:50%;height:.6rem;-moz-transition:transform .2s;transition:transform .2s;width:.6rem}.slider::-ms-thumb{background:#5755d9;border:0;border-radius:50%;height:.6rem;-ms-transition:transform .2s;transition:transform .2s;width:.6rem}.slider:active::-webkit-slider-thumb{transform:scale(1.25)}.slider:active::-moz-range-thumb{transform:scale(1.25)}.slider:active::-ms-thumb{transform:scale(1.25)}.slider.disabled::-webkit-slider-thumb,.slider:disabled::-webkit-slider-thumb{background:#f7f8f9;transform:scale(1)}.slider.disabled::-moz-range-thumb,.slider:disabled::-moz-range-thumb{background:#f7f8f9;transform:scale(1)}.slider.disabled::-ms-thumb,.slider:disabled::-ms-thumb{background:#f7f8f9;transform:scale(1)}.slider::-webkit-slider-runnable-track{background:#eef0f3;border-radius:.1rem;height:.1rem;width:100%}.slider::-moz-range-track{background:#eef0f3;border-radius:.1rem;height:.1rem;width:100%}.slider::-ms-track{background:#eef0f3;border-radius:.1rem;height:.1rem;width:100%}.slider::-ms-fill-lower{background:#5755d9}.timeline .timeline-item{display:-ms-flexbox;display:flex;margin-bottom:1.2rem;position:relative}.timeline .timeline-item::before{background:#dadee4;content:"";height:100%;left:11px;position:absolute;top:1.2rem;width:2px}.timeline .timeline-item .timeline-left{-ms-flex:0 0 auto;flex:0 0 auto}.timeline .timeline-item .timeline-content{-ms-flex:1 1 auto;flex:1 1 auto;padding:2px 0 2px .8rem}.timeline .timeline-item .timeline-icon{align-items:center;border-radius:50%;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-pack:center;height:1.2rem;justify-content:center;text-align:center;width:1.2rem}.timeline .timeline-item .timeline-icon::before{border:.1rem solid #5755d9;border-radius:50%;content:"";display:block;height:.4rem;left:.4rem;position:absolute;top:.4rem;width:.4rem}.timeline .timeline-item .timeline-icon.icon-lg{background:#5755d9;line-height:1.2rem}.timeline .timeline-item .timeline-icon.icon-lg::before{content:none}.viewer-360{align-items:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-direction:column;flex-direction:column}.viewer-360 .viewer-slider[max="36"][value="1"]+.viewer-image{background-position-y:0}.viewer-360 .viewer-slider[max="36"][value="2"]+.viewer-image{background-position-y:2.8571428571%}.viewer-360 .viewer-slider[max="36"][value="3"]+.viewer-image{background-position-y:5.7142857143%}.viewer-360 .viewer-slider[max="36"][value="4"]+.viewer-image{background-position-y:8.5714285714%}.viewer-360 .viewer-slider[max="36"][value="5"]+.viewer-image{background-position-y:11.4285714286%}.viewer-360 .viewer-slider[max="36"][value="6"]+.viewer-image{background-position-y:14.2857142857%}.viewer-360 .viewer-slider[max="36"][value="7"]+.viewer-image{background-position-y:17.1428571429%}.viewer-360 .viewer-slider[max="36"][value="8"]+.viewer-image{background-position-y:20%}.viewer-360 .viewer-slider[max="36"][value="9"]+.viewer-image{background-position-y:22.8571428571%}.viewer-360 .viewer-slider[max="36"][value="10"]+.viewer-image{background-position-y:25.7142857143%}.viewer-360 .viewer-slider[max="36"][value="11"]+.viewer-image{background-position-y:28.5714285714%}.viewer-360 .viewer-slider[max="36"][value="12"]+.viewer-image{background-position-y:31.4285714286%}.viewer-360 .viewer-slider[max="36"][value="13"]+.viewer-image{background-position-y:34.2857142857%}.viewer-360 .viewer-slider[max="36"][value="14"]+.viewer-image{background-position-y:37.1428571429%}.viewer-360 .viewer-slider[max="36"][value="15"]+.viewer-image{background-position-y:40%}.viewer-360 .viewer-slider[max="36"][value="16"]+.viewer-image{background-position-y:42.8571428571%}.viewer-360 .viewer-slider[max="36"][value="17"]+.viewer-image{background-position-y:45.7142857143%}.viewer-360 .viewer-slider[max="36"][value="18"]+.viewer-image{background-position-y:48.5714285714%}.viewer-360 .viewer-slider[max="36"][value="19"]+.viewer-image{background-position-y:51.4285714286%}.viewer-360 .viewer-slider[max="36"][value="20"]+.viewer-image{background-position-y:54.2857142857%}.viewer-360 .viewer-slider[max="36"][value="21"]+.viewer-image{background-position-y:57.1428571429%}.viewer-360 .viewer-slider[max="36"][value="22"]+.viewer-image{background-position-y:60%}.viewer-360 .viewer-slider[max="36"][value="23"]+.viewer-image{background-position-y:62.8571428571%}.viewer-360 .viewer-slider[max="36"][value="24"]+.viewer-image{background-position-y:65.7142857143%}.viewer-360 .viewer-slider[max="36"][value="25"]+.viewer-image{background-position-y:68.5714285714%}.viewer-360 .viewer-slider[max="36"][value="26"]+.viewer-image{background-position-y:71.4285714286%}.viewer-360 .viewer-slider[max="36"][value="27"]+.viewer-image{background-position-y:74.2857142857%}.viewer-360 .viewer-slider[max="36"][value="28"]+.viewer-image{background-position-y:77.1428571429%}.viewer-360 .viewer-slider[max="36"][value="29"]+.viewer-image{background-position-y:80%}.viewer-360 .viewer-slider[max="36"][value="30"]+.viewer-image{background-position-y:82.8571428571%}.viewer-360 .viewer-slider[max="36"][value="31"]+.viewer-image{background-position-y:85.7142857143%}.viewer-360 .viewer-slider[max="36"][value="32"]+.viewer-image{background-position-y:88.5714285714%}.viewer-360 .viewer-slider[max="36"][value="33"]+.viewer-image{background-position-y:91.4285714286%}.viewer-360 .viewer-slider[max="36"][value="34"]+.viewer-image{background-position-y:94.2857142857%}.viewer-360 .viewer-slider[max="36"][value="35"]+.viewer-image{background-position-y:97.1428571429%}.viewer-360 .viewer-slider[max="36"][value="36"]+.viewer-image{background-position-y:100%}.viewer-360 .viewer-slider{cursor:ew-resize;-ms-flex-order:2;margin:1rem;order:2;width:60%}.viewer-360 .viewer-image{background-position-y:0;background-repeat:no-repeat;background-size:100%;-ms-flex-order:1;max-width:100%;order:1} \ No newline at end of file diff --git a/templates/assets/css/spectre-icons.min.css b/templates/assets/css/spectre-icons.min.css new file mode 100644 index 0000000..0276f7b --- /dev/null +++ b/templates/assets/css/spectre-icons.min.css @@ -0,0 +1 @@ +/*! Spectre.css Icons v0.5.9 | MIT License | github.com/picturepan2/spectre */.icon{box-sizing:border-box;display:inline-block;font-size:inherit;font-style:normal;height:1em;position:relative;text-indent:-9999px;vertical-align:middle;width:1em}.icon::after,.icon::before{content:"";display:block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.icon.icon-2x{font-size:1.6rem}.icon.icon-3x{font-size:2.4rem}.icon.icon-4x{font-size:3.2rem}.accordion .icon,.btn .icon,.menu .icon,.toast .icon{vertical-align:-10%}.btn-lg .icon{vertical-align:-15%}.icon-arrow-down::before,.icon-arrow-left::before,.icon-arrow-right::before,.icon-arrow-up::before,.icon-back::before,.icon-downward::before,.icon-forward::before,.icon-upward::before{border:.1rem solid currentColor;border-bottom:0;border-right:0;height:.65em;width:.65em}.icon-arrow-down::before{transform:translate(-50%,-75%) rotate(225deg)}.icon-arrow-left::before{transform:translate(-25%,-50%) rotate(-45deg)}.icon-arrow-right::before{transform:translate(-75%,-50%) rotate(135deg)}.icon-arrow-up::before{transform:translate(-50%,-25%) rotate(45deg)}.icon-back::after,.icon-forward::after{background:currentColor;height:.1rem;width:.8em}.icon-downward::after,.icon-upward::after{background:currentColor;height:.8em;width:.1rem}.icon-back::after{left:55%}.icon-back::before{transform:translate(-50%,-50%) rotate(-45deg)}.icon-downward::after{top:45%}.icon-downward::before{transform:translate(-50%,-50%) rotate(-135deg)}.icon-forward::after{left:45%}.icon-forward::before{transform:translate(-50%,-50%) rotate(135deg)}.icon-upward::after{top:55%}.icon-upward::before{transform:translate(-50%,-50%) rotate(45deg)}.icon-caret::before{border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid currentColor;height:0;transform:translate(-50%,-25%);width:0}.icon-menu::before{background:currentColor;box-shadow:0 -.35em,0 .35em;height:.1rem;width:100%}.icon-apps::before{background:currentColor;box-shadow:-.35em -.35em,-.35em 0,-.35em .35em,0 -.35em,0 .35em,.35em -.35em,.35em 0,.35em .35em;height:3px;width:3px}.icon-resize-horiz::after,.icon-resize-horiz::before,.icon-resize-vert::after,.icon-resize-vert::before{border:.1rem solid currentColor;border-bottom:0;border-right:0;height:.45em;width:.45em}.icon-resize-horiz::before,.icon-resize-vert::before{transform:translate(-50%,-90%) rotate(45deg)}.icon-resize-horiz::after,.icon-resize-vert::after{transform:translate(-50%,-10%) rotate(225deg)}.icon-resize-horiz::before{transform:translate(-90%,-50%) rotate(-45deg)}.icon-resize-horiz::after{transform:translate(-10%,-50%) rotate(135deg)}.icon-more-horiz::before,.icon-more-vert::before{background:currentColor;border-radius:50%;box-shadow:-.4em 0,.4em 0;height:3px;width:3px}.icon-more-vert::before{box-shadow:0 -.4em,0 .4em}.icon-cross::before,.icon-minus::before,.icon-plus::before{background:currentColor;height:.1rem;width:100%}.icon-cross::after,.icon-plus::after{background:currentColor;height:100%;width:.1rem}.icon-cross::before{width:100%}.icon-cross::after{height:100%}.icon-cross::after,.icon-cross::before{transform:translate(-50%,-50%) rotate(45deg)}.icon-check::before{border:.1rem solid currentColor;border-right:0;border-top:0;height:.5em;transform:translate(-50%,-75%) rotate(-45deg);width:.9em}.icon-stop{border:.1rem solid currentColor;border-radius:50%}.icon-stop::before{background:currentColor;height:.1rem;transform:translate(-50%,-50%) rotate(45deg);width:1em}.icon-shutdown{border:.1rem solid currentColor;border-radius:50%;border-top-color:transparent}.icon-shutdown::before{background:currentColor;content:"";height:.5em;top:.1em;width:.1rem}.icon-refresh::before{border:.1rem solid currentColor;border-radius:50%;border-right-color:transparent;height:1em;width:1em}.icon-refresh::after{border:.2em solid currentColor;border-left-color:transparent;border-top-color:transparent;height:0;left:80%;top:20%;width:0}.icon-search::before{border:.1rem solid currentColor;border-radius:50%;height:.75em;left:5%;top:5%;transform:translate(0,0) rotate(45deg);width:.75em}.icon-search::after{background:currentColor;height:.1rem;left:80%;top:80%;transform:translate(-50%,-50%) rotate(45deg);width:.4em}.icon-edit::before{border:.1rem solid currentColor;height:.4em;transform:translate(-40%,-60%) rotate(-45deg);width:.85em}.icon-edit::after{border:.15em solid currentColor;border-right-color:transparent;border-top-color:transparent;height:0;left:5%;top:95%;transform:translate(0,-100%);width:0}.icon-delete::before{border:.1rem solid currentColor;border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top:0;height:.75em;top:60%;width:.75em}.icon-delete::after{background:currentColor;box-shadow:-.25em .2em,.25em .2em;height:.1rem;top:.05rem;width:.5em}.icon-share{border:.1rem solid currentColor;border-radius:.1rem;border-right:0;border-top:0}.icon-share::before{border:.1rem solid currentColor;border-left:0;border-top:0;height:.4em;left:100%;top:.25em;transform:translate(-125%,-50%) rotate(-45deg);width:.4em}.icon-share::after{border:.1rem solid currentColor;border-bottom:0;border-radius:75% 0;border-right:0;height:.5em;width:.6em}.icon-flag::before{background:currentColor;height:1em;left:15%;width:.1rem}.icon-flag::after{border:.1rem solid currentColor;border-bottom-right-radius:.1rem;border-left:0;border-top-right-radius:.1rem;height:.65em;left:60%;top:35%;width:.8em}.icon-bookmark::before{border:.1rem solid currentColor;border-bottom:0;border-top-left-radius:.1rem;border-top-right-radius:.1rem;height:.9em;width:.8em}.icon-bookmark::after{border:.1rem solid currentColor;border-bottom:0;border-left:0;border-radius:.1rem;height:.5em;transform:translate(-50%,35%) rotate(-45deg) skew(15deg,15deg);width:.5em}.icon-download,.icon-upload{border-bottom:.1rem solid currentColor}.icon-download::before,.icon-upload::before{border:.1rem solid currentColor;border-bottom:0;border-right:0;height:.5em;transform:translate(-50%,-60%) rotate(-135deg);width:.5em}.icon-download::after,.icon-upload::after{background:currentColor;height:.6em;top:40%;width:.1rem}.icon-upload::before{transform:translate(-50%,-60%) rotate(45deg)}.icon-upload::after{top:50%}.icon-copy::before{border:.1rem solid currentColor;border-bottom:0;border-radius:.1rem;border-right:0;height:.8em;left:40%;top:35%;width:.8em}.icon-copy::after{border:.1rem solid currentColor;border-radius:.1rem;height:.8em;left:60%;top:60%;width:.8em}.icon-time{border:.1rem solid currentColor;border-radius:50%}.icon-time::before{background:currentColor;height:.4em;transform:translate(-50%,-75%);width:.1rem}.icon-time::after{background:currentColor;height:.3em;transform:translate(-50%,-75%) rotate(90deg);transform-origin:50% 90%;width:.1rem}.icon-mail::before{border:.1rem solid currentColor;border-radius:.1rem;height:.8em;width:1em}.icon-mail::after{border:.1rem solid currentColor;border-right:0;border-top:0;height:.5em;transform:translate(-50%,-90%) rotate(-45deg) skew(10deg,10deg);width:.5em}.icon-people::before{border:.1rem solid currentColor;border-radius:50%;height:.45em;top:25%;width:.45em}.icon-people::after{border:.1rem solid currentColor;border-radius:50% 50% 0 0;height:.4em;top:75%;width:.9em}.icon-message{border:.1rem solid currentColor;border-bottom:0;border-radius:.1rem;border-right:0}.icon-message::before{border:.1rem solid currentColor;border-bottom-right-radius:.1rem;border-left:0;border-top:0;height:.8em;left:65%;top:40%;width:.7em}.icon-message::after{background:currentColor;border-radius:.1rem;height:.3em;left:10%;top:100%;transform:translate(0,-90%) rotate(45deg);width:.1rem}.icon-photo{border:.1rem solid currentColor;border-radius:.1rem}.icon-photo::before{border:.1rem solid currentColor;border-radius:50%;height:.25em;left:35%;top:35%;width:.25em}.icon-photo::after{border:.1rem solid currentColor;border-bottom:0;border-left:0;height:.5em;left:60%;transform:translate(-50%,25%) rotate(-45deg);width:.5em}.icon-link::after,.icon-link::before{border:.1rem solid currentColor;border-radius:5em 0 0 5em;border-right:0;height:.5em;width:.75em}.icon-link::before{transform:translate(-70%,-45%) rotate(-45deg)}.icon-link::after{transform:translate(-30%,-55%) rotate(135deg)}.icon-location::before{border:.1rem solid currentColor;border-radius:50% 50% 50% 0;height:.8em;transform:translate(-50%,-60%) rotate(-45deg);width:.8em}.icon-location::after{border:.1rem solid currentColor;border-radius:50%;height:.2em;transform:translate(-50%,-80%);width:.2em}.icon-emoji{border:.1rem solid currentColor;border-radius:50%}.icon-emoji::before{border-radius:50%;box-shadow:-.17em -.1em,.17em -.1em;height:.15em;width:.15em}.icon-emoji::after{border:.1rem solid currentColor;border-bottom-color:transparent;border-radius:50%;border-right-color:transparent;height:.5em;transform:translate(-50%,-40%) rotate(-135deg);width:.5em} \ No newline at end of file diff --git a/templates/assets/css/spectre.min.css b/templates/assets/css/spectre.min.css new file mode 100644 index 0000000..0fe23d9 --- /dev/null +++ b/templates/assets/css/spectre.min.css @@ -0,0 +1 @@ +/*! Spectre.css v0.5.9 | MIT License | github.com/picturepan2/spectre */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}address{font-style:normal}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:"SF Mono","Segoe UI Mono","Roboto Mono",Menlo,Courier,monospace;font-size:1em}dfn{font-style:italic}small{font-size:80%;font-weight:400}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}fieldset{border:0;margin:0;padding:0}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item;outline:0}canvas{display:inline-block}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:inherit}html{box-sizing:border-box;font-size:20px;line-height:1.5;-webkit-tap-highlight-color:transparent}body{background:#fff;color:#3b4351;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;font-size:.8rem;overflow-x:hidden;text-rendering:optimizeLegibility}a{color:#5755d9;outline:0;text-decoration:none}a:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}a.active,a:active,a:focus,a:hover{color:#302ecd;text-decoration:underline}a:visited{color:#807fe2}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:500;line-height:1.2;margin-bottom:.5em;margin-top:0}.h1,.h2,.h3,.h4,.h5,.h6{font-weight:500}.h1,h1{font-size:2rem}.h2,h2{font-size:1.6rem}.h3,h3{font-size:1.4rem}.h4,h4{font-size:1.2rem}.h5,h5{font-size:1rem}.h6,h6{font-size:.8rem}p{margin:0 0 1.2rem}a,ins,u{-webkit-text-decoration-skip:ink edges;text-decoration-skip:ink edges}abbr[title]{border-bottom:.05rem dotted;cursor:help;text-decoration:none}kbd{background:#303742;border-radius:.1rem;color:#fff;font-size:.7rem;line-height:1.25;padding:.1rem .2rem}mark{background:#ffe9b3;border-bottom:.05rem solid #ffd367;border-radius:.1rem;color:#3b4351;padding:.05rem .1rem 0}blockquote{border-left:.1rem solid #dadee4;margin-left:0;padding:.4rem .8rem}blockquote p:last-child{margin-bottom:0}ol,ul{margin:.8rem 0 .8rem .8rem;padding:0}ol ol,ol ul,ul ol,ul ul{margin:.8rem 0 .8rem .8rem}ol li,ul li{margin-top:.4rem}ul{list-style:disc inside}ul ul{list-style-type:circle}ol{list-style:decimal inside}ol ol{list-style-type:lower-alpha}dl dt{font-weight:700}dl dd{margin:.4rem 0 .8rem 0}.lang-zh,.lang-zh-hans,html:lang(zh),html:lang(zh-Hans){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",sans-serif}.lang-zh-hant,html:lang(zh-Hant){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang TC","Hiragino Sans CNS","Microsoft JhengHei","Helvetica Neue",sans-serif}.lang-ja,html:lang(ja){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Hiragino Sans","Hiragino Kaku Gothic Pro","Yu Gothic",YuGothic,Meiryo,"Helvetica Neue",sans-serif}.lang-ko,html:lang(ko){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Malgun Gothic","Helvetica Neue",sans-serif}.lang-cjk ins,.lang-cjk u,:lang(ja) ins,:lang(ja) u,:lang(zh) ins,:lang(zh) u{border-bottom:.05rem solid;text-decoration:none}.lang-cjk del+del,.lang-cjk del+s,.lang-cjk ins+ins,.lang-cjk ins+u,.lang-cjk s+del,.lang-cjk s+s,.lang-cjk u+ins,.lang-cjk u+u,:lang(ja) del+del,:lang(ja) del+s,:lang(ja) ins+ins,:lang(ja) ins+u,:lang(ja) s+del,:lang(ja) s+s,:lang(ja) u+ins,:lang(ja) u+u,:lang(zh) del+del,:lang(zh) del+s,:lang(zh) ins+ins,:lang(zh) ins+u,:lang(zh) s+del,:lang(zh) s+s,:lang(zh) u+ins,:lang(zh) u+u{margin-left:.125em}.table{border-collapse:collapse;border-spacing:0;text-align:left;width:100%}.table.table-striped tbody tr:nth-of-type(odd){background:#f7f8f9}.table tbody tr.active,.table.table-striped tbody tr.active{background:#eef0f3}.table.table-hover tbody tr:hover{background:#eef0f3}.table.table-scroll{display:block;overflow-x:auto;padding-bottom:.75rem;white-space:nowrap}.table td,.table th{border-bottom:.05rem solid #dadee4;padding:.6rem .4rem}.table th{border-bottom-width:.1rem}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:.05rem solid #5755d9;border-radius:.1rem;color:#5755d9;cursor:pointer;display:inline-block;font-size:.8rem;height:1.8rem;line-height:1.2rem;outline:0;padding:.25rem .4rem;text-align:center;text-decoration:none;transition:background .2s,border .2s,box-shadow .2s,color .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.btn:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.btn:focus,.btn:hover{background:#f1f1fc;border-color:#4b48d6;text-decoration:none}.btn.active,.btn:active{background:#4b48d6;border-color:#3634d2;color:#fff;text-decoration:none}.btn.active.loading::after,.btn:active.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.disabled,.btn:disabled,.btn[disabled]{cursor:default;opacity:.5;pointer-events:none}.btn.btn-primary{background:#5755d9;border-color:#4b48d6;color:#fff}.btn.btn-primary:focus,.btn.btn-primary:hover{background:#4240d4;border-color:#3634d2;color:#fff}.btn.btn-primary.active,.btn.btn-primary:active{background:#3a38d2;border-color:#302ecd;color:#fff}.btn.btn-primary.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-success{background:#32b643;border-color:#2faa3f;color:#fff}.btn.btn-success:focus{box-shadow:0 0 0 .1rem rgba(50,182,67,.2)}.btn.btn-success:focus,.btn.btn-success:hover{background:#30ae40;border-color:#2da23c;color:#fff}.btn.btn-success.active,.btn.btn-success:active{background:#2a9a39;border-color:#278e34;color:#fff}.btn.btn-success.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-error{background:#e85600;border-color:#d95000;color:#fff}.btn.btn-error:focus{box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.btn.btn-error:focus,.btn.btn-error:hover{background:#de5200;border-color:#cf4d00;color:#fff}.btn.btn-error.active,.btn.btn-error:active{background:#c44900;border-color:#b54300;color:#fff}.btn.btn-error.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-link{background:0 0;border-color:transparent;color:#5755d9}.btn.btn-link.active,.btn.btn-link:active,.btn.btn-link:focus,.btn.btn-link:hover{color:#302ecd}.btn.btn-sm{font-size:.7rem;height:1.4rem;padding:.05rem .3rem}.btn.btn-lg{font-size:.9rem;height:2rem;padding:.35rem .6rem}.btn.btn-block{display:block;width:100%}.btn.btn-action{padding-left:0;padding-right:0;width:1.8rem}.btn.btn-action.btn-sm{width:1.4rem}.btn.btn-action.btn-lg{width:2rem}.btn.btn-clear{background:0 0;border:0;color:currentColor;height:1rem;line-height:.8rem;margin-left:.2rem;margin-right:-2px;opacity:1;padding:.1rem;text-decoration:none;width:1rem}.btn.btn-clear:focus,.btn.btn-clear:hover{background:rgba(247,248,249,.5);opacity:.95}.btn.btn-clear::before{content:"\2715"}.btn-group{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.btn-group .btn{-ms-flex:1 0 auto;flex:1 0 auto}.btn-group .btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .btn:not(:first-child):not(:last-child){border-radius:0;margin-left:-.05rem}.btn-group .btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.05rem}.btn-group .btn.active,.btn-group .btn:active,.btn-group .btn:focus,.btn-group .btn:hover{z-index:1}.btn-group.btn-group-block{display:-ms-flexbox;display:flex}.btn-group.btn-group-block .btn{-ms-flex:1 0 0;flex:1 0 0}.form-group:not(:last-child){margin-bottom:.4rem}fieldset{margin-bottom:.8rem}legend{font-size:.9rem;font-weight:500;margin-bottom:.8rem}.form-label{display:block;line-height:1.2rem;padding:.3rem 0}.form-label.label-sm{font-size:.7rem;padding:.1rem 0}.form-label.label-lg{font-size:.9rem;padding:.4rem 0}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;background-image:none;border:.05rem solid #bcc3ce;border-radius:.1rem;color:#3b4351;display:block;font-size:.8rem;height:1.8rem;line-height:1.2rem;max-width:100%;outline:0;padding:.25rem .4rem;position:relative;transition:background .2s,border .2s,box-shadow .2s,color .2s;width:100%}.form-input:focus{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-input:-ms-input-placeholder{color:#bcc3ce}.form-input::-ms-input-placeholder{color:#bcc3ce}.form-input::placeholder{color:#bcc3ce}.form-input.input-sm{font-size:.7rem;height:1.4rem;padding:.05rem .3rem}.form-input.input-lg{font-size:.9rem;height:2rem;padding:.35rem .6rem}.form-input.input-inline{display:inline-block;vertical-align:middle;width:auto}.form-input[type=file]{height:auto}textarea.form-input,textarea.form-input.input-lg,textarea.form-input.input-sm{height:auto}.form-input-hint{color:#bcc3ce;font-size:.7rem;margin-top:.2rem}.has-success .form-input-hint,.is-success+.form-input-hint{color:#32b643}.has-error .form-input-hint,.is-error+.form-input-hint{color:#e85600}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:.05rem solid #bcc3ce;border-radius:.1rem;color:inherit;font-size:.8rem;height:1.8rem;line-height:1.2rem;outline:0;padding:.25rem .4rem;vertical-align:middle;width:100%}.form-select:focus{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-select::-ms-expand{display:none}.form-select.select-sm{font-size:.7rem;height:1.4rem;padding:.05rem 1.1rem .05rem .3rem}.form-select.select-lg{font-size:.9rem;height:2rem;padding:.35rem 1.4rem .35rem .6rem}.form-select[multiple],.form-select[size]{height:auto;padding:.25rem .4rem}.form-select[multiple] option,.form-select[size] option{padding:.1rem .2rem}.form-select:not([multiple]):not([size]){background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%205'%3E%3Cpath%20fill='%23667189'%20d='M2%200L0%202h4zm0%205L0%203h4z'/%3E%3C/svg%3E") no-repeat right .35rem center/.4rem .5rem;padding-right:1.2rem}.has-icon-left,.has-icon-right{position:relative}.has-icon-left .form-icon,.has-icon-right .form-icon{height:.8rem;margin:0 .25rem;position:absolute;top:50%;transform:translateY(-50%);width:.8rem;z-index:2}.has-icon-left .form-icon{left:.05rem}.has-icon-left .form-input{padding-left:1.3rem}.has-icon-right .form-icon{right:.05rem}.has-icon-right .form-input{padding-right:1.3rem}.form-checkbox,.form-radio,.form-switch{display:block;line-height:1.2rem;margin:.2rem 0;min-height:1.4rem;padding:.1rem .4rem .1rem 1.2rem;position:relative}.form-checkbox input,.form-radio input,.form-switch input{clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.form-checkbox input:focus+.form-icon,.form-radio input:focus+.form-icon,.form-switch input:focus+.form-icon{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-checkbox input:checked+.form-icon,.form-radio input:checked+.form-icon,.form-switch input:checked+.form-icon{background:#5755d9;border-color:#5755d9}.form-checkbox .form-icon,.form-radio .form-icon,.form-switch .form-icon{border:.05rem solid #bcc3ce;cursor:pointer;display:inline-block;position:absolute;transition:background .2s,border .2s,box-shadow .2s,color .2s}.form-checkbox.input-sm,.form-radio.input-sm,.form-switch.input-sm{font-size:.7rem;margin:0}.form-checkbox.input-lg,.form-radio.input-lg,.form-switch.input-lg{font-size:.9rem;margin:.3rem 0}.form-checkbox .form-icon,.form-radio .form-icon{background:#fff;height:.8rem;left:0;top:.3rem;width:.8rem}.form-checkbox input:active+.form-icon,.form-radio input:active+.form-icon{background:#eef0f3}.form-checkbox .form-icon{border-radius:.1rem}.form-checkbox input:checked+.form-icon::before{background-clip:padding-box;border:.1rem solid #fff;border-left-width:0;border-top-width:0;content:"";height:9px;left:50%;margin-left:-3px;margin-top:-6px;position:absolute;top:50%;transform:rotate(45deg);width:6px}.form-checkbox input:indeterminate+.form-icon{background:#5755d9;border-color:#5755d9}.form-checkbox input:indeterminate+.form-icon::before{background:#fff;content:"";height:2px;left:50%;margin-left:-5px;margin-top:-1px;position:absolute;top:50%;width:10px}.form-radio .form-icon{border-radius:50%}.form-radio input:checked+.form-icon::before{background:#fff;border-radius:50%;content:"";height:6px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:6px}.form-switch{padding-left:2rem}.form-switch .form-icon{background:#bcc3ce;background-clip:padding-box;border-radius:.45rem;height:.9rem;left:0;top:.25rem;width:1.6rem}.form-switch .form-icon::before{background:#fff;border-radius:50%;content:"";display:block;height:.8rem;left:0;position:absolute;top:0;transition:background .2s,border .2s,box-shadow .2s,color .2s,left .2s;width:.8rem}.form-switch input:checked+.form-icon::before{left:14px}.form-switch input:active+.form-icon::before{background:#f7f8f9}.input-group{display:-ms-flexbox;display:flex}.input-group .input-group-addon{background:#f7f8f9;border:.05rem solid #bcc3ce;border-radius:.1rem;line-height:1.2rem;padding:.25rem .4rem;white-space:nowrap}.input-group .input-group-addon.addon-sm{font-size:.7rem;padding:.05rem .3rem}.input-group .input-group-addon.addon-lg{font-size:.9rem;padding:.35rem .6rem}.input-group .form-input,.input-group .form-select{-ms-flex:1 1 auto;flex:1 1 auto;width:1%}.input-group .input-group-btn{z-index:1}.input-group .form-input:first-child:not(:last-child),.input-group .form-select:first-child:not(:last-child),.input-group .input-group-addon:first-child:not(:last-child),.input-group .input-group-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.input-group .form-input:not(:first-child):not(:last-child),.input-group .form-select:not(:first-child):not(:last-child),.input-group .input-group-addon:not(:first-child):not(:last-child),.input-group .input-group-btn:not(:first-child):not(:last-child){border-radius:0;margin-left:-.05rem}.input-group .form-input:last-child:not(:first-child),.input-group .form-select:last-child:not(:first-child),.input-group .input-group-addon:last-child:not(:first-child),.input-group .input-group-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.05rem}.input-group .form-input:focus,.input-group .form-select:focus,.input-group .input-group-addon:focus,.input-group .input-group-btn:focus{z-index:2}.input-group .form-select{width:auto}.input-group.input-inline{display:-ms-inline-flexbox;display:inline-flex}.form-input.is-success,.form-select.is-success,.has-success .form-input,.has-success .form-select{background:#f9fdfa;border-color:#32b643}.form-input.is-success:focus,.form-select.is-success:focus,.has-success .form-input:focus,.has-success .form-select:focus{box-shadow:0 0 0 .1rem rgba(50,182,67,.2)}.form-input.is-error,.form-select.is-error,.has-error .form-input,.has-error .form-select{background:#fffaf7;border-color:#e85600}.form-input.is-error:focus,.form-select.is-error:focus,.has-error .form-input:focus,.has-error .form-select:focus{box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-checkbox.is-error .form-icon,.form-radio.is-error .form-icon,.form-switch.is-error .form-icon,.has-error .form-checkbox .form-icon,.has-error .form-radio .form-icon,.has-error .form-switch .form-icon{border-color:#e85600}.form-checkbox.is-error input:checked+.form-icon,.form-radio.is-error input:checked+.form-icon,.form-switch.is-error input:checked+.form-icon,.has-error .form-checkbox input:checked+.form-icon,.has-error .form-radio input:checked+.form-icon,.has-error .form-switch input:checked+.form-icon{background:#e85600;border-color:#e85600}.form-checkbox.is-error input:focus+.form-icon,.form-radio.is-error input:focus+.form-icon,.form-switch.is-error input:focus+.form-icon,.has-error .form-checkbox input:focus+.form-icon,.has-error .form-radio input:focus+.form-icon,.has-error .form-switch input:focus+.form-icon{border-color:#e85600;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-checkbox.is-error input:indeterminate+.form-icon,.has-error .form-checkbox input:indeterminate+.form-icon{background:#e85600;border-color:#e85600}.form-input:not(:-ms-input-placeholder):invalid{border-color:#e85600}.form-input:not(:placeholder-shown):invalid{border-color:#e85600}.form-input:not(:-ms-input-placeholder):invalid:focus{background:#fffaf7;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-input:not(:placeholder-shown):invalid:focus{background:#fffaf7;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-input:not(:-ms-input-placeholder):invalid+.form-input-hint{color:#e85600}.form-input:not(:placeholder-shown):invalid+.form-input-hint{color:#e85600}.form-input.disabled,.form-input:disabled,.form-select.disabled,.form-select:disabled{background-color:#eef0f3;cursor:not-allowed;opacity:.5}.form-input[readonly]{background-color:#f7f8f9}input.disabled+.form-icon,input:disabled+.form-icon{background:#eef0f3;cursor:not-allowed;opacity:.5}.form-switch input.disabled+.form-icon::before,.form-switch input:disabled+.form-icon::before{background:#fff}.form-horizontal{padding:.4rem 0}.form-horizontal .form-group{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.form-inline{display:inline-block}.label{background:#eef0f3;border-radius:.1rem;color:#455060;display:inline-block;line-height:1.25;padding:.1rem .2rem}.label.label-rounded{border-radius:5rem;padding-left:.4rem;padding-right:.4rem}.label.label-primary{background:#5755d9;color:#fff}.label.label-secondary{background:#f1f1fc;color:#5755d9}.label.label-success{background:#32b643;color:#fff}.label.label-warning{background:#ffb700;color:#fff}.label.label-error{background:#e85600;color:#fff}code{background:#fcf2f2;border-radius:.1rem;color:#d73e48;font-size:85%;line-height:1.25;padding:.1rem .2rem}.code{border-radius:.1rem;color:#3b4351;position:relative}.code::before{color:#bcc3ce;content:attr(data-lang);font-size:.7rem;position:absolute;right:.4rem;top:.1rem}.code code{background:#f7f8f9;color:inherit;display:block;line-height:1.5;overflow-x:auto;padding:1rem;width:100%}.img-responsive{display:block;height:auto;max-width:100%}.img-fit-cover{object-fit:cover}.img-fit-contain{object-fit:contain}.video-responsive{display:block;overflow:hidden;padding:0;position:relative;width:100%}.video-responsive::before{content:"";display:block;padding-bottom:56.25%}.video-responsive embed,.video-responsive iframe,.video-responsive object{border:0;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}video.video-responsive{height:auto;max-width:100%}video.video-responsive::before{content:none}.video-responsive-4-3::before{padding-bottom:75%}.video-responsive-1-1::before{padding-bottom:100%}.figure{margin:0 0 .4rem 0}.figure .figure-caption{color:#66758c;margin-top:.4rem}.container{margin-left:auto;margin-right:auto;padding-left:.4rem;padding-right:.4rem;width:100%}.container.grid-xl{max-width:1296px}.container.grid-lg{max-width:976px}.container.grid-md{max-width:856px}.container.grid-sm{max-width:616px}.container.grid-xs{max-width:496px}.show-lg,.show-md,.show-sm,.show-xl,.show-xs{display:none!important}.cols,.columns{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-.4rem;margin-right:-.4rem}.cols.col-gapless,.columns.col-gapless{margin-left:0;margin-right:0}.cols.col-gapless>.column,.columns.col-gapless>.column{padding-left:0;padding-right:0}.cols.col-oneline,.columns.col-oneline{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto}.column,[class~=col-]{-ms-flex:1;flex:1;max-width:100%;padding-left:.4rem;padding-right:.4rem}.column.col-1,.column.col-10,.column.col-11,.column.col-12,.column.col-2,.column.col-3,.column.col-4,.column.col-5,.column.col-6,.column.col-7,.column.col-8,.column.col-9,.column.col-auto,[class~=col-].col-1,[class~=col-].col-10,[class~=col-].col-11,[class~=col-].col-12,[class~=col-].col-2,[class~=col-].col-3,[class~=col-].col-4,[class~=col-].col-5,[class~=col-].col-6,[class~=col-].col-7,[class~=col-].col-8,[class~=col-].col-9,[class~=col-].col-auto{-ms-flex:none;flex:none}.col-12{width:100%}.col-11{width:91.66666667%}.col-10{width:83.33333333%}.col-9{width:75%}.col-8{width:66.66666667%}.col-7{width:58.33333333%}.col-6{width:50%}.col-5{width:41.66666667%}.col-4{width:33.33333333%}.col-3{width:25%}.col-2{width:16.66666667%}.col-1{width:8.33333333%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;max-width:none;width:auto}.col-mx-auto{margin-left:auto;margin-right:auto}.col-ml-auto{margin-left:auto}.col-mr-auto{margin-right:auto}@media (max-width:1280px){.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{-ms-flex:none;flex:none}.col-xl-12{width:100%}.col-xl-11{width:91.66666667%}.col-xl-10{width:83.33333333%}.col-xl-9{width:75%}.col-xl-8{width:66.66666667%}.col-xl-7{width:58.33333333%}.col-xl-6{width:50%}.col-xl-5{width:41.66666667%}.col-xl-4{width:33.33333333%}.col-xl-3{width:25%}.col-xl-2{width:16.66666667%}.col-xl-1{width:8.33333333%}.col-xl-auto{width:auto}.hide-xl{display:none!important}.show-xl{display:block!important}}@media (max-width:960px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-auto{-ms-flex:none;flex:none}.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-auto{width:auto}.hide-lg{display:none!important}.show-lg{display:block!important}}@media (max-width:840px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.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-auto{-ms-flex:none;flex:none}.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-auto{width:auto}.hide-md{display:none!important}.show-md{display:block!important}}@media (max-width:600px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-auto{-ms-flex:none;flex:none}.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-auto{width:auto}.hide-sm{display:none!important}.show-sm{display:block!important}}@media (max-width:480px){.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.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-auto{-ms-flex:none;flex:none}.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-auto{width:auto}.hide-xs{display:none!important}.show-xs{display:block!important}}.hero{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;padding-bottom:4rem;padding-top:4rem}.hero.hero-sm{padding-bottom:2rem;padding-top:2rem}.hero.hero-lg{padding-bottom:8rem;padding-top:8rem}.hero .hero-body{padding:.4rem}.navbar{align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;-ms-flex-pack:justify;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:space-between}.navbar .navbar-section{align-items:center;display:-ms-flexbox;display:flex;-ms-flex:1 0 0;flex:1 0 0;-ms-flex-align:center}.navbar .navbar-section:not(:first-child):last-child{-ms-flex-pack:end;justify-content:flex-end}.navbar .navbar-center{align-items:center;display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center}.navbar .navbar-brand{font-size:.9rem;text-decoration:none}.accordion input:checked~.accordion-header>.icon:first-child,.accordion[open] .accordion-header>.icon:first-child{transform:rotate(90deg)}.accordion input:checked~.accordion-body,.accordion[open] .accordion-body{max-height:50rem}.accordion .accordion-header{display:block;padding:.2rem .4rem}.accordion .accordion-header .icon{transition:transform .25s}.accordion .accordion-body{margin-bottom:.4rem;max-height:0;overflow:hidden;transition:max-height .25s}summary.accordion-header::-webkit-details-marker{display:none}.avatar{background:#5755d9;border-radius:50%;color:rgba(255,255,255,.85);display:inline-block;font-size:.8rem;font-weight:300;height:1.6rem;line-height:1.25;margin:0;position:relative;vertical-align:middle;width:1.6rem}.avatar.avatar-xs{font-size:.4rem;height:.8rem;width:.8rem}.avatar.avatar-sm{font-size:.6rem;height:1.2rem;width:1.2rem}.avatar.avatar-lg{font-size:1.2rem;height:2.4rem;width:2.4rem}.avatar.avatar-xl{font-size:1.6rem;height:3.2rem;width:3.2rem}.avatar img{border-radius:50%;height:100%;position:relative;width:100%;z-index:1}.avatar .avatar-icon,.avatar .avatar-presence{background:#fff;bottom:14.64%;height:50%;padding:.1rem;position:absolute;right:14.64%;transform:translate(50%,50%);width:50%;z-index:2}.avatar .avatar-presence{background:#bcc3ce;border-radius:50%;box-shadow:0 0 0 .1rem #fff;height:.5em;width:.5em}.avatar .avatar-presence.online{background:#32b643}.avatar .avatar-presence.busy{background:#e85600}.avatar .avatar-presence.away{background:#ffb700}.avatar[data-initial]::before{color:currentColor;content:attr(data-initial);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}.badge{position:relative;white-space:nowrap}.badge:not([data-badge])::after,.badge[data-badge]::after{background:#5755d9;background-clip:padding-box;border-radius:.5rem;box-shadow:0 0 0 .1rem #fff;color:#fff;content:attr(data-badge);display:inline-block;transform:translate(-.05rem,-.5rem)}.badge[data-badge]::after{font-size:.7rem;height:.9rem;line-height:1;min-width:.9rem;padding:.1rem .2rem;text-align:center;white-space:nowrap}.badge:not([data-badge])::after,.badge[data-badge=""]::after{height:6px;min-width:6px;padding:0;width:6px}.badge.btn::after{position:absolute;right:0;top:0;transform:translate(50%,-50%)}.badge.avatar::after{position:absolute;right:14.64%;top:14.64%;transform:translate(50%,-50%);z-index:100}.breadcrumb{list-style:none;margin:.2rem 0;padding:.2rem 0}.breadcrumb .breadcrumb-item{color:#66758c;display:inline-block;margin:0;padding:.2rem 0}.breadcrumb .breadcrumb-item:not(:last-child){margin-right:.2rem}.breadcrumb .breadcrumb-item:not(:last-child) a{color:#66758c}.breadcrumb .breadcrumb-item:not(:first-child)::before{color:#66758c;content:"/";padding-right:.4rem}.bar{background:#eef0f3;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;height:.8rem;width:100%}.bar.bar-sm{height:.2rem}.bar .bar-item{background:#5755d9;color:#fff;display:block;-ms-flex-negative:0;flex-shrink:0;font-size:.7rem;height:100%;line-height:.8rem;position:relative;text-align:center;width:0}.bar .bar-item:first-child{border-bottom-left-radius:.1rem;border-top-left-radius:.1rem}.bar .bar-item:last-child{border-bottom-right-radius:.1rem;border-top-right-radius:.1rem;-ms-flex-negative:1;flex-shrink:1}.bar-slider{height:.1rem;margin:.4rem 0;position:relative}.bar-slider .bar-item{left:0;padding:0;position:absolute}.bar-slider .bar-item:not(:last-child):first-child{background:#eef0f3;z-index:1}.bar-slider .bar-slider-btn{background:#5755d9;border:0;border-radius:50%;height:.6rem;padding:0;position:absolute;right:0;top:50%;transform:translate(50%,-50%);width:.6rem}.bar-slider .bar-slider-btn:active{box-shadow:0 0 0 .1rem #5755d9}.card{background:#fff;border:.05rem solid #dadee4;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card .card-body,.card .card-footer,.card .card-header{padding:.8rem;padding-bottom:0}.card .card-body:last-child,.card .card-footer:last-child,.card .card-header:last-child{padding-bottom:.8rem}.card .card-body{-ms-flex:1 1 auto;flex:1 1 auto}.card .card-image{padding-top:.8rem}.card .card-image:first-child{padding-top:0}.card .card-image:first-child img{border-top-left-radius:.1rem;border-top-right-radius:.1rem}.card .card-image:last-child img{border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem}.chip{align-items:center;background:#eef0f3;border-radius:5rem;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;font-size:90%;height:1.2rem;line-height:.8rem;margin:.1rem;max-width:320px;overflow:hidden;padding:.2rem .4rem;text-decoration:none;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.chip.active{background:#5755d9;color:#fff}.chip .avatar{margin-left:-.4rem;margin-right:.2rem}.chip .btn-clear{border-radius:50%;transform:scale(.75)}.dropdown{display:inline-block;position:relative}.dropdown .menu{animation:slide-down .15s ease 1;display:none;left:0;max-height:50vh;overflow-y:auto;position:absolute;top:100%}.dropdown.dropdown-right .menu{left:auto;right:0}.dropdown .dropdown-toggle:focus+.menu,.dropdown .menu:hover,.dropdown.active .menu{display:block}.dropdown .btn-group .dropdown-toggle:nth-last-child(2){border-bottom-right-radius:.1rem;border-top-right-radius:.1rem}.empty{background:#f7f8f9;border-radius:.1rem;color:#66758c;padding:3.2rem 1.6rem;text-align:center}.empty .empty-icon{margin-bottom:.8rem}.empty .empty-subtitle,.empty .empty-title{margin:.4rem auto}.empty .empty-action{margin-top:.8rem}.menu{background:#fff;border-radius:.1rem;box-shadow:0 .05rem .2rem rgba(48,55,66,.3);list-style:none;margin:0;min-width:180px;padding:.4rem;transform:translateY(.2rem);z-index:300}.menu.menu-nav{background:0 0;box-shadow:none}.menu .menu-item{margin-top:0;padding:0 .4rem;position:relative;text-decoration:none}.menu .menu-item>a{border-radius:.1rem;color:inherit;display:block;margin:0 -.4rem;padding:.2rem .4rem;text-decoration:none}.menu .menu-item>a:focus,.menu .menu-item>a:hover{background:#f1f1fc;color:#5755d9}.menu .menu-item>a.active,.menu .menu-item>a:active{background:#f1f1fc;color:#5755d9}.menu .menu-item .form-checkbox,.menu .menu-item .form-radio,.menu .menu-item .form-switch{margin:.1rem 0}.menu .menu-item+.menu-item{margin-top:.2rem}.menu .menu-badge{align-items:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;height:100%;position:absolute;right:0;top:0}.menu .menu-badge .label{margin-right:.4rem}.modal{align-items:center;bottom:0;display:none;-ms-flex-align:center;-ms-flex-pack:center;justify-content:center;left:0;opacity:0;overflow:hidden;padding:.4rem;position:fixed;right:0;top:0}.modal.active,.modal:target{display:-ms-flexbox;display:flex;opacity:1;z-index:400}.modal.active .modal-overlay,.modal:target .modal-overlay{background:rgba(247,248,249,.75);bottom:0;cursor:default;display:block;left:0;position:absolute;right:0;top:0}.modal.active .modal-container,.modal:target .modal-container{animation:slide-down .2s ease 1;z-index:1}.modal.modal-sm .modal-container{max-width:320px;padding:0 .4rem}.modal.modal-lg .modal-overlay{background:#fff}.modal.modal-lg .modal-container{box-shadow:none;max-width:960px}.modal-container{background:#fff;border-radius:.1rem;box-shadow:0 .2rem .5rem rgba(48,55,66,.3);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:75vh;max-width:640px;padding:0 .8rem;width:100%}.modal-container.modal-fullheight{max-height:100vh}.modal-container .modal-header{color:#303742;padding:.8rem}.modal-container .modal-body{overflow-y:auto;padding:.8rem;position:relative}.modal-container .modal-footer{padding:.8rem;text-align:right}.nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;list-style:none;margin:.2rem 0}.nav .nav-item a{color:#66758c;padding:.2rem .4rem;text-decoration:none}.nav .nav-item a:focus,.nav .nav-item a:hover{color:#5755d9}.nav .nav-item.active>a{color:#505c6e;font-weight:700}.nav .nav-item.active>a:focus,.nav .nav-item.active>a:hover{color:#5755d9}.nav .nav{margin-bottom:.4rem;margin-left:.8rem}.pagination{display:-ms-flexbox;display:flex;list-style:none;margin:.2rem 0;padding:.2rem 0}.pagination .page-item{margin:.2rem .05rem}.pagination .page-item span{display:inline-block;padding:.2rem .2rem}.pagination .page-item a{border-radius:.1rem;display:inline-block;padding:.2rem .4rem;text-decoration:none}.pagination .page-item a:focus,.pagination .page-item a:hover{color:#5755d9}.pagination .page-item.disabled a{cursor:default;opacity:.5;pointer-events:none}.pagination .page-item.active a{background:#5755d9;color:#fff}.pagination .page-item.page-next,.pagination .page-item.page-prev{-ms-flex:1 0 50%;flex:1 0 50%}.pagination .page-item.page-next{text-align:right}.pagination .page-item .page-item-title{margin:0}.pagination .page-item .page-item-subtitle{margin:0;opacity:.5}.panel{border:.05rem solid #dadee4;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.panel .panel-footer,.panel .panel-header{-ms-flex:0 0 auto;flex:0 0 auto;padding:.8rem}.panel .panel-nav{-ms-flex:0 0 auto;flex:0 0 auto}.panel .panel-body{-ms-flex:1 1 auto;flex:1 1 auto;overflow-y:auto;padding:0 .8rem}.popover{display:inline-block;position:relative}.popover .popover-container{left:50%;opacity:0;padding:.4rem;position:absolute;top:0;transform:translate(-50%,-50%) scale(0);transition:transform .2s;width:320px;z-index:300}.popover :focus+.popover-container,.popover:hover .popover-container{display:block;opacity:1;transform:translate(-50%,-100%) scale(1)}.popover.popover-right .popover-container{left:100%;top:50%}.popover.popover-right :focus+.popover-container,.popover.popover-right:hover .popover-container{transform:translate(0,-50%) scale(1)}.popover.popover-bottom .popover-container{left:50%;top:100%}.popover.popover-bottom :focus+.popover-container,.popover.popover-bottom:hover .popover-container{transform:translate(-50%,0) scale(1)}.popover.popover-left .popover-container{left:0;top:50%}.popover.popover-left :focus+.popover-container,.popover.popover-left:hover .popover-container{transform:translate(-100%,-50%) scale(1)}.popover .card{border:0;box-shadow:0 .2rem .5rem rgba(48,55,66,.3)}.step{display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;list-style:none;margin:.2rem 0;width:100%}.step .step-item{-ms-flex:1 1 0;flex:1 1 0;margin-top:0;min-height:1rem;position:relative;text-align:center}.step .step-item:not(:first-child)::before{background:#5755d9;content:"";height:2px;left:-50%;position:absolute;top:9px;width:100%}.step .step-item a{color:#5755d9;display:inline-block;padding:20px 10px 0;text-decoration:none}.step .step-item a::before{background:#5755d9;border:.1rem solid #fff;border-radius:50%;content:"";display:block;height:.6rem;left:50%;position:absolute;top:.2rem;transform:translateX(-50%);width:.6rem;z-index:1}.step .step-item.active a::before{background:#fff;border:.1rem solid #5755d9}.step .step-item.active~.step-item::before{background:#dadee4}.step .step-item.active~.step-item a{color:#bcc3ce}.step .step-item.active~.step-item a::before{background:#dadee4}.tab{align-items:center;border-bottom:.05rem solid #dadee4;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:.2rem 0 .15rem 0}.tab .tab-item{margin-top:0}.tab .tab-item a{border-bottom:.1rem solid transparent;color:inherit;display:block;margin:0 .4rem 0 0;padding:.4rem .2rem .3rem .2rem;text-decoration:none}.tab .tab-item a:focus,.tab .tab-item a:hover{color:#5755d9}.tab .tab-item a.active,.tab .tab-item.active a{border-bottom-color:#5755d9;color:#5755d9}.tab .tab-item.tab-action{-ms-flex:1 0 auto;flex:1 0 auto;text-align:right}.tab .tab-item .btn-clear{margin-top:-.2rem}.tab.tab-block .tab-item{-ms-flex:1 0 0;flex:1 0 0;text-align:center}.tab.tab-block .tab-item a{margin:0}.tab.tab-block .tab-item .badge[data-badge]::after{position:absolute;right:.1rem;top:.1rem;transform:translate(0,0)}.tab:not(.tab-block) .badge{padding-right:0}.tile{align-content:space-between;align-items:flex-start;display:-ms-flexbox;display:flex;-ms-flex-align:start;-ms-flex-line-pack:justify}.tile .tile-action,.tile .tile-icon{-ms-flex:0 0 auto;flex:0 0 auto}.tile .tile-content{-ms-flex:1 1 auto;flex:1 1 auto}.tile .tile-content:not(:first-child){padding-left:.4rem}.tile .tile-content:not(:last-child){padding-right:.4rem}.tile .tile-subtitle,.tile .tile-title{line-height:1.2rem}.tile.tile-centered{align-items:center;-ms-flex-align:center}.tile.tile-centered .tile-content{overflow:hidden}.tile.tile-centered .tile-subtitle,.tile.tile-centered .tile-title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast{background:rgba(48,55,66,.95);border:.05rem solid #303742;border-color:#303742;border-radius:.1rem;color:#fff;display:block;padding:.4rem;width:100%}.toast.toast-primary{background:rgba(87,85,217,.95);border-color:#5755d9}.toast.toast-success{background:rgba(50,182,67,.95);border-color:#32b643}.toast.toast-warning{background:rgba(255,183,0,.95);border-color:#ffb700}.toast.toast-error{background:rgba(232,86,0,.95);border-color:#e85600}.toast a{color:#fff;text-decoration:underline}.toast a.active,.toast a:active,.toast a:focus,.toast a:hover{opacity:.75}.toast .btn-clear{margin:.1rem}.toast p:last-child{margin-bottom:0}.tooltip{position:relative}.tooltip::after{background:rgba(48,55,66,.95);border-radius:.1rem;bottom:100%;color:#fff;content:attr(data-tooltip);display:block;font-size:.7rem;left:50%;max-width:320px;opacity:0;overflow:hidden;padding:.2rem .4rem;pointer-events:none;position:absolute;text-overflow:ellipsis;transform:translate(-50%,.4rem);transition:opacity .2s,transform .2s;white-space:pre;z-index:300}.tooltip:focus::after,.tooltip:hover::after{opacity:1;transform:translate(-50%,-.2rem)}.tooltip.disabled,.tooltip[disabled]{pointer-events:auto}.tooltip.tooltip-right::after{bottom:50%;left:100%;transform:translate(-.2rem,50%)}.tooltip.tooltip-right:focus::after,.tooltip.tooltip-right:hover::after{transform:translate(.2rem,50%)}.tooltip.tooltip-bottom::after{bottom:auto;top:100%;transform:translate(-50%,-.4rem)}.tooltip.tooltip-bottom:focus::after,.tooltip.tooltip-bottom:hover::after{transform:translate(-50%,.2rem)}.tooltip.tooltip-left::after{bottom:50%;left:auto;right:100%;transform:translate(.4rem,50%)}.tooltip.tooltip-left:focus::after,.tooltip.tooltip-left:hover::after{transform:translate(-.2rem,50%)}@keyframes loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-1.6rem)}100%{opacity:1;transform:translateY(0)}}.text-primary{color:#5755d9!important}a.text-primary:focus,a.text-primary:hover{color:#4240d4}a.text-primary:visited{color:#6c6ade}.text-secondary{color:#e5e5f9!important}a.text-secondary:focus,a.text-secondary:hover{color:#d1d0f4}a.text-secondary:visited{color:#fafafe}.text-gray{color:#bcc3ce!important}a.text-gray:focus,a.text-gray:hover{color:#adb6c4}a.text-gray:visited{color:#cbd0d9}.text-light{color:#fff!important}a.text-light:focus,a.text-light:hover{color:#f2f2f2}a.text-light:visited{color:#fff}.text-dark{color:#3b4351!important}a.text-dark:focus,a.text-dark:hover{color:#303742}a.text-dark:visited{color:#455060}.text-success{color:#32b643!important}a.text-success:focus,a.text-success:hover{color:#2da23c}a.text-success:visited{color:#39c94b}.text-warning{color:#ffb700!important}a.text-warning:focus,a.text-warning:hover{color:#e6a500}a.text-warning:visited{color:#ffbe1a}.text-error{color:#e85600!important}a.text-error:focus,a.text-error:hover{color:#cf4d00}a.text-error:visited{color:#ff6003}.bg-primary{background:#5755d9!important;color:#fff}.bg-secondary{background:#f1f1fc!important}.bg-dark{background:#303742!important;color:#fff}.bg-gray{background:#f7f8f9!important}.bg-success{background:#32b643!important;color:#fff}.bg-warning{background:#ffb700!important;color:#fff}.bg-error{background:#e85600!important;color:#fff}.c-hand{cursor:pointer}.c-move{cursor:move}.c-zoom-in{cursor:zoom-in}.c-zoom-out{cursor:zoom-out}.c-not-allowed{cursor:not-allowed}.c-auto{cursor:auto}.d-block{display:block}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.d-hide,.d-none{display:none!important}.d-visible{visibility:visible}.d-invisible{visibility:hidden}.text-hide{background:0 0;border:0;color:transparent;font-size:0;line-height:0;text-shadow:none}.text-assistive{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.divider,.divider-vert{display:block;position:relative}.divider-vert[data-content]::after,.divider[data-content]::after{background:#fff;color:#bcc3ce;content:attr(data-content);display:inline-block;font-size:.7rem;padding:0 .4rem;transform:translateY(-.65rem)}.divider{border-top:.05rem solid #f1f3f5;height:.05rem;margin:.4rem 0}.divider[data-content]{margin:.8rem 0}.divider-vert{display:block;padding:.8rem}.divider-vert::before{border-left:.05rem solid #dadee4;bottom:.4rem;content:"";display:block;left:50%;position:absolute;top:.4rem;transform:translateX(-50%)}.divider-vert[data-content]::after{left:50%;padding:.2rem 0;position:absolute;top:50%;transform:translate(-50%,-50%)}.loading{color:transparent!important;min-height:.8rem;pointer-events:none;position:relative}.loading::after{animation:loading .5s infinite linear;background:0 0;border:.1rem solid #5755d9;border-radius:50%;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:.8rem;left:50%;margin-left:-.4rem;margin-top:-.4rem;opacity:1;padding:0;position:absolute;top:50%;width:.8rem;z-index:1}.loading.loading-lg{min-height:2rem}.loading.loading-lg::after{height:1.6rem;margin-left:-.8rem;margin-top:-.8rem;width:1.6rem}.clearfix::after{clear:both;content:"";display:table}.float-left{float:left!important}.float-right{float:right!important}.p-relative{position:relative!important}.p-absolute{position:absolute!important}.p-fixed{position:fixed!important}.p-sticky{position:-webkit-sticky!important;position:sticky!important}.p-centered{display:block;float:none;margin-left:auto;margin-right:auto}.flex-centered{align-items:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-pack:center;justify-content:center}.m-0{margin:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mr-0{margin-right:0!important}.mt-0{margin-top:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-bottom:0!important;margin-top:0!important}.m-1{margin:.2rem!important}.mb-1{margin-bottom:.2rem!important}.ml-1{margin-left:.2rem!important}.mr-1{margin-right:.2rem!important}.mt-1{margin-top:.2rem!important}.mx-1{margin-left:.2rem!important;margin-right:.2rem!important}.my-1{margin-bottom:.2rem!important;margin-top:.2rem!important}.m-2{margin:.4rem!important}.mb-2{margin-bottom:.4rem!important}.ml-2{margin-left:.4rem!important}.mr-2{margin-right:.4rem!important}.mt-2{margin-top:.4rem!important}.mx-2{margin-left:.4rem!important;margin-right:.4rem!important}.my-2{margin-bottom:.4rem!important;margin-top:.4rem!important}.p-0{padding:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.pr-0{padding-right:0!important}.pt-0{padding-top:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-bottom:0!important;padding-top:0!important}.p-1{padding:.2rem!important}.pb-1{padding-bottom:.2rem!important}.pl-1{padding-left:.2rem!important}.pr-1{padding-right:.2rem!important}.pt-1{padding-top:.2rem!important}.px-1{padding-left:.2rem!important;padding-right:.2rem!important}.py-1{padding-bottom:.2rem!important;padding-top:.2rem!important}.p-2{padding:.4rem!important}.pb-2{padding-bottom:.4rem!important}.pl-2{padding-left:.4rem!important}.pr-2{padding-right:.4rem!important}.pt-2{padding-top:.4rem!important}.px-2{padding-left:.4rem!important;padding-right:.4rem!important}.py-2{padding-bottom:.4rem!important;padding-top:.4rem!important}.s-rounded{border-radius:.1rem}.s-circle{border-radius:50%}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-normal{font-weight:400}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-large{font-size:1.2em}.text-small{font-size:.9em}.text-tiny{font-size:.8em}.text-muted{opacity:.8}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-clip{overflow:hidden;text-overflow:clip;white-space:nowrap}.text-break{-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-break:break-word;word-wrap:break-word} \ No newline at end of file diff --git a/templates/assets/images/Ark-A.png b/templates/assets/images/Ark-A.png new file mode 100644 index 0000000000000000000000000000000000000000..4550f746c62e60951cababd482a627c5638afc10 GIT binary patch literal 12137 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 literal 0 HcmV?d00001 diff --git a/templates/assets/images/Ark-full.png b/templates/assets/images/Ark-full.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4d42a749809f460cb3e15d8b9c82f58e0bbeb9 GIT binary patch literal 27548 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 Qfk9`|(?)2OYuHEr8+$c;kN^Mx literal 0 HcmV?d00001 diff --git a/templates/assets/images/Ark-slim.png b/templates/assets/images/Ark-slim.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b6deb1985ab05f59af88bc1e88e8a1ae15a26c GIT binary patch literal 22969 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\^|\+|\-|\*|\/|tailOf|headOf|nil\?|list|len|append|concat|print|puts|input|time|empty\?|firstOf|assert|toNumber|toString|and|or|mod|type|hasField|not)(?=[\]()\s#])/g + } +]); \ No newline at end of file diff --git a/templates/assets/js/languages/cpp.js b/templates/assets/js/languages/cpp.js new file mode 100644 index 0000000..5060318 --- /dev/null +++ b/templates/assets/js/languages/cpp.js @@ -0,0 +1,26 @@ +Rainbow.extend("cpp", [ + { + name: "meta.preprocessor", + matches: { + 1: [ + { matches: { 1: "keyword.define", 2: "entity.name" }, pattern: /(\w+)\s(\w+)\b/g }, + { name: "keyword.define", pattern: /endif/g }, + { name: "constant.numeric", pattern: /\d+/g }, + { matches: { 1: "keyword.include", 2: "string" }, pattern: /(include)\s(.*?)$/g }, + ], + }, + pattern: /\#([\S\s]*?)$/gm, + }, + { name: "keyword", pattern: /\b(while|break|continue|switch|case|default|do|goto|typedef|template|decltype|delete|if|else|for|nullptr|operator|namespace|new|this|try|except|typename|sizeof|throw|typeid|using)\b/g }, + { matches: { 1: "storage.type", 3: "storage.type", 4: "entity.name.function" }, pattern: /\b((un)?signed|const)? ?(void|char|short|int|long|float|double)\*? +((\w+)(?= ?\())?/g }, + { matches: { 2: "entity.name.function" }, pattern: /(\w|\*) +((\w+)(?= ?\())/g }, + { name: "storage.modifier", pattern: /\b(static|extern|auto|register|volatile|inline|constexpr|explicit|export|mutable|private|protected|public|virtual|final|override)\b/g }, + { name: "support.type", pattern: /\b(struct|union|enum|class)\b/g }, + { name: "support.namespace", pattern: /([A-Za-z_]+::)+[A-Za-z_]+/g, }, + { + matches: { + 1: "function.method.call", + }, + pattern: /([A-Za-z_]+\.)[A-Za-z_]+(?=\))/g, + }, +], 'generic'); \ No newline at end of file diff --git a/templates/assets/js/languages/shell.js b/templates/assets/js/languages/shell.js new file mode 100644 index 0000000..56456ab --- /dev/null +++ b/templates/assets/js/languages/shell.js @@ -0,0 +1,9 @@ +Rainbow.extend("shell", [ + { name: "shell", matches: { 1: { language: "shell" } }, pattern: /\$\(([\s\S]*?)\)/gm }, + { matches: { 2: "string" }, pattern: /(\(|\s|\[|\=)(('|")[\s\S]*?(\3))/gm }, + { name: "keyword.operator", pattern: /<|>|&/g }, + { name: "comment", pattern: /\#[\s\S]*?$/gm }, + { name: "storage.function", pattern: /(.+?)(?=\(\)\s{0,}\{)/g }, + { name: "support.command", pattern: /\b(echo|rm|ls|(mk|rm)dir|cd|find|cp|exit|pwd|exec|trap|source|shift|unset)/g }, + { matches: { 1: "keyword" }, pattern: /\b(break|case|continue|do|done|elif|else|esac|eval|export|fi|for|function|if|in|local|return|set|then|unset|until|while)(?=\b)/g }, +]); \ No newline at end of file diff --git a/templates/assets/js/rainbow.min.js b/templates/assets/js/rainbow.min.js new file mode 100644 index 0000000..42a53de --- /dev/null +++ b/templates/assets/js/rainbow.min.js @@ -0,0 +1,2 @@ +/* Rainbow v2.1.4 rainbowco.de | included languages: c, csharp, css, generic, html, java, javascript, json, php, python, ruby */!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Rainbow=t()}(this,function(){"use strict";function e(){return"undefined"!=typeof module&&"object"==typeof module.exports}function t(e){var t=e.getAttribute("data-language")||e.parentNode.getAttribute("data-language");if(!t){var n=/\blang(?:uage)?-(\w+)/,r=e.className.match(n)||e.parentNode.className.match(n);r&&(t=r[1])}return t?t.toLowerCase():null}function n(e,t,n,r){return(n!==e||r!==t)&&(n<=e&&r>=t)}function r(e){return e.replace(//g,">").replace(/&(?![\w\#]+;)/g,"&")}function a(e,t){for(var n=0,r=1;r=e&&ne&&r'+n+""}function c(e){for(var t=i(v),n=0,r=t;n section, .inner-section > section + margin-bottom: 3.5% + +table.table.dark + background-color: $menus-bg-color +.table.table-striped tbody tr:nth-of-type(odd) + background-color: darken($menus-bg-color, 3%) +.table.table-hover tbody tr:hover + background-color: darken($menus-bg-color, 6%) + +// rainbowJS +code.rainbowjs + display: block + overflow-x: auto + +pre.rainbow-show + position: initial + +// Responsive +@media screen and (max-width: $break-width) + // remove content side columns + .col-2 + display: none + .col-8 + width: 100vw + + #content + margin-top: $header-height * 1.5 + padding: 5vh 10px + h2 + text-align: center + section .inner-section + padding: 0 + border: none \ No newline at end of file diff --git a/templates/assets/sass/general.sass b/templates/assets/sass/general.sass new file mode 100644 index 0000000..93ad0f5 --- /dev/null +++ b/templates/assets/sass/general.sass @@ -0,0 +1,77 @@ +@import "_vars.sass" + +body + background-color: $menus-bg-color + color: $menus-color + margin: 0 + padding: 0 + min-height: 100vh + + +// Images +img.fit + width: 100% +img.three-quarters + width: 75% + +// Code and codeblocks +code:not(.rainbowjs), div.codeblock + background-color: $menus-bg-color + color: $menus-color + word-break: break-all +code:not(.rainbowjs).error, div.codeblock.error + color: #d73e48 +code.rainbowjs + color: $body-color + background-color: inherit +div.codeblock, pre + padding: 0 10px !important + font-family: "SF Mono","Segoe UI Mono","Roboto Mono",Menlo,Courier,monospace + font-size: 110% !important + line-height: 0.5 + border-radius: .1rem + +// Rainbowjs fucking up with the positions +pre.preloader, div.preloader + position: initial + + +// Spectre.css overrides to fit in with the theme +.divider + border-top: none + border-left: 1px solid lighten($body-bg-color, 8%) + height: $header-height +.divider.half + height: $header-height / 2 + +pre code.rainbowjs span.label + background: initial + +.btn:not(.btn-link) + border-color: $btn-primary-bg-color !important + &:hover + border-color: darken($btn-primary-bg-color, 2%) !important + +.btn.btn-link, .btn-link, .btn.btn-link:focus + color: $btn-link-color + &:hover + color: lighten($btn-link-color, 10%) + +.btn:hover + border-radius: 5px + transition: border-radius 0.1s ease-in-out + +.btn.btn-primary + color: $body-color + background: $btn-primary-bg-color + &:hover + background-color: darken($btn-primary-bg-color, 5%) + +// Adding another animation from a Spectre.css keyframes +@keyframes slide-left + 0% + opacity: 0 + transform: translateX(1.6rem) + 100% + opacity: 1 + transform: translateX(0) \ No newline at end of file diff --git a/templates/assets/sass/page-structure.sass b/templates/assets/sass/page-structure.sass new file mode 100644 index 0000000..ab1e95a --- /dev/null +++ b/templates/assets/sass/page-structure.sass @@ -0,0 +1,192 @@ +@import "_vars.sass" + +// PAGE STRUCTURE SASS FILE +// contains header, footer and sidebar styles + + +// NAVBAR/HEADER +$banner-height: 60vh +$header-sections-font-size: 0.8rem + +header.navbar, #banner + padding: 0 4vw + width: 100vw + height: $header-height + background-color: $menus-bg-color + + * + margin: 0 10px + a + font-size: $header-sections-font-size + + img + height: $header-height + + .navbar-brand + font-size: $header-sections-font-size * 1.4 + color: darken($btn-link-color, 5%) + text-transform: uppercase + font-weight: bold + line-height: $header-height + + .dropdown + margin: 0 + a + border: none + +header.navbar:not(.has-banner) + height: $header-height * 1.5 + img, .navbar-center, .navbar-center a, div.dropdown-link + height: $header-height * 1.5 + + +// BANNER +#banner + height: $banner-height + margin-bottom: 25px + + .banner-center + display: flex + flex-flow: column + text-align: center + + img + height: $banner-height / 5 + + +// SIDEBAR +.off-canvas .off-canvas-toggle + position: fixed + top: $header-height * 2 + left: 15px + +#sidebar + background: $menus-bg-color + max-width: 15vw + + &~.off-canvas-overlay + cursor: initial + + .nav .nav-item a + color: darken($body-color, 3%) + &:hover + color: $btn-link-color + +// FOOTER +footer#page-footer + bottom: 0 + width: 100vw + min-height: $footer-height + background-color: $menus-bg-color + padding: 2vh + + p + margin: 0 + padding: 0 + + +// DROPDOWN +.btn.btn-link.dropdown-toggle:focus + box-shadow: none +.menu + background-color: $menus-bg-color +.dropdown .dropdown-toggle:focus+.menu, .dropdown .menu:hover, .dropdown.active .menu + display: block !important + + +// Hiding the logo on the index page by default (will show only on click on the menu toggler!) +.hide + display: none + +// caret icon modifications +.dropdown-toggle .icon.icon-caret + margin-right: 0 + + + +// RESPONSIVE +@media screen and (max-width: $break-width) + .dropdown-toggle .icon.icon-caret + display: none + + header.navbar + min-height: 55px + &.has-banner + #menu-show + height: $header-height + i + height: $header-height * 1.5 + padding: 0 + position: fixed + .dropdown + display: flex !important + align-items: center + flex-direction: column + .menu, .menu:hover + animation: none + display: flex !important + align-items: inherit + flex-direction: inherit + position: relative + margin-bottom: 20px + .dropdown-toggle:focus + .menu + display: flex !important + #menu-show + min-height: 55px + i + height: $header-height * 1.5 + padding-top: 0 + padding-bottom: 0 + border: 0 + height: $header-height * 1.5 + position: fixed + top: 0 + margin-left: 0 + z-index: 500 + .logo + align-items: initial + position: fixed + right: 0 + img + min-height: 50px + .divider + width: 190px + height: 1px + border-left: none + border-top: 1px solid lighten($body-bg-color, 8%) + + // No banner + header.navbar:not(.has-banner):focus-within + .navbar-section.show-on-focus + animation: slide-down ease 0.15s 1 + padding-top: $header-height + background-color: $menus-bg-color + left: 0 + margin: 0 + width: 100vw + display: flex !important + align-items: center + flex-direction: column + .menu + position: initial + + // Banner + header.navbar.has-banner:focus-within + .logo, .logo * + animation: slide-left ease 0.15s 1 + display: block !important + .navbar-center + animation: slide-down ease 0.15s 1 + display: flex !important + background-color: $menus-bg-color + position: fixed + top: $header-height + left: 0 + flex-direction: column + margin: 0 + width: 100vw + + // sidebar button behaviour + .off-canvas .off-canvas-toggle + left: -6px + border-bottom-right-radius: 10px \ No newline at end of file diff --git a/templates/banner.html b/templates/banner.html new file mode 100644 index 0000000..0c60953 --- /dev/null +++ b/templates/banner.html @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 6cba8e0..1140109 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,10 +1,64 @@ - - {title} - - - - {content} - + + + + {page_title} + + + + + + + + + + + + + + {banner} + + +
    +
    + +
    + + +
    + {sections} +
    + + + +
    +
    +
    + +
    +

    + Copyright © 2020-2021 Alexandre Plateau & Fabien Zoccola.
    All rights reserved.
    + {footer} +

    +
    + + + + + + \ No newline at end of file From 837ab5e47d7bc5b84bcf9dc929dcce4ffa99f38a Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sat, 24 Jul 2021 18:53:20 +0200 Subject: [PATCH 35/46] enhancing the html generator --- arkdoc/__main__.py | 3 +- arkdoc/generator/base.py | 8 +++-- arkdoc/generator/html.py | 75 +++++++++++++++++++++++++--------------- 3 files changed, 54 insertions(+), 32 deletions(-) diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index c3af6fa..8433b03 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -36,7 +36,8 @@ def compute(args) -> bool: if not args.dry_run: if args.html: - gen = HTMLGenerator(parsers, args.html) + # TODO put a flag or find the version + gen = HTMLGenerator(parsers, args.html, "3.1.0") gen() else: logger.error("Missing generator!") diff --git a/arkdoc/generator/base.py b/arkdoc/generator/base.py index b8fa13d..c5f8abb 100644 --- a/arkdoc/generator/base.py +++ b/arkdoc/generator/base.py @@ -18,7 +18,9 @@ def __init__(self, parsers: List[Parser], template_folder: Path, pattern: str): for file in template_folder.glob(pattern) } self.list = spec.FileList([]) + self._create_files_list(parsers) + def _create_files_list(self, parsers: List[Parser]): registered = {} for p in parsers: @@ -30,10 +32,10 @@ def __init__(self, parsers: List[Parser], template_folder: Path, pattern: str): if base in registered: registered[base].functions += functions else: - file = spec.File(base, functions) - registered[base] = file + registered[base] = spec.File(base, functions) + self.list.files.append(registered[base]) - self.list.files.append(file) + self.list.files = [f for f in self.list.files if len(f.functions)] def generate_index(self): raise NotImplementedError diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index d92e3cb..d4b9288 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -13,60 +13,79 @@ from ..parser import Parser -class HTMLGenerator(Generator): - def __init__(self, parsers: List[Parser], output: str): - super().__init__(parsers, spec.HTML_TEMPLATE_FOLDER, "*.html") - self.output_path = Path(output) - self.fields = { - name: re.findall(r"{\w+}", content, re.MULTILINE) - for name, content in self.templates.items() - } - - self.footer = f"Last generation at {datetime.now()}" - - def make_nav_link(self, name: str, path: str) -> str: +def make_nav_link(name: str, path: str) -> str: return f"{name}" - def make_code_block(self, content: str) -> str: - return f"""
    +
    +def make_code_block(content: str) -> str:
    +    return f"""
     
     {content}
     
     
    """ - def make_section(self, title: str, content: str) -> str: - return f"""
    -

    {title}

    -
    - {content} -
    +def make_section(title: str, content: str) -> str: + return f"""
    +

    {title}

    + +
    + {content} +
    """ + +def make_unordered_list(content: List[str]) -> str: + out = "
      " + for el in content: + out += f"
    • {el}
    • " + return out + "
    " + + +class HTMLGenerator(Generator): + def __init__(self, parsers: List[Parser], output: str, ark_version: str): + super().__init__(parsers, spec.HTML_TEMPLATE_FOLDER, "*.html") + + self.version = ark_version + self.output_path = Path(output) + self.output_path_ver = self.output_path / self.version + + self.fields = { + name: re.findall(r"{\w+}", content, re.MULTILINE) + for name, content in self.templates.items() + } + + self.footer = f"Last generation at {datetime.now()}" + def create_dir(self, name: str): (self.output_path / name).mkdir() def generate_index(self): - if not self.output_path.exists(): - shutil.copytree(str(self.template_folder / "assets"), str(self.output_path / "assets")) + if not self.output_path_ver.exists(): + if not (self.template_folder / "assets").exists(): + shutil.copytree(str(self.template_folder / "assets"), str(self.output_path / "assets")) + self.output_path_ver.mkdir() else: - shutil.rmtree(str(self.output_path)) - if self.output_path.exists(): - self.output_path.rmdir() + shutil.rmtree(str(self.output_path_ver)) return self.generate_index() - sections = self.make_section("Test", "test") + sections = make_section( + f"ArkScript {self.version} documentation", + f"Welcome! This is the official documentation for ArkScript {self.version}" + + make_unordered_list([file.path for file in self.list.files]) + ) content = self.templates["index.html"] content = content.format( - page_title="ArkScript documentation", + page_title=f"ArkScript {self.version} documentation", banner=self.templates["banner.html"], navigation_links="", sections=sections, footer=self.footer ) - (self.output_path / "index.html").write_text(content) + (self.output_path_ver / "index.html").write_text(content) + logger.info("Generated", self.output_path_ver / "index.html") def generate_one(self, path: str, functions: List[spec.Function]): local_fields = self.fields.copy() From 2204563be5747adf88dfb3e0f180fb95c94bdea2 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sat, 24 Jul 2021 19:36:22 +0200 Subject: [PATCH 36/46] finalizing the html generator, adding a table of contents --- arkdoc/generator/html.py | 141 ++++++++++++++++++++++++++------ templates/index.html | 15 ++-- templates/table_of_content.html | 21 +++++ 3 files changed, 147 insertions(+), 30 deletions(-) create mode 100644 templates/table_of_content.html diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index d4b9288..fbf379a 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -13,33 +13,81 @@ from ..parser import Parser -def make_nav_link(name: str, path: str) -> str: +class html: + @staticmethod + def plural(name: str, qu: int) -> str: + return f"{name}{'s' if qu > 1 else ''}" + + @staticmethod + def nav_link(name: str, path: str) -> str: return f"{name}" + @staticmethod + def anchorize(name: str) -> str: + return name.lower().replace(" ", "-") + + @staticmethod + def nav_item(name: str, anchor: str) -> str: + return f"""""" + + @staticmethod + def a(name: str, path: str) -> str: + return f"{name}" + + @staticmethod + def b(content: str) -> str: + return f"{content}" + + @staticmethod + def inline_code(content: str) -> str: + return f"{content}" -def make_code_block(content: str) -> str: - return f"""
    +    @staticmethod
    +    def code(content: str) -> str:
    +        return f"""
     
     {content}
     
     
    """ + @staticmethod + def section(title: str, content: str, anchor: str="") -> str: + return f"""
    +

    {title}

    -def make_section(title: str, content: str) -> str: - return f"""
    -

    {title}

    - -
    - {content} -
    +
    + {content} +
    """ + @staticmethod + def ul(content: List[str]) -> str: + out = "
      " + for el in content: + out += f"
    • {el}
    • " + return out + "
    " + + @staticmethod + def div(*args: List[str]) -> str: + return "
    " + "\n".join(args) + "
    " + + @staticmethod + def h1(name: str) -> str: + return f"

    {name}

    " + + @staticmethod + def h2(name: str) -> str: + return f"

    {name}

    " + + @staticmethod + def h3(name: str) -> str: + return f"

    {name}

    " -def make_unordered_list(content: List[str]) -> str: - out = "
      " - for el in content: - out += f"
    • {el}
    • " - return out + "
    " + @staticmethod + def h4(name: str) -> str: + return f"

    {name}

    " class HTMLGenerator(Generator): @@ -50,12 +98,7 @@ def __init__(self, parsers: List[Parser], output: str, ark_version: str): self.output_path = Path(output) self.output_path_ver = self.output_path / self.version - self.fields = { - name: re.findall(r"{\w+}", content, re.MULTILINE) - for name, content in self.templates.items() - } - - self.footer = f"Last generation at {datetime.now()}" + self.footer = f"Last generation at {datetime.now()}" def create_dir(self, name: str): (self.output_path / name).mkdir() @@ -69,16 +112,19 @@ def generate_index(self): shutil.rmtree(str(self.output_path_ver)) return self.generate_index() - sections = make_section( + sections = html.section( f"ArkScript {self.version} documentation", f"Welcome! This is the official documentation for ArkScript {self.version}" + - make_unordered_list([file.path for file in self.list.files]) + html.ul([html.a(file.path, f"/{self.version}/{file.path}.html") for file in self.list.files]) ) content = self.templates["index.html"] content = content.format( page_title=f"ArkScript {self.version} documentation", + home_link=f"/{self.version}", + has_banner="has-banner", banner=self.templates["banner.html"], + table_of_content="", navigation_links="", sections=sections, footer=self.footer @@ -88,5 +134,52 @@ def generate_index(self): logger.info("Generated", self.output_path_ver / "index.html") def generate_one(self, path: str, functions: List[spec.Function]): - local_fields = self.fields.copy() + sections = "" + table_of_content = self.templates["table_of_content.html"] + links = "" + + for func in functions: + links += html.nav_item(func.name, html.anchorize(func.name)) + content = html.div( + html.inline_code(func.signature), "
    ", + html.div(func.desc.brief), + html.div( + html.b("Note"), ": ", + func.desc.details + ), + html.div( + html.h4(html.plural("Parameter", len(func.desc.params))), + html.ul([ + f"{html.inline_code(p.name)}: {p.desc}" for p in func.desc.params + ]) + ), + html.div( + html.h4(html.plural("Author", len(func.desc.authors))), + ", ".join([ + html.a(f"@{a.split('/')[-1]}", a) for a in func.desc.authors + ]) + ) + ) + if func.desc.code: + content += html.div( + html.h4("Example"), + html.code(func.desc.code) + ) + sections += html.section(func.name, content, anchor=html.anchorize(func.name)) + + table_of_content = table_of_content.format(table_of_content_links=links) + + content = self.templates["index.html"] + content = content.format( + page_title=f"{path} - ArkScript {self.version} documentation", + home_link=f"/{self.version}", + has_banner="", + banner="", + table_of_content=table_of_content, + navigation_links="", + sections=sections, + footer=self.footer + ) + + (self.output_path_ver / f"{path}.html").write_text(content) return None diff --git a/templates/index.html b/templates/index.html index 1140109..ce0a704 100644 --- a/templates/index.html +++ b/templates/index.html @@ -5,6 +5,7 @@ {page_title} + @@ -15,11 +16,11 @@ -
    """ @staticmethod - def section(title: str, content: str, anchor: str="") -> str: + def section(title: str, content: str, anchor: str = "") -> str: return f"""

    {title}

    @@ -91,7 +91,9 @@ def h4(name: str) -> str: class HTMLGenerator(Generator): def __init__(self, parsers: List[Parser], output: str, ark_version: str): - super().__init__(parsers, spec.HTML_TEMPLATE_FOLDER, "*.html", output, ark_version) + super().__init__( + parsers, spec.HTML_TEMPLATE_FOLDER, "*.html", output, ark_version + ) self.footer = f"Last generation at {datetime.now()}" @@ -100,12 +102,19 @@ def create_dir(self, name: str): def generate_index(self): if not (self.output_path / "assets").exists(): - shutil.copytree(str(self.template_folder / "assets"), str(self.output_path / "assets")) + shutil.copytree( + str(self.template_folder / "assets"), str(self.output_path / "assets") + ) sections = html.section( f"ArkScript {self.version} documentation", - f"Welcome! This is the official documentation for ArkScript {self.version}" + - html.ul([html.a(file.path, f"/{self.version}/{file.path}.html") for file in self.list.files]) + f"Welcome! This is the official documentation for ArkScript {self.version}" + + html.ul( + [ + html.a(file.path, f"/{self.version}/{file.path}.html") + for file in self.list.files + ] + ), ) content = self.templates["index.html"] @@ -117,7 +126,7 @@ def generate_index(self): table_of_content="", navigation_links="", sections=sections, - footer=self.footer + footer=self.footer, ) (self.output_path_ver / "index.html").write_text(content) @@ -131,31 +140,31 @@ def generate_one(self, path: str, functions: List[spec.Function]): for func in functions: links += html.nav_item(func.name, html.anchorize(func.name)) content = html.div( - html.inline_code(func.signature), "
    ", + html.inline_code(func.signature), + "
    ", html.div(func.desc.brief), - html.div( - html.b("Note"), ": ", - func.desc.details - ), + html.div(html.b("Note"), ": ", func.desc.details), html.div( html.h4(html.plural("Parameter", len(func.desc.params))), - html.ul([ - f"{html.inline_code(p.name)}: {p.desc}" for p in func.desc.params - ]) + html.ul( + [ + f"{html.inline_code(p.name)}: {p.desc}" + for p in func.desc.params + ] + ), ), html.div( html.h4(html.plural("Author", len(func.desc.authors))), - ", ".join([ - html.a(f"@{a.split('/')[-1]}", a) for a in func.desc.authors - ]) - ) + ", ".join( + [html.a(f"@{a.split('/')[-1]}", a) for a in func.desc.authors] + ), + ), ) if func.desc.code: - content += html.div( - html.h4("Example"), - html.code(func.desc.code) - ) - sections += html.section(func.name, content, anchor=html.anchorize(func.name)) + content += html.div(html.h4("Example"), html.code(func.desc.code)) + sections += html.section( + func.name, content, anchor=html.anchorize(func.name) + ) table_of_content = table_of_content.format(table_of_content_links=links) @@ -168,7 +177,7 @@ def generate_one(self, path: str, functions: List[spec.Function]): table_of_content=table_of_content, navigation_links="", sections=sections, - footer=self.footer + footer=self.footer, ) (self.output_path_ver / f"{path}.html").write_text(content) From 3b48d1c55916342e86939f7005b27a9168b95a97 Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sat, 31 Jul 2021 14:33:10 +0200 Subject: [PATCH 44/46] fixing the generator to avoid listing an empty author --- arkdoc/generator/html.py | 17 +++++++++++------ arkdoc/generator/utils.py | 11 ++++++----- templates/404.html | 10 ---------- templates/temp.html | 10 ---------- 4 files changed, 17 insertions(+), 31 deletions(-) delete mode 100644 templates/404.html delete mode 100644 templates/temp.html diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index 61e19ac..954e124 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -139,6 +139,16 @@ def generate_one(self, path: str, functions: List[spec.Function]): for func in functions: links += html.nav_item(func.name, html.anchorize(func.name)) + authors = ( + html.div( + html.h4(html.plural("Author", len(func.desc.authors))), + ", ".join( + [html.a(f"@{a.split('/')[-1]}", a) for a in func.desc.authors] + ), + ) + if func.desc.authors + else "" + ) content = html.div( html.inline_code(func.signature), "
    ", @@ -153,12 +163,7 @@ def generate_one(self, path: str, functions: List[spec.Function]): ] ), ), - html.div( - html.h4(html.plural("Author", len(func.desc.authors))), - ", ".join( - [html.a(f"@{a.split('/')[-1]}", a) for a in func.desc.authors] - ), - ), + authors, ) if func.desc.code: content += html.div(html.h4("Example"), html.code(func.desc.code)) diff --git a/arkdoc/generator/utils.py b/arkdoc/generator/utils.py index b75a0c5..2060daa 100644 --- a/arkdoc/generator/utils.py +++ b/arkdoc/generator/utils.py @@ -20,10 +20,11 @@ def extractor(data: Dict, doc: Documentation) -> Tuple[Dict, str]: if tag in comment.value: res = re.sub(fr"#+ *{tag}", "", comment.value).strip() - if isinstance(data[key], list): - data[key].append(res) - else: - data[key] = res + if res: + if isinstance(data[key], list): + data[key].append(res) + else: + data[key] = res else: if "=begin" in comment.value: in_code = True @@ -41,7 +42,7 @@ def extractor(data: Dict, doc: Documentation) -> Tuple[Dict, str]: param_name, desc = param.split(" ", 1) data["param"][i] = spec.Param(param_name, desc) - data["author"] = [el.strip() for el in data["author"].split(",")] + data["author"] = [el.strip() for el in data["author"].split(",") if data["author"]] return data, "\n".join(code) diff --git a/templates/404.html b/templates/404.html deleted file mode 100644 index 6cba8e0..0000000 --- a/templates/404.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - {title} - - - - {content} - - \ No newline at end of file diff --git a/templates/temp.html b/templates/temp.html deleted file mode 100644 index 6cba8e0..0000000 --- a/templates/temp.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - {title} - - - - {content} - - \ No newline at end of file From dbdc9b951244e04f144818b64d28d18d6753a55a Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 1 Aug 2021 12:33:56 +0200 Subject: [PATCH 45/46] do not display the parameter section if the function doesn't take any --- arkdoc/generator/html.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index 954e124..e504cc2 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -149,11 +149,7 @@ def generate_one(self, path: str, functions: List[spec.Function]): if func.desc.authors else "" ) - content = html.div( - html.inline_code(func.signature), - "
    ", - html.div(func.desc.brief), - html.div(html.b("Note"), ": ", func.desc.details), + parameters = ( html.div( html.h4(html.plural("Parameter", len(func.desc.params))), html.ul( @@ -162,7 +158,16 @@ def generate_one(self, path: str, functions: List[spec.Function]): for p in func.desc.params ] ), - ), + ) + if func.desc.params + else "" + ) + content = html.div( + html.inline_code(func.signature), + "
    ", + html.div(func.desc.brief), + html.div(html.b("Note"), ": ", func.desc.details), + parameters, authors, ) if func.desc.code: From 89fbc5e7cc71c534cc41918fa5e1e9d40412cc5d Mon Sep 17 00:00:00 2001 From: Alexandre Plateau Date: Sun, 1 Aug 2021 13:02:03 +0200 Subject: [PATCH 46/46] adding a root-dir parameter so that we can generate the output wherever we want --- .github/workflows/test.yml | 2 +- arkdoc/__main__.py | 23 ++++++++++++----------- arkdoc/generator/base.py | 4 +++- arkdoc/generator/html.py | 14 ++++++++------ templates/banner.html | 2 +- templates/index.html | 16 ++++++++-------- 6 files changed, 33 insertions(+), 28 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 416c518..e833838 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,4 +34,4 @@ jobs: - run: pip install -r requirements.txt - run: | export ARKDOC_LOGLEVEL=DEBUG - python -m arkdoc 3.1.0 std-latest/ --builtins ark-latest/src/Builtins --html out || exit 1 \ No newline at end of file + python -m arkdoc 3.1.0 std-latest/ ark-latest/src/Builtins --html out || exit 1 \ No newline at end of file diff --git a/arkdoc/__main__.py b/arkdoc/__main__.py index fd94e27..ce4f78a 100644 --- a/arkdoc/__main__.py +++ b/arkdoc/__main__.py @@ -17,16 +17,17 @@ def compute(args) -> bool: global logger - if not os.path.exists(args.source_folder): - logger.error(f"Folder `${args.source_folder}` does not exists") - return False + for folder in args.source_folder: + if not os.path.exists(folder): + logger.error(f"Folder `{folder}` does not exists") + return False if args.dry_run: logger.level = LogLevel.DEBUG - parsers = parse_all_in(args.source_folder) - if args.builtins: - parsers += parse_all_in(args.builtins) + parsers = [] + for folder in args.source_folder: + parsers += parse_all_in(folder) for p in parsers: logger.info(f"Parsing {p.filename}...") p.parse() @@ -36,7 +37,7 @@ def compute(args) -> bool: if not args.dry_run: if args.html: - gen = HTMLGenerator(parsers, args.html, args.ark_version) + gen = HTMLGenerator(parsers, args.html, args.ark_version, args.root_dir) gen() else: logger.error("Missing generator!") @@ -49,10 +50,7 @@ def main() -> int: cli = argparse.ArgumentParser(description="ArkScript Documentation generator") cli.add_argument("ark_version", type=str, help="ArkScript version number, eg 3.1.0") cli.add_argument( - "source_folder", type=str, help="Path to the ArkScript source folder" - ) - cli.add_argument( - "--builtins", type=str, help="Path to the builtins folder", default=None + "source_folder", type=str, help="Path to the ArkScript source folder", nargs="+" ) cli.add_argument( "--dry-run", @@ -60,6 +58,9 @@ def main() -> int: help="Run and log everything but don't generate any file", ) cli.add_argument("--html", type=str, help="Output folder for the HTML docs") + cli.add_argument( + "--root-dir", type=str, default="", help="The root dir for the links" + ) args = cli.parse_args() diff --git a/arkdoc/generator/base.py b/arkdoc/generator/base.py index 0676011..d994a03 100644 --- a/arkdoc/generator/base.py +++ b/arkdoc/generator/base.py @@ -19,14 +19,16 @@ def __init__( pattern: str, output: str, ark_version: str, + root: str, ): self.template_folder = template_folder self.templates = { file.name: file.read_text("utf-8") for file in template_folder.glob(pattern) } - self.version = ark_version self.output_path = Path(output) + self.version = ark_version self.output_path_ver = self.output_path / self.version + self.root = root if root and root[-1] != "/" else root[:-1] self.list = spec.FileList([]) self._create_files_list(parsers) diff --git a/arkdoc/generator/html.py b/arkdoc/generator/html.py index e504cc2..fae937b 100644 --- a/arkdoc/generator/html.py +++ b/arkdoc/generator/html.py @@ -90,9 +90,9 @@ def h4(name: str) -> str: class HTMLGenerator(Generator): - def __init__(self, parsers: List[Parser], output: str, ark_version: str): + def __init__(self, parsers: List[Parser], output: str, ark_version: str, root: str): super().__init__( - parsers, spec.HTML_TEMPLATE_FOLDER, "*.html", output, ark_version + parsers, spec.HTML_TEMPLATE_FOLDER, "*.html", output, ark_version, root ) self.footer = f"Last generation at {datetime.now()}" @@ -111,7 +111,7 @@ def generate_index(self): f"Welcome! This is the official documentation for ArkScript {self.version}" + html.ul( [ - html.a(file.path, f"/{self.version}/{file.path}.html") + html.a(file.path, f"{self.root}/{self.version}/{file.path}.html") for file in self.list.files ] ), @@ -119,10 +119,11 @@ def generate_index(self): content = self.templates["index.html"] content = content.format( + root=self.root, page_title=f"ArkScript {self.version} documentation", - home_link=f"/{self.version}", + home_link=f"{self.root}/{self.version}", has_banner="has-banner", - banner=self.templates["banner.html"], + banner=self.templates["banner.html"].format(root=self.root), table_of_content="", navigation_links="", sections=sections, @@ -180,8 +181,9 @@ def generate_one(self, path: str, functions: List[spec.Function]): content = self.templates["index.html"] content = content.format( + root=self.root, page_title=f"{path} - ArkScript {self.version} documentation", - home_link=f"/{self.version}", + home_link=f"{self.root}/{self.version}", has_banner="", banner="", table_of_content=table_of_content, diff --git a/templates/banner.html b/templates/banner.html index 0c60953..cc92044 100644 --- a/templates/banner.html +++ b/templates/banner.html @@ -7,7 +7,7 @@ @@ -60,8 +60,8 @@ - - + + \ No newline at end of file