diff --git a/README.md b/README.md index ad6f1ac..4eaa75a 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Here are some of the development goals for Bitcoin Cache Machine: ## What is needed to Run Bitcoin Cache Machine -If you can run Ubuntu 18.04, you can run BCM. BCM is deployed as a data-center back-end, so you'll want to deploy BCM to a computer with reliable power and internet connections. Some of the services deployed on BCM require contant Internet connectivity (e.g., market maker functionality for Bisq and JoinMarket, transaction relay for Lightning node). You can run BCM data-center workloads directly on your Ubuntu installation (best performance) or it can run in a hardware-based VM (useful if you're running multiple BCM instances [e.g., family members] on shared hardware). User-facing GUI applications such as Electrum Wallet run within the context of docker which is automatically installed via snap. +If you can run Ubuntu, you can run BCM. BCM is deployed as a data-center back-end, so you'll want to deploy BCM to a computer with reliable power and internet connections. Some of the services deployed on BCM require contant Internet connectivity (e.g., market maker functionality for Bisq and JoinMarket, transaction relay for Lightning node). You can run BCM data-center workloads directly on your Ubuntu installation (best performance) or it can run in a hardware-based VM (useful if you're running multiple BCM instances [e.g., family members] on shared hardware). User-facing GUI applications such as Electrum Wallet run within the context of docker which is automatically installed via snap. ## Getting Started diff --git a/commands/cluster/README.md b/commands/cluster/README.md index cd1dc84..ce8a09f 100644 --- a/commands/cluster/README.md +++ b/commands/cluster/README.md @@ -9,7 +9,7 @@ The BCM CLI can provision a cluster running on your localhost. This cluster can If your localhost (e.g., SDN Controller) supports hardware virtualization and you choose to deploy a `vm`, [multipass](https://github.com/CanonicalLtd/multipass) will be installed locally and BCM data-center components will be deployed to that. If your hardware doesn't support virtualization, BCM can still be installed using directly to your Ubuntu OS. VM is a good choice if you're just testing or developing BCM applications. You won't achieve any kind of local HA when deploying BCM in VMs (since the VMs run on the same hardware), however. For that, you MUST install BCM to the native OS via 'local' or 'ssh' deployment methods. Since 'local' and 'ssh' avoid hardware virtualization, they are generally more performant. -The only assumptions that BCM makes is that each machine is running a fresh installation of Ubuntu 18.04 (Desktop or Server) and has SSH exposed on port 22 (for remote machines). Each remote machine you provision MUST be DNS-resolvable by your SDN controller, or be accessible as a TOR (v3) onion service for the management plane (i.e., SSH, LXD). The [server prep script](./server_prep.sh) helps you prepare a new server so you can remotely access it using TOR. +The only assumptions that BCM makes is that each machine is running a fresh installation of Ubuntu (Desktop or Server) and has SSH exposed on port 22 (for remote machines). Each remote machine you provision MUST be DNS-resolvable by your SDN controller, or be accessible as a TOR (v3) onion service for the management plane (i.e., SSH, LXD). The [server prep script](./server_prep.sh) helps you prepare a new server so you can remotely access it using TOR. Clusters are created and destroyed using the `bcm cluster create` and `bcm cluster destroy` commands, respectively. Add the `--help` flag to determine how best to use `bcm cluster` commands. Most users won't need to use these commands directly as they are automatically invoked when users start user-facing application using `bcm stack start` commands. @@ -27,7 +27,7 @@ Cluster mode is when you run BCM data center workloads on more than one LXD inst # How to prepare a physical server for BCM workloads -If you want to run BCM on one or more dedicated server machines (e.g., an old NUC on your home network), you must first prepare it. It is recommended that you install a fresh copy of Ubuntu 18.04 Server on these machines using the instructions below. You will need Ubuntu 18.04 Server [installed on a USB thumb drive](https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0). Ensure the drive is first plugged into the computer. Also ensure the computer is plugged into a functional network. +If you want to run BCM on one or more dedicated server machines (e.g., an old NUC on your home network), you must first prepare it. It is recommended that you install a fresh copy of Ubuntu Server on these machines using the instructions below. You will need Ubuntu Server [installed on a USB thumb drive](https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0). Ensure the drive is first plugged into the computer. Also ensure the computer is plugged into a functional network. 1. Boot to the USB medium. You may have to enter the BIOS to select a boot device, or press an F-key (e.g., F2, F8, F11) at boot to ensure the device boots from the USB thumb drive. 2. Press enter to accept the defaults regarding keyboard layout (US English). diff --git a/commands/web/build-site.sh b/commands/web/build-site.sh deleted file mode 100755 index 908830b..0000000 --- a/commands/web/build-site.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash - -set -Eeuo pipefail -cd "$(dirname "$0")" - -# this script creates - - -# mkdir -p $HOME/.aws - -# if [ ! -f $HOME/.aws/bcm ]; then -# aws ec2 create-key-pair --key-name bcm --query 'KeyMaterial' --output text > $HOME/.aws/bcm -# fi - -# #chmod 0400 $HOME/.aws/bcm - -# aws ec2 run-instances \ -# --image-id ami-07d0cf3af28718ef8 \ -# --count 1 \ -# --instance-type t2.micro \ -# --key-name bcm - - -# #--security-group-ids sg-903004f8 \ - - -# #--subnet-id subnet-6e7f829e - -AWS_CLOUD_INIT_FILE=aws_docker_machine_cloud_init.yml - -# creates a public VM in AWS and provisions the bcm website. -docker-machine create --driver amazonec2 \ ---amazonec2-open-port 80 \ ---amazonec2-open-port 443 \ ---amazonec2-access-key $AWS_ACCESS_KEY \ ---amazonec2-secret-key $AWS_SECRET_ACCESS_KEY \ ---amazonec2-userdata $AWS_CLOUD_INIT_FILE \ ---amazonec2-region us-east-1 registry - -eval $(docker-machine env registry) - -# enable swarm mode so we can deploy a stack. -docker swarm init - -# if $HOME/.abot/registry.config doesn't exist, create a new one. -if [[ ! -f $HOME/.abot/registry.config ]]; then - REGISTRY_HTTP_SECRET=$(apg -n 1 -m 30 -M CN) - mkdir -p $HOME/.abot - echo "REGISTRY_HTTP_SECRET="$REGISTRY_HTTP_SECRET >> $HOME/.abot/registry.config -else - # if it does exist, source it. - source $HOME/.abot/registry.config -fi - - -#private-registry-data - -docker-machine ssh registry -- sudo apt-get update -docker-machine ssh registry -- sudo apt-get install -y software-properties-common add-apt-respository -docker-machine ssh registry -- sudo add-apt-repository ppa:certbot/certbot -docker-machine ssh registry -- sudo apt-get update -docker-machine ssh registry -- sudo apt-get -y install certbot - -docker-machine ssh registry -- mkdir -p /home/ubuntu/registry/ -docker-machine ssh registry -- sudo certbot certonly --webroot -w /home/ubuntu/registry/ -d .com -d registry..com - -env REGISTRY_HTTP_SECRET=$REGISTRY_HTTP_SECRET docker stack deploy -c registry.yml registry - -wait-for-it -t 0 $(docker-machine ip registry):80 diff --git a/commands/web/entrypoint.sh b/commands/web/entrypoint.sh deleted file mode 100755 index 593bc61..0000000 --- a/commands/web/entrypoint.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/bash - -set -Eeuo pipefail -cd "$(dirname "$0")" - -VALUE="${2:-}" -if [ ! -z "${VALUE}" ]; then - BCM_CLI_VERB="$2" -else - echo "Please provide a web command." - cat ./help.txt - exit -fi - -ENV_PATH= - -for i in "$@"; do - case $i in - --env=*) - ENV_PATH="${i#*=}" - shift # past argument=value - ;; - *) ;; - esac -done - -# exit if the ENV_PATH was not set. -if [[ ! -f $ENV_PATH ]]; then - echo "ERROR: ENV_PATH not set. Use '--env=/some/path/to/env/file'." - exit 1 -fi - -EXTERNAL_PORT= -DOMAIN_NAME= -SITE_NAME= -SITE_PATH= - -source "$ENV_PATH" -SITE_PATH=$(dirname $ENV_PATH) -if [[ -z $SITE_PATH ]]; then - echo "ERROR: SITE_PATH not set." - exit 1 -fi - - -if [[ -z $SITE_NAME ]]; then - echo "ERROR: SITE_NAME not set." - exit 1 -fi - -HTML_DOCKERVOL="$SITE_NAME-site" -if ! docker volume list | grep -q "$HTML_DOCKERVOL"; then - docker volume create "$HTML_DOCKERVOL" -fi - -# now call the appropritate script. -if [[ $BCM_CLI_VERB == "build" ]]; then - # this stores cached jekyll data that is pulled from the - # internet the first time an image is created. - BUILDCACHE_DOCKERVOL="$SITE_NAME-buildcache" - if ! docker volume list | grep -q "$BUILDCACHE_DOCKERVOL"; then - docker volume create "$BUILDCACHE_DOCKERVOL" - fi - - BCM_DOCKER_BASE_TAG="jekyll/jekyll:3.8" - if docker image list | grep -q "$BCM_DOCKER_BASE_TAG"; then - docker image pull "$BCM_DOCKER_BASE_TAG" - fi - - if [[ -f "$SITE_PATH/Dockerfile" ]]; then - docker build --build-arg BCM_DOCKER_BASE_TAG="$BCM_DOCKER_BASE_TAG" -t "jekyll:$SITE_NAME" "$SITE_PATH/" - fi - - echo "Building the image for '$SITE_PATH'." - docker run --rm -it --volume="$BUILDCACHE_DOCKERVOL":/usr/local/bundle -v "$HTML_DOCKERVOL":/srv/jekyll/_site --volume="$SITE_PATH/jekyll_theme:/srv/jekyll" "jekyll:$SITE_NAME" jekyll build -fi - -if [[ -z $DOMAIN_NAME ]]; then - echo "ERROR: DOMAIN_NAME not set." - exit 1 -fi - -if [[ -z $EXTERNAL_PORT ]]; then - echo "ERROR: EXTERNAL_PORT not set." - exit 1 -fi - -# Run serves the static _site directory using NGINX. -if [[ $BCM_CLI_VERB == "run" ]]; then - - bcm web build --env="$ENV_PATH" - - NGINX_IMAGE="nginx:latest" - if docker image list | grep -q "$NGINX_IMAGE"; then - docker image pull "$NGINX_IMAGE" - fi - - if docker ps | grep -a "$SITE_NAME"; then - docker kill "$SITE_NAME" - fi - - docker system prune -f >> /dev/null - docker run -d \ - --name="$SITE_NAME" \ - -p "$EXTERNAL_PORT:80" \ - -v "$HTML_DOCKERVOL:/usr/share/nginx/html:ro" \ - -e NGINX_HOST="$DOMAIN_NAME" \ - -e NGINX_PORT="$EXTERNAL_PORT" \ - "$NGINX_IMAGE" - - echo "Note! You can find a locally running copy of your site at $DOMAIN_NAME:$EXTERNAL_PORT" -fi - -# in publish, we create a VM on AWS if it doesn't already exist and publish the website to it. -# future work, we can integrate DNS providers and wire that up too. -if [[ $BCM_CLI_VERB == "publish" ]]; then - -fi diff --git a/commands/web/help.txt b/commands/web/help.txt deleted file mode 100644 index 5d8f121..0000000 --- a/commands/web/help.txt +++ /dev/null @@ -1 +0,0 @@ - f \ No newline at end of file diff --git a/project/deploy.sh b/project/deploy.sh index b4c3db5..405e55a 100755 --- a/project/deploy.sh +++ b/project/deploy.sh @@ -2,7 +2,8 @@ # purpose of this script is to call the scripts that are necessary to deploy BCM -# we start bottom up and terminate each script upon service activation. +# we start bottom up (i.e., LXC image, LXC containers, docker images, docker containers, etc) +# and terminate each script upon service activation. set -Eeuo pipefail cd "$(dirname "$0")" diff --git a/project/tiers/manager/build/Dockerfile b/project/tiers/manager/build/Dockerfile index bdfce53..1291e47 100644 --- a/project/tiers/manager/build/Dockerfile +++ b/project/tiers/manager/build/Dockerfile @@ -1,7 +1,16 @@ ARG BASE_IMAGE - FROM ${BASE_IMAGE} RUN apt-get update \ - && apt-get install -y wait-for-it git iproute2 curl dnsutils wait-for-it iputils-ping iproute2 duplicity ca-certificates net-tools \ + && apt-get install -y \ + wait-for-it \ + apt-transport-https \ + git \ + iproute2 \ + curl \ + dnsutils \ + iputils-ping \ + iproute2 \ + ca-certificates \ + net-tools \ && rm -rf /var/lib/apt/lists/* diff --git a/stacks/toronion/build/Dockerfile b/stacks/toronion/build/Dockerfile index c6f6c2c..9234794 100644 --- a/stacks/toronion/build/Dockerfile +++ b/stacks/toronion/build/Dockerfile @@ -2,21 +2,18 @@ ARG BASE_IMAGE FROM ${BASE_IMAGE} -#ENV DEBIAN_FRONTEND=noninteractive -# TODO implement method https://2019.www.torproject.org/docs/debian.html.en to -# to apt as tor. +ENV DEBIAN_FRONTEND=noninteractive -# get the codename, usually bionic or debian -ENV CODE_NAME="$(< /etc/os-release grep VERSION_CODENAME | cut -d "=" -f 2)" - -RUN echo "deb https://deb.torproject.org/torproject.org $CODE_NAME main" >> /etc/apt/sources.list -RUN echo "deb-src https://deb.torproject.org/torproject.org $CODE_NAME main" >> /etc/apt/sources.list +RUN echo "deb https://mirror.netcologne.de/torproject.org bionic main" >> /etc/apt/sources.list +RUN echo "deb-src https://mirror.netcologne.de/torproject.org bionic main" >> /etc/apt/sources.list COPY ./TOR-project-PGP.pub tor.pgp.pub RUN gpg --import tor.pgp.pub +ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 RUN gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add - RUN apt-get update +RUN apt-get install -y apt-transport-https RUN apt-get install -y tor deb.torproject.org-keyring # SOCKS5, Control Port, DNS diff --git a/uninstall.sh b/uninstall.sh deleted file mode 100755 index e69de29..0000000 diff --git a/website/Dockerfile b/website/Dockerfile new file mode 100644 index 0000000..b6893e7 --- /dev/null +++ b/website/Dockerfile @@ -0,0 +1,33 @@ +FROM alpine:3.11 + +#Base settings +ENV HOME /root + +COPY requirements.txt /root/requirements.txt + +#Install ZeroNet +RUN apk --update --no-cache --no-progress add python3 python3-dev gcc libffi-dev musl-dev make tor openssl \ + && pip3 install -r /root/requirements.txt \ + && apk del python3-dev gcc libffi-dev musl-dev make \ + && echo "ControlPort 9051" >> /etc/tor/torrc \ + && echo "CookieAuthentication 1" >> /etc/tor/torrc + +RUN python3 -V \ + && python3 -m pip list \ + && tor --version \ + && openssl version + +#Add Zeronet source +COPY . /root +VOLUME /root/data + +#Control if Tor proxy is started +ENV ENABLE_TOR false + +WORKDIR /root + +#Set upstart command +CMD (! ${ENABLE_TOR} || tor&) && python3 zeronet.py --ui_ip 0.0.0.0 --fileserver_port 26552 + +#Expose ports +EXPOSE 43110 26552 \ No newline at end of file diff --git a/website/build_site.sh b/website/build_site.sh new file mode 100755 index 0000000..92abf29 --- /dev/null +++ b/website/build_site.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -Eeuox pipefail +cd "$(dirname "$0")" + +source ./env + +# this stores cached jekyll data that is pulled from the +# internet the first time an image is created. +if ! docker volume list | grep -q "$BUILDCACHE_DOCKERVOL"; then + docker volume create "$BUILDCACHE_DOCKERVOL" +fi + +if docker image list | grep -q "$BCM_DOCKER_BASE_TAG"; then + docker image pull "$BCM_DOCKER_BASE_TAG" +fi + +docker tag "$BCM_DOCKER_BASE_TAG" "jekyll:$SITE_NAME" + +docker run --rm -it \ +-v "$BUILDCACHE_DOCKERVOL":/usr/local/bundle \ +-v "$SITE_PATH:/srv/jekyll" \ +"jekyll:$SITE_NAME" jekyll build --trace diff --git a/website/env b/website/env new file mode 100644 index 0000000..cb7c519 --- /dev/null +++ b/website/env @@ -0,0 +1,9 @@ + +export SITE_NAME="bcmweb" +export SITE_PATH="$(pwd)/jekyll_site" +export NGINX_IMAGE="nginx:latest" +export BUILDCACHE_DOCKERVOL="$SITE_NAME-buildcache" +export BCM_DOCKER_BASE_TAG="jekyll/jekyll" +export DOMAIN_NAME="127.0.0.1" +export EXTERNAL_PORT="28953" +export SERVICE_ENDPOINT="$DOMAIN_NAME:$EXTERNAL_PORT" \ No newline at end of file diff --git a/website/jekyll_site/404.html b/website/jekyll_site/404.html new file mode 100644 index 0000000..c472b4e --- /dev/null +++ b/website/jekyll_site/404.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/website/jekyll_site/CNAME b/website/jekyll_site/CNAME new file mode 100644 index 0000000..d0ea04c --- /dev/null +++ b/website/jekyll_site/CNAME @@ -0,0 +1 @@ +www.bitcoincachemachine.org \ No newline at end of file diff --git a/website/jekyll_site/Gemfile b/website/jekyll_site/Gemfile new file mode 100644 index 0000000..491cae0 --- /dev/null +++ b/website/jekyll_site/Gemfile @@ -0,0 +1,14 @@ +source 'https://rubygems.org' +gem 'github-pages', group: :jekyll_plugins + +# source "https://rubygems.org" + +# # bundle exec jekyll serve + +# # If you have any plugins, put them here! +# group :jekyll_plugins do +# gem "jekyll-feed", "~> 0.6" +# end + +# gem "github-pages", group: :jekyll_plugins +# gem 'nokogiri', '~> 1.10', '>= 1.10.1' \ No newline at end of file diff --git a/website/jekyll_site/Gemfile.lock b/website/jekyll_site/Gemfile.lock new file mode 100644 index 0000000..8cddb0a --- /dev/null +++ b/website/jekyll_site/Gemfile.lock @@ -0,0 +1,248 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.10) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.4) + dnsruby (1.61.2) + addressable (~> 2.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + ethon (0.12.0) + ffi (>= 1.3.0) + eventmachine (1.2.7) + execjs (2.7.0) + faraday (0.15.4) + multipart-post (>= 1.2, < 3) + ffi (1.10.0) + forwardable-extended (2.6.0) + gemoji (3.0.0) + github-pages (193) + activesupport (= 4.2.10) + github-pages-health-check (= 1.8.1) + jekyll (= 3.7.4) + jekyll-avatar (= 0.6.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.5) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.11.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.9.4) + jekyll-mentions (= 1.4.1) + jekyll-optional-front-matter (= 0.3.0) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.2.0) + jekyll-redirect-from (= 0.14.0) + jekyll-relative-links (= 0.5.3) + jekyll-remote-theme (= 0.3.1) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.5.0) + jekyll-sitemap (= 1.2.0) + jekyll-swiss (= 0.4.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.1) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.3) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.1) + jemoji (= 0.10.1) + kramdown (= 1.17.0) + liquid (= 4.0.0) + listen (= 3.1.5) + mercenary (~> 0.3) + minima (= 2.5.0) + nokogiri (>= 1.8.2, < 2.0) + rouge (= 2.2.1) + terminal-table (~> 1.4) + github-pages-health-check (1.8.1) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (~> 2.0) + typhoeus (~> 1.3) + html-pipeline (2.10.0) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.4) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.6.0) + jekyll (~> 3.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.2.0) + commonmarker (~> 0.14) + jekyll (>= 3.0, < 4.0) + jekyll-commonmark-ghpages (0.1.5) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1) + rouge (~> 2) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.11.0) + jekyll (~> 3.3) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.9.4) + jekyll (~> 3.1) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.4.1) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-optional-front-matter (0.3.0) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.2.0) + jekyll (~> 3.0) + jekyll-redirect-from (0.14.0) + jekyll (~> 3.3) + jekyll-relative-links (0.5.3) + jekyll (~> 3.3) + jekyll-remote-theme (0.3.1) + jekyll (~> 3.5) + rubyzip (>= 1.2.1, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-swiss (0.4.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.3) + jekyll (~> 3.5) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.1) + jekyll (~> 3.3) + jekyll-watch (2.1.2) + listen (~> 3.0) + jemoji (0.10.1) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (~> 3.0) + kramdown (1.17.0) + liquid (4.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + mini_portile2 (2.4.0) + minima (2.5.0) + jekyll (~> 3.5) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.11.3) + multipart-post (2.0.0) + nokogiri (1.10.1) + mini_portile2 (~> 2.4.0) + octokit (4.13.0) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (2.0.5) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rouge (2.2.1) + ruby-enum (0.7.2) + i18n + ruby_dep (1.5.0) + rubyzip (1.2.2) + safe_yaml (1.0.4) + sass (3.7.3) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.3.1) + ethon (>= 0.9.0) + tzinfo (1.2.5) + thread_safe (~> 0.1) + unicode-display_width (1.4.1) + +PLATFORMS + ruby + +DEPENDENCIES + github-pages + +BUNDLED WITH + 2.0.1 diff --git a/website/jekyll_site/Gruntfile.js b/website/jekyll_site/Gruntfile.js new file mode 100644 index 0000000..08a04e2 --- /dev/null +++ b/website/jekyll_site/Gruntfile.js @@ -0,0 +1,74 @@ +module.exports = function(grunt) { + + // Project configuration. + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + uglify: { + main: { + src: 'js/<%= pkg.name %>.js', + dest: 'js/<%= pkg.name %>.min.js' + } + }, + less: { + expanded: { + options: { + paths: ["css"] + }, + files: { + "css/<%= pkg.name %>.css": "less/<%= pkg.name %>.less" + } + }, + minified: { + options: { + paths: ["css"], + cleancss: true + }, + files: { + "css/<%= pkg.name %>.min.css": "less/<%= pkg.name %>.less" + } + } + }, + banner: '/*!\n' + + ' * <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n' + + ' * Copyright <%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + + ' * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\n' + + ' */\n', + usebanner: { + dist: { + options: { + position: 'top', + banner: '<%= banner %>' + }, + files: { + src: ['css/<%= pkg.name %>.css', 'css/<%= pkg.name %>.min.css', 'js/<%= pkg.name %>.min.js'] + } + } + }, + watch: { + scripts: { + files: ['js/<%= pkg.name %>.js'], + tasks: ['uglify'], + options: { + spawn: false, + }, + }, + less: { + files: ['less/*.less'], + tasks: ['less'], + options: { + spawn: false, + } + }, + }, + }); + + // Load the plugins. + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-banner'); + grunt.loadNpmTasks('grunt-contrib-watch'); + + // Default task(s). + grunt.registerTask('default', ['uglify', 'less', 'usebanner']); + +}; diff --git a/website/jekyll_site/README.md b/website/jekyll_site/README.md new file mode 100644 index 0000000..a308a01 --- /dev/null +++ b/website/jekyll_site/README.md @@ -0,0 +1,8 @@ + +# bitcoinCacheMachine.com + +Public website for Bitcoin Cache Machine. + +There's a CNAME for www.bitcoincachemachine.com redirect points to bitcoincachemachine.github.io + +Based on Jekyll \ No newline at end of file diff --git a/website/jekyll_site/_config.yml b/website/jekyll_site/_config.yml new file mode 100644 index 0000000..886bd33 --- /dev/null +++ b/website/jekyll_site/_config.yml @@ -0,0 +1,142 @@ + +title: Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center +email: info@bitcoincachemachine.org +description: Privacy-preserving Bitcoin Payment infrastructure for home and office. +url: http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch/ +twitter_username: BTCCacheMachine +github_username: BitcoinCacheMachine +permalink: /:year/:month/:day/:title:output_ext + +# Build settings +markdown: kramdown +plugins: + - jekyll-feed + - jekyll-paginate + +# Secondary Parameters +header-img: img/header_v2.png +headercolor: "white" +logo: /img/bcm_logo_v2.png +icon: /img/bcm_icon_v2.png + +# Tertiary Parameters +github_username: BitcoinCacheMachine +project_repository: BitcoinCacheMachine + +# Build settings +markdown: kramdown +highlighter: rouge +permalink: pretty +paginate: 10 +exclude: ["less","node_modules","Gruntfile.js","package.json","README.md"] + +# Prose Settings +prose: + ignore: ['feed.xml', '/stl', '/ply', '/js', '/plugin', '/lib', '/projectors', '_layouts', '/_includes', 'Gruntfile.js', 'package.json', 'proselinks.jsonp', 'ppanchor.matin', '.gitignore', '/search', '/css', '/img', '/img/favicon.png','_data/*.json','LICENSES.md','README.md','colorscheme.scss','members.html','index.html'] + #siteurl: 'http://www.bitcoincachemachine.org/' + ispp: true + media: 'img' + metadata: + projects: + - name: "title" + field: + element: "text" + label: "Title" + value: "" + - name: "description" + field: + element: "text" + label: "Description" + value: "" + - name: "category" + field: + element: "text" + label: "Project" + value: "" + _posts: + - name: "subtitle" + field: + element: "text" + label: "Sub-Title (Short Description)" + value: "" + - name: "layout" + field: + element: "select" + label: "Choose Layout" + placeholder: "Layouts" + options: + - name: "Post" + value: "post" + - name: "Slide" + value: "slide" + - name: "Projector" + value: "projector" + - name: "Notebook" + value: "notebook" + - name: "Ply Surface" + value: "plysurface" + - name: "title" + field: + element: "text" + label: "Title" + value: "" + - name: "author" + field: + element: "text" + label: "Author" + value: "" + - name: "tags" + field: + element: "text" + label: "Tags (seperate with whitespace)" + value: "" + - name: "category" + field: + element: "text" + label: "Project" + value: "" + - name: "vertical" + field: + element: "hidden" + value:
+ - name: "theme" + field: + element: "select" + label: "Theme (Slide)" + placeholder: "Theme (Slide)" + options: + - name: "Beige" + value: "beige" + - name: "Blood" + value: "blood" + - name: "Moon" + value: "moon" + - name: "Night" + value: "night" + - name: "Sky" + value: "sky" + - name: "Solarized" + value: "solarized" + - name: "trans" + field: + element: "select" + label: "Transition (Slide)" + placeholder: "Transition (Slide)" + options: + - name: "Cube" + value: "cube" + - name: "Page" + value: "page" + - name: "Concave" + value: "concave" + - name: "Linear" + value: "linear" + - name: "Fade" + value: "fade" + - name: "None" + value: "none" + - name: "visualworkflow" + field: + element: "checkbox" + label: "Visual Workflow Chart (Some Layouts)" + value: "true" diff --git a/website/jekyll_site/_data/intro.json b/website/jekyll_site/_data/intro.json new file mode 100644 index 0000000..6cd3db6 --- /dev/null +++ b/website/jekyll_site/_data/intro.json @@ -0,0 +1,585 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Meet PyMKS\n", + "\n", + "In this short introduction, we will demonstrate the functionality of PyMKS to compute 2-point statistics in order to objectively quantify microstructures, predict effective properties using homogenization and predict local properties using localization. If you would like more technical details amount any of these methods please see the [theory section](THEORY.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quantify Microstructures using 2-Point Statistics\n", + "\n", + "Lets make two dual phase microstructures with different morphologies." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from pymks.datasets import make_microstructure\n", + "\n", + "X_1 = make_microstructure(n_samples=1, grain_size=(25, 25))\n", + "X_2 = make_microstructure(n_samples=1, grain_size=(15, 95))\n", + "\n", + "X = np.concatenate((X_1, X_2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Throughout PyMKS `X` is used to represent microstructures. Now that we have made the two microstructures, lets take a look at them." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnEAAAEaCAYAAAB+VgE8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3V1oZGcdx/Ffk+2YnaSt7MValzRkGBmL0yG6W4VUxKbS\ni6KlCnZwtyhxbL2yF70p4rYbI9ulvuBNe5mmoV2hjLQWEUQCRXy5sFKxRLwY8rIvoUUKW1mYDNnu\nZrxY5niye86ceTlnzvM88/1AYDInOXPmvDzzn///PM9zS7PZbAoAAABWGUl7AwAAANA9gjgAAAAL\nEcQBAABYiCAOAADAQgRxAAAAFiKIAwAAsNCBtDcAAABgmHz44Yd6/vnntb29rVdffVUjI//PqV26\ndEkvvPCCrl69qnK5rFKpFLoeMnEAAAADNDExoVOnTqlQKNy07M0339Tx48d18uRJvfHGG23XE5mJ\ne++993rfSkP4xzOenJxMcUvic8stt3iPt7e3U9wSu7XOjbTPi0Eez3bvudftOHLkSN/b5X/tTv7G\nlPPexPalm/3UyzVg4nHolCvHS2p/Ddt2XG4U9D5dmpvg1ltv1a233hq47OLFi15wNzY2pkajoYMH\nDwb+rdPl1NYBv+uuu1Leknj4L/SLFy+muCXuCGrw/A2FK+eOnyuNPGC71rVIew6/vb0973E2m1W9\nXh/OIA4AACAN1WrVe1wsFlUsFjv6P//9cY1GQxMTE6F/SxAHAACcNuhbw44cOaJyudzT/05NTalW\nq2lqakqNRkNjY2OhfzsUQZxLdfSWTu4fQueGcX8O43sGTMS1mDzT4oBr167pzJkzOnfunJ577jkd\nP35cf/rTn1SpVPTII4/oxRdf1JUrVyIDwaEI4gAAwPAyLYgbHR3Vs88+u++5T33qU5KkQ4cO6dSp\nUx2thyAOuEFQBxIXOzgAsA/tU29MC+LiQhAHAACc5moQx2C/AAAAFnIuE+fyGF9h740xhpLDDccY\npNb5duHCBe+5btqxXsYdC/of19pOV9E+dc7VTJxzQRwAAIAfQRwAAICFCOIslORB62YKrCRKvK6e\nkJ3od3+aOH1Z0HsyZduQrKDzMewc7fR876XMRmkOLnP1M9PpIA4AAIAgDpKCbwKO+gbrXx406Xgv\nmSUyN9f1cmH6/2dycjLOzYmFq40NogW1Jd20L8PYBnSr3ywnkpNkx0RX21WCOAAA4DSCOAAAAAsR\nxA2xqBuPe11X0HOtcms3aeW9vb2b/s7Fskprn8SZZnf1woY7uplmaVCdE1y5nYPOHOaKu212ta1n\nxgYAAAALkYkDAABOczUT51wQ103podN1ddMTtV+t9ffyPlplVSm416UrvdhcvRhbgsrGNh8v3KzX\na3Fk5HrxJKiXe1pcvx5t4ErbniRXz1PngjgAAAA/gjgLBX1rjeowEGcnhri03kc3YxoFnbBJj4+W\nxLfBJMcNMp2rjQ72Y3YF9CqNapGtXG1PnQ7iAAAACOIAAAAsZGIQt7Kyoq2tLeVyOc3Pz3vPnzt3\nTi+99JJGRkZ0/Phx3X333aHrMC6I66XcGcX/P1FTYIX9nwlaZVWp/+likjihg8q1vRyvsHPAxIsw\nSWH7gRuXAfiZ9lllItM+PzY3N7W7u6vFxUUtLS1pY2ND+XxeklStVvXUU09pYmJCv/jFL/SjH/0o\ndD2MEwcAAJzWbDYH+hNlfX1dMzMzkqRSqaRareYtq9frOnTokDKZjHZ3d3XlypXQ9RDEAQAAp5kW\nxNXrdY2NjUmSstms6vW6t+y2227TxYsXdfnyZV24cEE7Ozuh60m1nBpVOo3qYdnvdC82p6BN3/bW\ncYoqCfZyDgxSUO+vIEn3ok17PwAAulOtVr3HxWJRxWLR+z2bzarRaEiSdnZ2ND4+7i177LHHtLy8\nrLGxMU1PT+v2228PfQ3j7okDAACIUxpfhMvlcuiyQqGg1dVVzc7Oam1tTXNzc96yT37ykzp58qQu\nX76sV155Zd/98DeKDOI6HU+s34xFLzt4mLMTcc5MMShRM0qYfDyjMp9RHWb6zdSZMuF40HacOHFC\nZ8+eHfi2AECnTPt8yeVyymQyWlhY0PT0tPL5vJaXl1WpVPTWW2/pz3/+szKZjB5//PG26yETBwAA\nnGZaECdp37AiklSpVCRJDzzwgB544IGO1kEQBwAAnGZiEBeHyCCu0zfe+rtupnPqd6cyUfh1pndy\nCGLyBdXv9GFBxyOo3NpribVVlh7keR90rZl8DAHAz9X2ikwcAABwGkFch9LYUa4eHJtFdXQJyuyY\nKIksZ2udYRm/TveJv6NIElm5oEwh11p/Ou0AZpN2FRH/+TI1NXXTcmBQXG27yMQBAACnEcQBAABY\niCDOYEwUboag8mBYOTKorJRmabXfzgxxvn4vgkqrvbyPOMdxdF0/twTY2BkpSjfjQLaWp33dAbZz\nIogDAAAI4+oXUYI4AADgNII4S0Sl9IOQ0u9d2L7rtFzknxPOlOnDbC91xdVYudroxY39dLOofdJa\nzq0wGBRXr1PngjgAAAA/gjgLdTvbhGTPt8F+J1RPQr8ZLNszYP0Iymh2c1zJJsN2cXXOAYIQxAEA\nAFiIIA4AAMBCBHFDwuQDzRhew6HTsnK/nUpsZOOtD+heq7TKMUZcXP2cJIgDAABOczWIG4n+EwAA\nAJiGTJyl0v5WETRtlo1MfB+tbdre3u76f4ZJ2tcAkhfUY1WK73rtt1c47OFqe0EQBwAAnGZiELey\nsqKtrS3lcjnNz897z9dqNb3yyitqNpu6//779eCDD4augyDOAv1MtJ002zNArX07NTXlPWdKVs72\nfQu7hHWUMaXdSfpDmOvNbaYFcZubm9rd3dXi4qKWlpa0sbGhfD4vSfrtb3+rp556SocOHdIzzzzT\nNojjnjgAAOC0ZrM50J8o6+vrmpmZkSSVSiXVajVv2cTEhOr1uj766CN97GMfa7seMnEAAMBppmXi\n6vW6Dh8+LEnKZrP7st8PPfSQzpw5o9HRUT366KNt10MQZ6ig8bBMOwnjYMr0YS7uW8Svl/PVxinR\nKC3CNWm08dVq1XtcLBZVLBa937PZrBqNhiRpZ2dH4+Pj3rKzZ8/qzJkzuv3223X69Gndd999ymQy\nga9BEAcAAJyWRhBXLpdDlxUKBa2urmp2dlZra2uam5vzll25ckXZbFYHDhzQLbfcomvXroWuhyAO\nAAA4zbRqSy6XUyaT0cLCgqanp5XP57W8vKxKpaJHHnlEP/nJTzQyMqLPfe5zOnjwYOh6COIME9QT\n1bSTLynD8j7hhl7OV8qUAFr8w4pIUqVSkSQdPXpUR48e7WgdBHEAAMBpriYJCOIMZfoJF5Qx7Oam\nbdPGvmNi9etMHysMwyvoGh226xO9M/0ztVcEcQAAwGkEcQAAABYiiENiTBkrrRdRF0bUezPxwgqa\ndHsYyzam34RPeW14mdhuwGyunjMEcQAAwGkEcRgI2040//ZOTk52/Le2sHGb4xLUycHUTPEwHycA\n0VxtIwjiAACA0wjiAAAALEQQ16dWaSbsxuM0xw1Le4Jqm8pW7bh4kfQ7Hp4rTO/kAADDiEwcAABw\nmotJBokgDgAAOI4gLiaml2XS3r40Xj+o1G3atFhpCxo7ThrO0qqJKHsDaIcgDgAAwEIEcT2I6jCQ\n9kwFUZ0t0hC0TUnsm6Bjk3YW0hbDOKPDoM7LfrnaUAPoj6ttA5k4AADgNII4AAAACxHERei0NBk2\nNVOSOziqrGtiGXFkZMR7nPTYca33n3Z520at0uqw3FDvPy+3t7dT3BLzmXi7hivoyIJuEcQBAAAg\nFisrK9ra2lIul9P8/Py+58+fPy9JOnfunF5++eXQdRDEAQAAp5mWidvc3NTu7q4WFxe1tLSkjY0N\n5fN5SfICunPnzul3v/td2/VEBnE3lvLCSpOdjis2yB0ZVM4wsXQapVXC8pev+i19+v8/qMRt2glv\numEcR87EaynsukjzOJi4n1xBOwVbra+va2ZmRpJUKpVUq9W8IK7lb3/7m77whS+0Xc9I26UAAACW\nazabA/2JUq/XNTY2JknKZrOq1+s3/c27776rz372s23XE5mJuzELFJUBSuObkY0dF3rhfx9B77nX\nzgh8m40X+9MMSRyHOK87APuFfZbHcY2l0S5Xq1XvcbFYVLFY9H7PZrNqNBqSpJ2dHY2Pj+/73/ff\nf1+HDh1SJpNp+xrcEwcAAJyWRhBXLpdDlxUKBa2urmp2dlZra2uam5vbt/ztt9+OLKVKlFMBAIDj\nTCun5nI5ZTIZLSwsaHR0VPl8XsvLy97yf/zjH7r33nsj1xOZiQsb1621U9LkSseFfrVK3qZPiTQs\ngm45cKWDQ9B7O3HihM6ePZvWJqVmGNsaYFDivr7SjleC+IcVkaRKpeI9Xlxc7GgdlFMBAIDTTAzi\n4kAQBwAAnDa0QZxpbzyo9wpljeuCpuqSzC6tRvUstn0qsCSun07HZEyaaW2DS/z7dmpqynvsSlne\nREG356R9jSE+rrZXZOIAAIDTCOIMRAYunOn7ptNOKcM8LpeJYzJi8IJmAyEjlxzT207Az+ogDgAA\nIIqrX3oJ4gAAgNMI4lIUdfM7bmZLGbKb0oUtZY5+z9egjguuNkA3Ctt3pnTm8EvjRvhhOQ+AuLl6\n7VgRxAEAAPSKIM4QtmRjTOLKPrNxCIBO931QJwZXG51O+fddL8d+UDNnxHl9mZhxBNLgv662t7f7\nXp+r7al1QRwAAEA3COIAAAAsRBCXgqASyiC1K23Q2SI9JpaH/dt04cIF7/Hk5GTX63K1sYnSScmk\n144w/mMSt7C2wD/TQreG9RwAgsTR5rt6TRkdxAEAAPTL1SBuJPpPAAAAYJrITJwJY4wlXT7rZXoj\n/3P+klnaJeAW2yeON1lQ+SxswnLXvv0leRtBktf5oErwIyP//16cdhvQD1vGmQQ65Vpb3EI5FQAA\nOG1og7jWN8tBfRtLusNAEpOK+/8nqDNE2t/IXT15B6HTzGqc2beo10xjLLGgbTKxg4lJ+hkj0CQc\nZ7jA1c9BMnEAAMBpJgZxKysr2traUi6X0/z8vPf8lStX9NJLL+mDDz7QXXfdpe9+97uh6yCIAwAA\nTjMtiNvc3NTu7q4WFxe1tLSkjY0N5fN5SdLvf/97felLX9I999wTuZ6Og7gby6pSvKn/JMs1YeWK\nJA/q3t5e4GsmWVo1vSxjM/+5OKgpssLO/9bz/nHVkjj2Qbc2pF1aC7vdwpXz3bQPGsAVpl1b6+vr\nmpmZkSSVSiXVajUviPv3v/+tDz/8UK+//rq++tWv6t577w1dD0OMAAAApzWbzYH+RKnX6xobG5Mk\nZbNZ1et1b9l//vMfHT16VD/84Q/1+uuv70sK3YhyKgAAcFoambhqteo9LhaLKhaL3u/ZbFaNRkOS\ntLOzo/Hx8X3LPvOZz+jAgQO688479d///leHDh0KfI2ug7iwcZB6KWckXa4J6sWXxoH0R9GtMeX6\n7YWbRC9b3Ky1H8Omz0pzP/vPobjG9Qo7L9MuowYxcZv8gtqf1jb7pwEzvRQcdKuL6dsMmKBcLocu\nKxQKWl1d1ezsrNbW1jQ3N7dv2fnz55XL5fTBBx/ojjvuCF0P5VQAAOA008qpuVxOmUxGCwsLGh0d\nVT6f1/LysiTp61//ul577TU9++yz+spXvqLR0dHQ9fRVTg3KyvX6DS3Jb9UmZaVa2xI240M/6zRd\n0mMAJsmWfSzF1wnJ9EyXLaLGkbTl3OJ8gM1MvM78w4pIUqVSkSR9/OMf18mTJztaB/fEAQAAp5kY\nxMWBIA4AADiNIC5CpyUcm0tqSXH15Gqnl9JMGtNN2SzOTkgm8p9D/jHzbGDjNe/6GH1wm43XXCfI\nxAEAAKcRxAEAAFiIIK5D3ZRwku7txPhG6UuifO7ixZj0bQZx9iQ3kSk9J4dl6jtT9ncSKBu7ycXP\nDYlMHAAAcBxBXA/83/7TvPHY5W+NpgrKgnIcOpP0foprHDm0l8SHRlDnnjQ6iMU1Q4jpaLNgOjJx\nAADAaWTiAAAALEQQF5OpqSnv8aDKANyomh7KEeHSHjORY2Mvkz6Q0jiPgm7XANox6ZqJE5k4AADg\nNIK4mOzt7XmP07g5l+wDTJRmNkOyb8YDQKI9R+cI4gAAACxEEAcAAGAhgrgeRI1eHlRa5UZVuM7E\nm7IpSwFwGUEcAACAhVwN4kai/wQAAACmiT0TF1ZCjYqCBxUlD8t0MTAfJUwAGAwTM3ErKyva2tpS\nLpfT/Py893y1WtXf//53TUxM6NixY/ra174Wug7KqQAAwGmmBXGbm5va3d3V4uKilpaWtLGxoXw+\nL+n6F/zvfOc7KpVKkeuJLYgLmpjZtJ12IzIh5ovqHAMgXUEddbhWB8vfTrZmRTKp45QJTItH1tfX\nNTMzI0kqlUqq1WpeECdJv/rVrzQ+Pq5vf/vbmp6eDl0P98QBAACnNZvNgf5EqdfrGhsbkyRls1nV\n63Vv2UMPPaTnn39eTzzxhF5++eW266GcCgAAnJZGJq5arXqPi8WiisWi93s2m1Wj0ZAk7ezsaHx8\n3Fs2MTEhSbrzzjsjX6OvIC6o1GVayhLu4NwCzOXK7Sm238LRGn81jWktTZbG50e5XA5dVigUtLq6\nqtnZWa2trWlubs5b1mg0dPDgQV2+fFnXrl1r+xpk4gAAgNNMSwLkcjllMhktLCxoenpa+Xxey8vL\nqlQqevXVV3Xx4kU1m0099thjbddDEAcAAJxmWhAnad+wIpJUqVQkSd///vc7XkfsvVO7ETRmW9KS\nTpVHTakU1IvXRUHvk5Q+AJuY+MHfKZu3PQmu7g96pwIAAFho4OXUsOxbEjfFRmW94orMg95T2PsZ\ntjGVetnHtt9YHIUsJYCkhbWjw9rWuJqJ4544AADgNII4AAAACxHE9SmojNhvCbXTTgJJHLx+y8Ij\nI/+/HdHl0qp/309OTnqPg84HG6du60drPCeJcgeA5LjcjnbK1X1AJg4AADiNIA4AAMBCBHEB/KXD\n7e3trv+nU1G9FdM+OP2Whf2l1U73YxQTe3j6t6n12F9iDfq7YRFUWqWsCgyOy2N4Bn0eDFv74urn\nCpk4AADgNIK4CIOa/NjVA9ES134M6nhh4jdM149nL9gnQHpcv/5cf39hXH3fzNgAAABgIcqpAADA\naa5m4qwI4sLGZDOxPGiiVscJ9p25ws5xANdxjaAfBHEAAAAWIogzRNBMB2SVOjOozifoD8cJaC+u\na8TEoZiQDII4AAAACxHEAQAAWIggzkDcsA+bcaM2YA5XP+RvFDQzxTC0PyYe35WVFW1tbSmXy2l+\nfn7fsmazqaeffloPPfSQHnjggdB1ME4cAABwWrPZHOhPlM3NTe3u7mpxcVFXr17VxsbGvuXvvPOO\n7rjjjsj1EMQBAACnmRbEra+va2ZmRpJUKpVUq9X2Lf/LX/6i++67L3I9VpdTW4J6rErJlFZbJTAb\n08+Mt2cueqSiG2G9Km1sl5AOE8uLw6Rer+vw4cOSpGw2u+/afffdd1UsFjUyMqK9vb2263EiiAMA\nADBJtVr1HheLRRWLRe/3bDarRqMhSdrZ2dH4+Li37K233tIPfvAD/fWvf418DeeCuEGNI2d75sT2\n7beZzdlcmCftjErQjfKAadK4TsrlcuiyQqGg1dVVzc7Oam1tTXNzc96y999/Xz//+c916dIlNZtN\n3X333Tpy5EjgepwL4gAAAPzS/rJzo1wup0wmo4WFBU1PTyufz2t5eVmVSkU/+9nPJEl//OMftbe3\nFxrASQRxAADAcaYFcZJuGlakUqns+/3++++PXIfTQVxc48i5OJ5X0HuiHDJYlLThEhM/JIMw1dZw\nsuX87JbTQRwAAABBHAAAgIUI4izWb9nKf/CnpqYkuVNWlZIp67XWeeHCBe+5YS5duFiSx3Vpl+eC\nXp9zrDOufrDjZq4e66EI4gAAwPAiiIMkeaMnuzRKetC4ZVEZhU7HOvNnoLa3t73Hro0t1UumbXJy\nMqnNiQXZw+6l/UHhYvuEZDDrhxsI4gAAgNPS/oKVFII4AADgNII4CyVZsvNPSutKKto/ZZm/9NlO\nN50i/H/bSwk3Td2UFqP2Seu8NL1R8W9fq/RLidUOpp9bneJ8GwxXzpd2XH2PTgdxAAAABHEAAAAW\nIoizWNIHL6i0anvqf1BTQvlLuCZO/xVU9h3G6bJcbQBd5WIpfBivO8TH1TZsKII4AAAwvAjiLJH2\n6OmM09Q7U75pB2UsTNm2tAVleE6cOKGzZ8+mtUmI4OqHV7dcG5sS3XH1OnAuiAMAAPBzNYgbif4T\nAAAAmMbpTFyakbeL48glLc2x48Ju+qaMGs7Vb7aIlvZtK/3gvB1Orh53p4M4AAAAgjiDmf6t0MUh\nSJKUdvYridc3/RwFeuXqhyPcYuJ5urKyoq2tLeVyOc3Pz3vPv/nmm/rnP/+pK1eu6Jvf/KaOHj0a\nug7uiQMAAE5rNpsD/Ymyubmp3d1dLS4u6urVq9rY2PCWPfzww/rxj3+sU6dO6Te/+U3b9RDEAQAA\np5kWxK2vr2tmZkaSVCqVVKvVvGWjo6OSpCtXrmh8fLztepwop/qZmDL1a5VWW2NspcX20dttZvo5\nCqQtqJOTi4LGrnP9PafFtHa3Xq/r8OHDkqRsNnvTcV9aWtLbb7+tJ598su16nAviAAAA/NII4qrV\nqve4WCyqWCx6v2ezWTUaDUnSzs7OTRm3xx9/XCdOnNDp06dVKpVCX4MgDgAAOC2NIK5cLocuKxQK\nWl1d1ezsrNbW1jQ3N+ct++ijj3Trrbcqk8lEbrcTQVxYadDkXoBpp3aDekuSxo8fU/0AvUu7p/qg\n8HmQvLT38Y1yuZwymYwWFhY0PT2tfD6v5eVlVSoVrays6L333tNHH32khx9+uO16nAjiAAAAbOIf\nVkSSKpWKJOmJJ57oeB3OBXHD8s0tTqZ9Q3ER+xiADVxtq1x9X84FcQAAAH4EcQAAABYiiIOzGKsI\nQNqSGLuS6e7QQhAHAABgIYI4AAAACxHEwXmtKcGkdMYKSnNMtbCySy/vnxIO0JmwEmoSowy4+iGO\nzrh6/AniAACA0wjiMFRaWbk0OjukfbHF+fppv5d2kriRHObqN9ucdIaZMT6RJJPb4n6MpL0BAAAA\n6B6ZOAAA4DRXM3EEcWgrqLODxDhOtokqnZpQymo2m5qamvJ+p8SbnH4/0Pr9/9b5xjHGoBDEAQAA\nWIggDgAAwEIEcRh6/Y4jF1U6NeUiC9pOl8o+JpROwyRdvodZTD4X4RZTPl/iRhAHAACcRhBnMG6O\nH7xWxmRycrKn/7flgrJlO11w47XLvncL4xIiTa62J04EcQAAAGEI4gAAACxkYhC3srKira0t5XI5\nzc/Pe8//+te/1rvvvitJ+ta3vqV77rkndB3GBXH9lkZNPFAuc31/t96fjTfZ21a+uvFccr2DyTCj\nQwOG3ebmpnZ3d7W4uKilpSVtbGwon89Lkr785S/r0Ucf1c7Ojn7605+2DeKYdgsAADit2WwO9CfK\n+vq6ZmZmJEmlUkm1Ws1bdvjwYUnSgQMHIr/wGJeJAwAAiFMaVaNqteo9LhaLKhaL3u/1et0L1rLZ\nbGCVoVqt6sEHH2z7GokGcZRG4YpuzsWgMmbavaZtL1/RFqQn6JYCwDZptCHlcjl0WTabVaPRkCTt\n7OxofHx83/K3335b9XpdX/ziF9u+BuVUAADgNNPKqYVCQWtra5KktbU1FQoFb9n58+f1hz/8Qd/7\n3vci1xOZiYvrWxjfpGGzsKxy1I32tmfAgJZe2nDbOtfAXabFILlcTplMRgsLC5qenlY+n9fy8rIq\nlYrOnj2ry5cv67nnntPBgwf19NNPh66He+IAAIDTTAviJO0bVkSSKpWKJOnkyZMdr4MgDgAAOM3E\nIC4OkUFcq3Tk6g4AuhU0SbtJpaJWCcukbQK4tQBpcjWGoWMDAACAhTru2ADgZq2s3OTkZKrbEXQD\neRKZj6AOHidOnNDZs2djf62g17Vx5gwb9Ts8FGAaV2MZ7okDAABOI4gDAACwEEEcgFAmNRBJllH9\npbU03rNJ+9k1YSVU9jlc4Op5TBAHAACcRhAHAABgIYI4AEZJY0ojVxtC7MdxhmtcPacJ4gAAgNMI\n4gAYIWhGhkGNCQd0gllDYBpXgzhmbAAAALAQmTgAAOA0VzNxBHFDpJsb4YPGBUN6BjWtVhhXG0Ak\ne60z6b0ZgtoP/zU9NTV103LXuNqGEcQBAACnEcQBAABYiCAOVokqnUaVOVrLt7e3veforTgYUT37\nKFEhCa5+yLmsXSk87DOg9XzUcteYeH6vrKxoa2tLuVxO8/Pz3vNvvfWW3njjDX3605/Wk08+2XYd\n9E4FAABOazabA/2Jsrm5qd3dXS0uLurq1ava2Njwln3+85/XM88809H7MjoT1/pGcOHCBe85MkDd\n6+eblf9/g765cTw608vsCq5+IwYQr6igodPKi8tMy8Str69rZmZGklQqlVSr1ZTP5yVJt912mxqN\nRkfrIRMHAACcZlomrl6va2xsTJKUzWZVr9d7el9GZ+IAAAD6lUYmrlqteo+LxaKKxaL3ezab9bJt\nOzs7Gh8f3/e/nWZHrQjiRkb+nzD0l6Io5aWndUw4Hu0NaoosIEovJX0AvSuXy6HLCoWCVldXNTs7\nq7W1Nc3Nze1b3mnQSTkVAAA4zbRyai6XUyaT0cLCgkZHR5XP57W8vCxJeuedd/Tiiy/qX//6l375\ny1+2XY8VmTgAAACX+IcVkaRKpSJJOnbsmI4dO9bROqwL4oJKq5Tx0uM/HkFjyg3jsUl7iiwgiv98\njOteIcq1iFPQuKR7e3uxrM8l1gVxAAAA3SCIM1ArC+TPAPkNczYoDUFjyg17xwcycBhGnPeIUxwB\nGEEcAACAhQjiAAAALEQQZ7Cw1D2TuKePMf4AAGkjiAMAALAQQdyAJNFNnUnczcDwMOYzPVMdtn0M\naZGeoE5MgGlcDeKYsQEAAMBCxmXiAAAA4uRqJs6YIC6NicKZxD09Lu/7oJKfSaWmTsdPNL3RM337\nho2JY8M7ZB2hAAACrklEQVS5ePuM6bc8mMrV9sKYIA4AACAJBHEAAAAWIoiLSVTv0zRS8iaWAYaF\n6z1WWxM2D7InpSvlUsSD3qPXudjOcw13ztV9RSYOAAA4bWiDuLDJ5eOQ9jejTjMWtkhijL1Bcrmz\nQysjJyXT2SHoZuckGq20z7G0X99mabe3QJqGNogDAACwGUEcAACAhYY2iBuGFLyLB9fm4xbU2UFy\nr7SaVGeHJMuogxzHMUrarw+YiI4s9lhZWdHW1pZyuZzm5+e95y9duqQXXnhBV69eVblcVqlUCl0H\n024BAACnNZvNgf5E2dzc1O7urhYXF3X16lVtbGx4y958800dP35cJ0+e1BtvvNF2PQRxAADAaaYF\ncevr65qZmZEklUol1Wo1b9nFixdVKBQ0NjamsbExNRqN0PUM3T1xLk5Z4nL63F9aDeopbfPxDOqx\nKpl9HClhAnbgWt3PtNum6vW6Dh8+LEnKZrP72n3/Z0M2m1W9XtfBgwcD1zN0QRwAABgu/sBoUKrV\nqve4WCyqWCx6v2ezWS/DtrOzo/HxcW+ZP3nRaDQ0MTER+hpDEcSFZWtMi8y7ETReluvfvILen/85\nmzN1/Z6LQfuh3/fOmGwIw7kBRCuXy6HLCoWCVldXNTs7q7W1Nc3NzXnLpqamVKvVNDU1pUajobGx\nsdD1cE8cAADAAOVyOWUyGS0sLGh0dFT5fF7Ly8uSpEceeUSvvfaaTp8+rW984xtt1zMUmTi/T3zi\nE95jVzJx6Iz/2Jsm6ePZy3sf9DnWyTaaft6beI51us+62XbTj0M7Nh+jGwW9F5uPTRgTj1kc/MOK\nSFKlUpEkHTp0SKdOnepoHbc0bY5kAAAAhhTlVAAAAAsRxAEAAFiIIA4AAMBCBHEAAAAWIogDAACw\nEEEcAACAhQjiAAAALPQ/RoghqcR7pHsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pymks.tools import draw_microstructures\n", + "\n", + "draw_microstructures(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can compute the 2-point statistics for these two periodic microstructures using the `correlate` function from `pymks.stats`. This function computes all of the autocorrelations and cross-correlation(s) for a microstructure. Before we compute the 2-point statistics, we will discretize them using the `PrimitiveBasis` function." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from pymks import PrimitiveBasis\n", + "from pymks.stats import correlate\n", + "\n", + "prim_basis = PrimitiveBasis(n_states=2, domain=[0, 1])\n", + "X_ = prim_basis.discretize(X)\n", + "X_corr = correlate(X_, periodic_axes=[0, 1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's take a look at the two autocorrelations and the cross-correlation for these two microstructures." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(101, 101, 3)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABDQAAAEsCAYAAAA8U+MrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmYFdW1/v+ec7rpZrBBBEQCilFjixkwcUDB8aeQaPRK\nBAyoEZEYh1yTq8YbebwgmiiOaBzwMkSNEyDE4E1yNfmiCE6XiFPogJDQCgrIoKAt9Hjq98c5u2pX\n1apVu+rU6T4H1ud5eLqp2rVr17Sreu93vStlWZYFQRAEQRAEQRAEQRCEMiLd0Q0QBEEQBEEQBEEQ\nBEGIigxoCIIgCIIgCIIgCIJQdsiAhiAIgiAIgiAIgiAIZYcMaAiCIAiCIAiCIAiCUHbIgIYgCIIg\nCIIgCIIgCGWHDGgIgiAIgiAIgiAIglB2yICGIAiCIAiCIAiCIAhlhwxoCEKBfPzxx/jHP/7R0c0Q\nBEEQIH2yIAhCqSH9slBMKjq6AXsKb7zxBl544QV88MEHaG5uRq9evfCd73wHZ599Nvbdd98ObduD\nDz6Ijz76CLfddpvxNq+99hqam5txyimnFFzXns6iRYuwzz77YNCgQR3dFEEQ8kifvPcifbIglCbS\nL++9SL8sFBMZ0EiA3/3ud/jzn/+MU089FWeffTY6d+6MDRs24K9//Su2bNmC6667rqObGJnXX38d\nDQ0Nvk561KhRaGlpabd2rFy5Ek888QSqqqowderUgupqbGzEE088gX79+mHz5s04/PDDMXTo0ILb\nU1dXhxtvvLGgtiXVPkEQpE8uJkn2yQDQ2tqK3//+9+jbty9OOumkRNqTVJ+cRPsEQcgh/XLx2Ju+\nlQHplwU/MqBRIG+++Sb+9Kc/4YorrnB1aEcccQROP/10vPfee7HrzmazyGazqKioMFreHuy///7t\nur+vf/3rOPLIIxM5VtVBn3nmmchms/iP//gPDBgwAAceeGDs9mzcuBF9+/bFAQccUBLtE4S9HemT\ni0uSffKSJUuwfv16rFixAj/4wQ8SaU+SfXIS7RMEQfrlYrM3fStLvyxQyIBGgfzpT3/CV7/6Vd/o\nLACk02kMHjzY/v9rr72GhQsXYvPmzaipqcHJJ5+MMWPGIJ3OWZkoidrIkSMxd+5cbNq0CVOmTMHi\nxYvJ5bW1tVi1ahXmzp2LdevWoVOnTjj22GNx8cUXo7q6OrDNa9aswbPPPot169Zh165dOOCAA3DO\nOedg2LBhdjuWL18OADj//PMBAKNHj8aoUaNIGZ3pcY0dOxa/+93v8Mknn+Dggw/GZZddhv79+4ee\n49WrV2PUqFGh5Tiamprw8ssv4+677wbgXJtXXnkF48aNi1SX3p6///3vGD58eEFtS7p9grA3I31y\nefTJAOxrVF9fX1A9xeiTgeTaJwh7O9Ivl0e/XOrfyoD0ywKNDGgUQGtrK9asWYOzzz47tOy7776L\n++67DyeffDJ+9KMf4cMPP8S8efPwxRdf4Mc//jEAIJVKYcuWLXjyyScxevRo9OjRA3369Alcvnr1\natxyyy049thjce211+Lzzz/HU089hS+//BLXXHNNYFu2bt2Kww8/HGeccQaqqqqwevVqPPTQQ0il\nUhg6dChGjRqF7du3Y9euXZg4cSIAoGfPngUd17Zt2/DEE0/gvPPOQ2VlJR5//HFMnz7d7jSDaGpq\nwgcffIDDDz889BxzbNy4Ec3Nzejdu7e9bL/99sPf/va3SPV427N161acccYZBbUtyfYJwt6M9Mnl\n0ycnRbH6ZEEQkkH65fLpl0v9W1kQgpABjQJoaGhAa2srevXqFVp2/vz5OPLII3HllVcCAL71rW8B\nAJ566imcd9556NmzJyzLQkNDAyZPnoyDDjrI3jZo+b333ova2lr8/Oc/t5f17NkTt9xyCzZs2IAB\nAwaQbdFj4SzLQm1tLbZv347Fixdj6NCh2H///dG1a1dYloVDDz00seO65ZZb0LdvX3u/d911FzZu\n3Ih+/foF1r927VoccMAB6NKlC9uOMHbu3ImKigqkUil7WXV1NXbs2BGpHm97LrzwwoLalXT7BGFv\nRvrk8umTk6JYfbIgCMkg/XL59Mul/q0sCEHIgEYC6A8+RTabRX19PcaPH+9afvzxx+PJJ5/EmjVr\nMGTIEAC5TlbviBXe5U1NTVi7di0uueQStLW12ctra2uRyWSwbt26wE66oaEB8+fPx5tvvonPPvsM\n2WzW3kcUohxXnz597A4aAL7yla8AAD799FO2k169ejVqa2t9yxsbG/HII4/Asiy2jf3798c555yD\nhoYGdOrUybWuoqICu3btYrc3bU8hbQOQWPsEQZA+uRz65KQoVp8sCEKySL8cflwd3S+X+reyIAQh\nAxoF0K1bN1RUVGDbtm1suc8//xxtbW3o0aOHa3n37t0B5DpNhbdM0PIvv/wS2WwWc+bMwZw5c3zl\nt2/fHtiehx56CGvXrsWoUaPQv39/dO7cGX/5y18iS8qiHJd31FgZBTU3N7P7eP/993HyySf7lldX\nV+OKK64wbisVJ9nU1OTruMMIak8hbUuyfYKwNyN9cvn0yUlRrD5ZEIRkkH65fPrlUv9WFoQgZECj\nACoqKlBbW4t33nnHNgSiqKmpQSaTwc6dO13L1f+7desWed+q0xszZgyOOuoo3/qgfN7Nzc146623\nMHHiRJx++un2cjXyHIViHJdONpvF2rVr8ZOf/KSgeoDc+WhsbHQta2pqMpJAFqM9XpJonyDs7Uif\nXD59chKUWnsEQfAj/XL59Mul/q0sCEHIgEaBnHnmmbjjjjvw8ssv+0Yjs9ks3nvvPQwePBhf/epX\n8frrr7tMcV5//XWkUil87Wtfi7zf6upqfO1rX8PHH3+M8847z3i71tZWWJblSu20e/duvPnmm7bT\nMpB7AYWNCKfT6cSPS+fDDz9E586d0atXL9TV1eHII4+010WVqh100EHo1KkTPv30U1suuGnTJhxy\nyCGJtEcnjowuifYJgiB9crn0yUlQzD5ZEITkkH65PPrlUv9WFoQgZECjQL7zne/grLPOwsMPP4z3\n338fRx99NKqrq/Hxxx/jr3/9K/r06YPBgwdjzJgx+PWvf42HHnoIJ5xwAtavX4958+bh9NNPjxyP\np7jgggtwyy234IEHHsBxxx2Hzp07Y9u2bXjrrbcwduxYMt9zly5dcMghh2DBggXo3LkzUqkU/vCH\nP6Br166uGLmvfOUrePPNN/G3v/0NPXv2RM+ePcmR7GIcl2LTpk047LDD8Omnn/oMiaJK1SoqKnDM\nMcdg+fLl+O53v4vm5ma89957mDRpkl2mrq4ON998M6ZMmYJBgwZFak8hbTNtnyAI4UifXB59so5l\nWeRHbUf2ySbtEwTBDOmXy6NfLvVvZR3plwUdGdBIgB/96Ec4/PDD8fzzz+M3v/kNmpub0adPHxx9\n9NF2mqpvfvOb+NnPfobf//73eOWVV9C9e3ecffbZGDNmjF1PkGFS0PLa2lpMnToV8+fPxwMPPIBs\nNovevXtj8ODBdmwetf3VV1+NWbNm4YEHHkBNTQ1GjBiBpqYmvPDCC3aZESNG4IMPPsCMGTPw5Zdf\n2rm1vXUVclxhDBo0CK+88gpefPFFjBw5MlYdOuPHj8dvf/tbtLa2YuPGjbjoootcZlBNTU0A4Dp3\nxWxP1PYJgmCG9Mnl0Se/+uqrePvtt/HPf/4Tn332Gf75z3/i7LPPxv777w+g4/vksPYJgmCO9Mvl\n0S+X+rey9MsCRcqS4S1BAJBLq7V69WpMnjy5o5siCIKw1yN9siAIQmkh/bJQiqTDi7QfdXV1Hd2E\ndmVvO16gtI95zZo1+P73v594vaV8zMVibzzmPZG97TrubccLlPYxS5+cHHvjMe+J7I3XcW875lI/\n3mL0y6V+zMVgbzzmYhIp5GTJkiWYMWMGqqqq7GW//OUv7RiqhoYGzJgxA++99x5qamowduxYDBs2\nzLh+zjxmT2RvO16gtI/5xhtvLEq9pXzMxWJvPOaOQPrkZNnbjhco7WOWPjk59sZj7gikT06eve2Y\nS/14i9Evl/oxF4O98ZiLSWQPDRWLRjF79mxUVlZi9uzZqK+vx7Rp0zBw4ED079+/4IYKgiAIfqRP\nFgRBKB2kTxYEQWhfIg9oBFluNDY2Yvny5bjnnntQVVWF2tpaHH300Vi6dCnGjRtXcEMFQRAKxXR2\nLGyW7aKLLnIZeDU3N2P48OGYMGECAODvf/875syZg+3bt+PQQw/FVVddZedxv/XWW7F69Wp729bW\nVvTr1w933XVXrGOSPlkQhHIljmLh5ptvRl1dHZ5++mmk02m0trZi1qxZWLlyJRoaGrD//vtj3Lhx\nGDx4sL3N4sWLsWjRIuzYsQO1tbW44oor7GwUf/zjH/HCCy/g888/R6dOnXDUUUfhkksuQefOnWMd\nk/TJgiCUK1G+k59//nls2rQJXbp0wdChQzFu3Dg7rfH27dsxa9YsrFmzBhUVFRgyZAjGjx+PdDqN\njz76CA888AA++eQTWJaFAQMG4IILLkBtbS0A4LnnnsPLL7+Mbdu2YZ999sHw4cPDU/daEXjppZes\nCy+80JowYYJ19dVXWwsWLLDa2tosy7KsdevWWRdeeKGr/P/8z/9Y06ZNi7ILQRCEojF9+nRr+vTp\nVmNjo7Vq1Srr4osvtjZs2OAr99JLL1mTJ082qnP37t3WRRddZK1atcqyLMvauXOndfHFF1uvv/66\n1dLSYj3++OPWpEmTAre/6aabrAULFsQ6HumTBUEoZ0z7ZMXSpUutyZMnW2PGjLH7usbGRmv+/PnW\n1q1bLcuyrBUrVlg/+tGPrC1btliWZVkrV660Jk6caG3YsMFqaWmxZs2aZU2ZMsWuc/PmzdYXX3xh\nWZZlffHFF9bUqVOtJ554ItbxSJ8sCEI5Y9onv/DCC9aqVaus1tZWa/v27dZ//ud/Ws8++6y9/s47\n77QefPBBq6Wlxfrss8+sa6+91vrzn/9sWZZlffnll9Ynn3xiZbNZK5vNWn/+85+tiRMn2tsuWrTI\nqq+vt9ra2qyPP/7YuvLKK61XX32VbXckhcagQYNwzz33oHfv3li/fj3uvfdeZDIZnHvuuWhsbPSN\nZldXV6OxsdFXT11dncsMZcyYMch+tii8AYYpjVL50SFX+Qzhf8rVl83mfrZl7UWWvazNKdeWH4lX\nI/JZoryrXk95nUISzqhjUT/TKW2VWpYOLk+ht8fyt9s+vqxWzl6W9dfBtVtvW/73VIZoL3VtubYT\nx0C2m7seSV4Xap1+rdTxuc5Hfn1FRluWdpfXSRP7Iu47y3t81PWmMHgOs1YGFT2/j/nz59vLxowZ\ngy+vPj1027h0/c3/Y9dHnR2zDK/7G2+8ge7du9sjy8uXL8eAAQMwZMgQAMDo0aNx6aWXYuPGjejX\nr59r2y1btmDVqlW46qqrjPblpZh98pw5v4jVJkVWe76y+WeupcXpO9X5zRL9pNo2rd3LatS/Uyfn\ntVWRfyYqtGcjk8n9XlmZ8ZVTdaSJZyStPUtU+rwM9Q7x0NbmPxb9PlLH2tralv+/f52+jKpPtUMd\ng37s6hj0Zc6x+8+lWhbWDtVe9dN9DMHt1s+Z2pd+nr3L9HYr9GvBXQPqmupt8qKfW+peVNt6jxMA\nmptbXev03/Vlah+qfuq+0u9T6v5MU328AdRzdemld/r65OY/TolVvwmdvk+HXSii9sm7du3CggUL\n8NOf/tQVx19VVYXRo0fb///2t7+NPn36oL6+Hr1798aKFSswZMgQO6zjvPPOw+WXX44tW7agT58+\nrnSPlmUhlUrZ6o2oJNUnA3S/vGHDfLKswjT1p7rv9PuLev6o50pB3fOqj29pafWV0+9JVa5N/57O\no5497t0QB5M+CPD3mWHPINcHquML60+pvl6h+j2qX9eXqWtP9Slx262v564Htc4U0/eyWq/e8YBz\nrOo8dOpUaa+jzpG3Lh3qWNSysPcF126OAQPG+PpkWEuMto1F6hR2dZQ+efjw4fbvPXv2xLBhw1z9\n1YYNG3DJJZegoqICPXr0wODBg7FhwwYAQJcuXdClSxcAuXvN2+fqaox+/frh6KOPxurVq3HCCScE\ntp0d0Fi2bBlmzZoFADjiiCNwww032OsOPPBAjBo1Cs899xzOPfdcVFdXY/fu3a7td+3aherqal+9\nRx55pBihCMJegJ5jvaPZtGkTMpkM+vbtay8bOHBgoNN0fX09Lr30UnTr1g0nnXQSRo4cSb6kXn75\nZZx88sn2/zds2ICDDjrI/n9VVRX69u2LDRs2+AY0li5diiOOOMIORwlD+mRBEArB1ycb/gFcDKL2\nyU899RRGjBiB7t27s/Xu2LEDGzdutAcwUqmUa2BR/b5+/Xr06dMHAPDKK69g1qxZaGxsxAknnIAz\nzzzT6BiK1ScD0i8Lwt6At0+2UMAkaghhvX3UPlnnH//4BwYMGGD//1vf+hZeeeUVDBo0CA0NDXj7\n7bfxwx/+0LXN+PHj0dTUhH333TcwDbBlWVi1apVrAIWCHdA48cQTceKJJ7IVqBfDAQccgLa2Nmze\nvNk+ER9++KHr4BKDeAG7RqXV79QMv+nL22RmHQBSanbbv44aKbfsJmnr1OioKl+IIoAi7Bi8TUpi\n90mc56j1hShKHBVNASqZqNfG8lxb7+8AoA3yWvn/uEqk8qPLxGgw1ZqUlcrv2vB8UMekzhE1O6OX\n9x5LB34chxFldoybZdPZunUrVq1ahSuvvNJe1tTUhJqaGle5zp07k/t5+eWXMWrUKONj6Ig+WQ3i\nmM6WUeXUbJx+T+qzU8Hb6gNI/tkkbraOLqfq9w9MZbNOe6iZOW97TWdCg9qU+z8/E5QEqr502j9L\nZapgcGbyzO4BUyUFNzPHnd+wmTxnmWojdU795dva9La5j6vVmXC2Z/z0emnFDHcM/mP3KolMCTs+\ndva0A/vsKH3yv/71L6xduxYTJkzAtm3bAutsbW3F/fffj1NOOcUeQB48eDDuu+8+DB8+HH379sWC\nBQsA5LyPFMOGDcOwYcOwefNm3HPPPfjjH/9olJqyZL+TQT+HnCrKVJHglLdcP3O0uerSf9dvQ9U2\nWgnp77Mc1Z5WqgBVgBeqv6H7FL+qLS7u/iG8z+T6E8BMRWiuPvCr9rzbBe8j2rlR715amabvWy3z\nfzuo8tR3BYW+L+95oFSVYd863nuF+p6g2ltqRFWRKV588UXU19e7voXHjBmDW265BRdffDGy2SxO\nPvlkHHPMMa7tHn30UTQ1NeGZZ57B9OnTMW3aNN+z+MwzzwAATjnlFLYNkc7o22+/jR07dgAAPv74\nYyxcuNBuXHV1NY499ljMmzcPTU1NWL16NVasWIGTTjopyi4EQRBiM3/+fPufd0Q5yuxYnz590Lt3\nbwDOLNsbb7zhK6cUFqqs2s+uXbt8+/G+JFavXo2dO3faoSlxkD5ZEIRSJok+OZvNYvbs2bj44otD\nJfQPPPAAKisrcemll9rLv/GNb2D06NG4++67cdVVV6FPnz7o3Lkzevbs6aujb9++OPfcc7F06dI4\nhyt9siAIBZHNWkX7ByT3naxYvnw5nn76aUyaNAndunUDkBsU+vWvf40hQ4bg8ccfx5w5c9DQ0IAn\nnnjCt31VVRUuuOACbNy4EevXr3ete/7557Fs2TL88pe/REUF75IRyUNj5cqVeOihh9DY2IgePXrg\nxBNPxA9+8AN7/cSJEzFjxgxMnDgRNTU1+PGPf5xsKqr8qA05c6MvU6Nh1Kw4tYwaITZVNXB1UUoS\natuMZ0Y9bNA5roLDdezEenXe7JFIfjRYXQeXPMrUk4Mrb3r9TKA8I6JuW4jfCXePUeoNNcaY0sqr\nUeCUrjjyeLZodZDeLWpf+uyv5VlHQY20Uwol7wh00iojQ7gQl0Jnx6j7Z+nSpRg5cqRrWf/+/fHy\nyy/b/29sbMQnn3zi6wuXLFmC4447zpVJJSrF7JO9fzjo/6dn6oNnMmiPguDyWq3a/nOzdfpskjNT\nbmnlgmdSVB3hM3tKlRI8yxLmucHhxOr6Y5fD+inn+FUb9WNX9TvHp+KN3ec5+PhVOfcsVfisHef3\nkWtb+GxxHO8S7g9c55oFqzcA/Vichep4qPhrVV6P5XbW6eco+J6h4sG9/ihhODOLWv9vXzdqZrP9\nSaJP3r17N9atW4d7770XgHP+L7/8clxzzTWora2FZVl4+OGH8fnnn+OGG27w3RcjRozAiBEjAAAb\nN27EwoULceCBB5Ltam1tjd0vd/R3MuVbo+NVBlGz4pRvDfV8U/U75YNn0QGnbzVXRqjtzO7rwjwd\nghURvHLAv8x591HvEl6B6N+nv436+YuqsFFQigRTuPe4qdpQ3TPUO0pvjnq3u1VFbq8jt/IilV/n\n1KHOV2tr8HeCrvIw9whx3+9hPi3hf+gVjyS/k9955x3MnDkTN9xwg6vMF198gXXr1mHy5MmoqKhA\nt27dcMopp2DevHm48MILffVks1lYluXqd1988UUsWrQIU6dOJQefvUQa0Ljoootw0UUXBa7v1q0b\nfvGLwozkBEEQioE+O3b55Zejvr4eK1aswK9+9Stf2bfffhsHH3wwevToYc+yHX/88a4y77//Pj79\n9FOfwuLYY4/FE088gf/7v//DUUcdhQULFmDgwIEu/4zm5ma88cYbBfeX0icLglAIcUKnksK0T+7a\ntStmzpxp/3/btm2YNGkSbr/9duyzzz4AgFmzZuHjjz/Gf/3Xf6GystK1fUtLCzZt2oQBAwZg+/bt\nmDlzJs466yzblG7x4sU45phjUFNTg48++giLFi3CqaeeGuuYpE8WBKFcifKdvHLlSvzmN7/B9ddf\nj0MOOcS1bp999kGPHj3wl7/8BWeffTZ2796Nl19+2faXUylhDzzwQDQ2NmLu3Lno16+fPYiybNky\nzJ07F1OmTLF9jsKINKAhCIJQEB3ssRE0O7Zt2zZcc801mD59Ovbbb7/QWTYg539x3HHH+aR4NTU1\nuPbaa/Hb3/4W999/Pw477DD8/Oc/d5VZvnw5unbtKoZvgiB0LGXSJ+tGoE1NTQCA7t27I51OY+vW\nrVi8eDEqKytx2WWX2eUuu+wyDBs2DM3Nzbj//vuxefNmdO7cGaeeeirOP/98u9z777+PuXPn2uZ0\np512Gs4666z2OwmCIAh5kvSG8UKICn2Y9skLFy7E7t27ceutt9rbKmPkVCqF6667Do8//jj+8Ic/\nIJ1O4xvf+AbGjx8PIBfG8sgjj2D79u2orq7GoEGDcP3119v1zJs3Dw0NDS6T5ZNOOgkTJ04MbHfK\niqzDLw7ZT/+Q+4UL9aBCTojUl2R4gkm6T/1UqBtKkx7RaVtVelKijqhpP4ly5OXhTC3VOdJlulQq\nUFvxZhiCo/ZJpGh1hTh42xaWCpS4LnbbiVSuZBQMde6JtLFOSI9hKInJMZimpeWWUel0tevHpnKl\nwnO8xwk450i/VlHvTy5sy9OerFWBil5n+6r48ue8S3EhdL33L0Wre2/kscd+CcAsZZu+njMac0s5\nKZNPFRoSbJioS/SrqnIzsXoqV0o2TaUodMr7Td5MTLzCpNomqUC5NKhBePelS8ypNHXqd9P0p1Ta\nPirNrFrGyYqp9IGmJoTU8ZlI6E0JM3kzuVam14+T8kc1ZaTqpyTS+nVR1/Lii6f5tm15/pbAfRVK\n5Xf/q2h17618+OHcyM8LJ3/XnxvVt4aFeXn7CJXGGHDuxebmFt8y0/cFB/VNHDWdKJWilUt1TZ2/\nsP5DHTOVnpZLD0q1lzILNmm3u23++imzbu697K0rqHxY+nIvpqGG1PF5vwu4dO36ttwxcKm3w+Ce\nQyrF+sEHj/XV0dT0V6N9xaGq6oyi1d3RiEJDEARBEARhbyTiQJAgCIIglBqlM6DhHf1KQgZZgIGk\n8ay1+hhoY8pTs+eGbUsRqgk79SuZqc3wmKmZfXtd2rdP27vI8pdLmbZNEUdhE/V2oI6Lu8eKJVQy\nud4hRrL0Nvmf9iizmRqDVdOEQal/7Paqe8a9v6A6hNLHb34WnMK0EKLKK6mZG8oYk17vVoB4t+WW\n+Ts1v8FX0qnYuHaofemzYc7sk98YTW8bNxtKp+2LNnPF+TLQpn5m589J3cj3I1EVDhzqWKg0lNRM\noW7QqaDMPrnZQ85wlppNpdILR1WsCOVB7hlIrr+JUwfVR5jsQzfG9KL366pvofp62nzYmfn2m+IG\nq/LC4NRf+mw7ZSqszCqVnYu7n6TaRtURrKbh+iVTOMNXHS51exKocxPm5+M19w7Dn67d+Szm1IZh\nahoOda4sy2kjbXwb/OwUM+RkT6Y0E+EKgiAIgiAIgiAIgiAwlI5CQ42WqSGW9pzJ5bwS4qg2OLjj\nopQRVBWqOYUMR6nznSGUEUH/B9zpRC2iHKeCYFK0kr4oXEpXHU4d42pKbltHRRLsQRJKse8Fal/k\nPgnfE6K84//CeGiEpdW10/Rqi9QMiqo/7B6WWcOygZst4eKIKbgZBz7tpj/tZyEzUqbQMdneNoWl\n7VPbBccix2tbXLWJruQIVzBQKXaTxj+z6W+jPnsYFttfClBtpGKoubh40/taxcBTs316qsJMxlBB\nKpQ8uWdG9YXtt1/9OfT2EXr/YOqFwcE957pHApcqlO6no0EpAmgfJqr/Uu/I3P/D1AfO+41a51du\nOaovrj0OnDqG3tbv7+FtT/5/vvJqWRL3gmlfSKuG/KoXzvNDKTPC0rbSqXXVNfKvU/266q8BR7lD\nYfpdJbgpnQENQRAEQRAEof2QAQ1BEAShzJEBDUEQ2g/5eBYEQRAEQRAEH+KhEY/SGdDwKmzC5O+R\n62ckPJTkPi/5sUxDTlK+X+Kjy8W4VEfQizGmOmRIAZOitYDz7AvrMCxPhqa4VG1MmyKeezJkR/Uf\nSZuDmpzLsDKmhqLeZcT9HJbalq1f3ZdaZ2tHHSmJaEgq2DDZpVA6KEmrI+VMzghUxzQVp0kITBhU\n+IVZeX1Z7jzo4QOcAR0HbfKmy2PjnfNwk9TgNHzcMioVL2VMSdcRbHpnirN/vY7w7cI+ECkZclS4\nY3HuZ3/FXUgzAAAgAElEQVQIFZW21X1vedvqtFHJlnUps0kdLqRPLiuyWUt7FZuFkZminumwtJuO\nDN8v8+fSW4aHKkRD3eOU0bA/9ITvqyhzZVUX1Y8Vcr6jhsNQaZ8pY2I+fNNj4O7av9+Q1V2Xu1zS\nf3Cbfhdyx2duRJ2Dfpf572eT9OS59bmfqk/WQ/4UbiNZzhRUQk7iUDoDGoIgCIIgCEL7IQMagiAI\nQplTOgMaalRXDYJlCnjJhswSG5WPWociFfifeJimdzUpRB0L5Wtnui1j3mmrIMJS+nEKjai4JCvx\nqnDXx6hYTLYLWuY9ZmKdsUkqA6kuKuQeZ8rZCqG4z41QslDp4aJO0PBGmlT53L70dHyUCRo3Y6Pf\n//7ZFbPZNTpFIDVLFTzjRpu2+WfLlHEjnYaVUeoR/YLbwIyamQsuT9cR/jxTs8Xu82dipsqnwuWP\nlZpRjI/XKI5KY+tuR7BRHAWdys/E4M9//nTTz2IrqoSOJZvNaqmYDVU4AfXkfprdh5RJsPoZx/yR\nVgzEg1MTuPtTs315lXzuc2RmAO3dp/6McuoRalvVV+hmqXEVIoW8x7n6otZF9X/u4/MrFullade2\ncYzCTUxuOeWRuy5KBepXElHpvYXCKJ0BDUEQ9nxkNlAQBEEQBEEQfIiHRjxkQEMQBEEQBGFvRAaZ\nBUEQhDKn9AY0lFpHl/d4pP+EtaVHhZlfqo9yceEDahlhEkOWo+BkToUYvCSh3GdNH7V2q3YmmNuc\nNOpJIJzCVd5WABL3DFeF9rtFqQjVeSukbdQyLuQkTSwzOUfU8xK1nXHCROxtYu5TKFmUdLONUK4r\nmaeprJ0yvOQUs5TEVhlqhUlKOemuIkwizYXKUcaUTngELwHnwgcoCbbTDrNQFg7TWR8uvMRUdkuV\nd2TWujGa2XmLStQQGVVevy+8oSbKHE7fVt8PfU8pGbRhwxPEbRbImWpLn1xuUOaF6h4zDfNS94R+\nX3P9uv68qG3o0KvgfoYOqQrfLowkTBTpEMVgU9BEP5RBnxvvezBOOIXf4JQKwQk2VaXLhRmtBpuN\nKvR3u7+ttDE4ZxZOhaNQqPbq+2+jPnI87aRMRE2J+p4TU9B4lN6AhiAIey7y8SwIgiAIgiAIPiTk\nJB6lM6DBzYZzZoT5n66t2iKmIlXKD9OUlmz61pS/XNRR1QJG57iRQ7IVVCpXbv/6KtPz0F7o5zlL\n3hluwkZZY5uThig01Ahy2tAAlEtjyxynXq8VVwnjrjC4bcIeD5VOlEvD556Jj9anmRuCmd1/Jh8I\nYTM7bGpsw/o4k09qtkypUkwNxOLM4HnbY64+4OoLTm2opxh1DFYpJYr/fJibjXJt86sxvClo9XKU\nUZw6hrCZOkeVoq57SlvnnxXkUyu62+VtkxfjZy7mPSN0DHraVvdy/zPHqcmoWyed5lJJ+p8NR6lh\nZpDp3pe7L4xjchn3D7+w7bz9TJx0s97+g6Ij0tiHKSmoZbqKJ7g+UwNotR1vRkspMqn0tV6zcKp8\nmIG3s63l+ukuF6w2cR9DsHGpUFzkLAuCIAiCIAiCIAiCUHaUjkJDEIQ9H1F0CIIgCIIgCIIP8dCI\nR+kMaMT9Q4cwCuXKsev0MqahJly7ox4TFaKibuyQA/RJX/UHIl+fXsbeA3mc4U11bRvVTDKJP2oZ\n01gAREgGYB81Fd7EnXsdb9vDjoUx/kwpGVpYyEmGCRehNFZKHajJ3NSWriNSx6zkeNT5MDQnNZZO\nirx5j4CXxgcbv0WvX19WSJ55E5NILgSAl43y66hjMT1/4QZ0YdJdjqgfTq4wNoN+nzKgo/oKU9M0\nc1l9MKq8HvJBycO9y/RQGSpEhUK1U9/Wu06XN6tymYxu9hh8v1PhM5Hl/zLIXFbE6f/oEC0/nMlz\nWIiWUwcVThfc5qjH4zZC9YcPcI8k1169Hd5+hjIFNY12oZ5RUyjjzKh4jy/s/Dnmoc694O2z3eeK\nu95mJuBcOGkm47wTKHNUtQ1vGu5vR2urs1ZtS6HCBN3muZn8On8/zX2nmL+XxUMjDqUzoCEIgiAI\ngiC0HzKgIQiCIJQ5pTegYfJujWrU2Z71mc7Yc/sKU4JwbaNmYux0rNEMVwsibspTVx3a795jCDPe\n5BQXhKJDjUCTs45hygUOVU5PM+VVZuijtqqYPjJvogLS220PNhNpwLTfo6aeotqTyniOxV4X0Gb5\neC4boht5ulNU0unhohE2yxHXFNF8BsRshslUYeA1KQs3mwtO+8kZb8Y1Bw2ugzLjDMZk1tNdn38m\n1PSWUf2Yaduc2WW/uaY7NWuw8aGJ4R/gqC/UDCCl1NDrUOUs4t3EHwvfNpnx27Mwfb6pdzxn8MgR\nx/iTg3snUPc8lcKaM1fm1CZ0utlgVZSpwiUqps85B6Ue4YyzKXUFZRSql1NiNtpk071OX296n1Kq\nBqXMCEvd7izjVIzO76ptnCpDRzdyjgJlcEqZmdL7lJCTOIgpqCAIgiAIgiAIgiAIZUfpKDRMRvJM\nZ5SLpTpQhKkDvMsKmpU28P4IW6f2r436WWpindqmIFUFozah1ATUMu+6OJjUa6p6KcQjhEvNqkZo\n9Xuf8dVgZy1I/xdiVkFXV3i8M0wVG2yaWVFo7DGoWSluFpjCiSU1UysUAjVjRM++Bae+5Ov316HH\n9Hrb4V7mjwvmyvMeGlTbzGaYOLi4arfCxh8TbTLTy816hm/rPx9cHab9F5WGVR2LrqBQHhtepYZ3\nWw5vGsywc6D2pc8empy3sLS73P3eEakjhfiEzSyb3pvFngU29RBQ91+YX4STQtUsBa0irF+glGPe\nNNL6OtUPFPLcUG2i0oKrY/ant6bbFhWzNOKOpw/X50dVgYWlZFfH3KlThW8b/Rnw3j/UfedOQa72\nFf4NAzjvBFNlqLetVBuD2ikURukMaAiCIAiCIAjthwxoCIIglAwSIhgPGdAQBKH9kI9nQRAEQRAE\nQfAhHhrxKJ0BDROzRy5NqOkNQBXj/saKKgsyDBVgm0SlH20LOT7u+Knzla/PIsIjQEjfEoFLl9rR\nf+hyISpceQrdAJQy/kx7Qk2IdWRYB9kMf7tpY9P8MsrcSl1vvXzU82AaciKUDd5Qk7CXLBdikURf\nQt3XvClosImduSzbb4zJS1V5+S93HqgUelR6OA7OKDRkS62OGKFnUfaknXtv+I47zMUstCfqPp17\nwJ8uVU/l6piB+uXWnAGpLiv2GhNSMmP9vlZSas5QN0xSTT2vrGFqR797hUik02k2nCNq+B1F9NSr\n0Z9Lk1ABz14A0PeyOxwgmhmos456X6j6+dC5JMInFZRRqDf0pKOI2uebpjOnQkkos0+1jArJMzUF\n5cNscuuo0Bp3+dz+TY2ouXSzQnKUzoCGIAh7PvLxLAiCUDpInywIglAySMhJPEpnQMPEQJOaRVej\nZmGTSuyMM6UKCanP2ybi/+RoJrFMLbGoMkkYnJrWoVQgyiRSP6kJGti4ajJJY6tvZadvpYoUYPIZ\n9zwT54U1zQSAjEeZoZsHedUb3m29qHZr/Z99P+kjwNTxqVkH6hmKrNBQdapnVD6Syx3vLEVYqjYv\npinKOPQZEDa1cgheZYap2oQyYVOqDWUuBgTNrEcz7XRmLJ3t1LFS5qTO//2GnmF4j48y2tM7We4D\nS7XXfV04M1NuJi3t+93UPM00hS+VhlW1Xb/nOYUGtU/VXr2c9xuAnt3134vu7XL1mT5DXjNfbzuF\n8iadThk/Q0qtYGrozN8n8dNDU+3llBmmpsmOijBeKlpX7ew7QT9/+VYQ5zlpo0e1D+pvCa9xaX4L\nZpmq06kr6r0Q591L7Tf3f79pJpWOlVJtRFVouI/Ff45Uffo73dtO6hkqJC2tKDSSp3QGNARB2POR\n2UBBEARBEARB8CEeGvGQAQ1BEARBEIS9EUkfKAiCIJQ5pTOg4ZXfUOEDpnIn0/LeEJaw2WODcJhQ\nM0fq4yGvZCJDBewymqSOCmNQ9UYd2TM9pwkqVi3t8KJ/SjHHSaoUtXLqV+L+sKV0VL2GqoIUdV0M\nlqX0661kxWH3kfe6EYpx/V60HJ2kv44U9bwYXpmgULGgkBNRaJQNJuEZnGqSyrkeJrP07lOvgzPg\nCjNF9C4LM/NS3pCVlfpSJT1VclN/GIMuhaUkwV4TzKhhBLn9ereJ3znTkllOthwsZebb6ECFIjn3\nR7L9A2UCq35XRqD6Mvc94w41CTdb9MvO1Xlwzo1zXlS9+n2k9qHfRwpO7s0Z4AatF8oTvQ+h+kfT\nsIDo4Xdmzzf3DOvPPvdOMO2XqOfEMUb2f5NzhpAcdHnqmUo6jMBt8ky/t/hwQX87/W0MM01W++Xu\nGfNwR38YjfMe8H8z6OWihpw4x8WfI67pqn/WDcKd4zcLKzX9/nHql/46DqUzoCEIwh5PSmYDBUEQ\nSgcZZBYEQSgZJOQkHqUzoOFROEQ2n9HLUwoNExWG6Ys9bAbeS9gfcba6Il+VtspOq5rhRxjtbfKz\n7RY1kkudj/ZEHYv2sCq1Rmylhg6lxtDxHnMh54AYPXaaRtwfGf8y1gDUMG0r3bb8T+18UOoRi1My\nkalfIzw7VtIzFUJ7Q5kgKkxm4KmZatPUfI4BJ5920DydabAyg3rXqGPQZ/GVWkPN1OgzNspMTD++\n1tbcT/csojJ4jGYYyilVwtLkmrxL3bOvtsOvXoJZBt8607Smzj6jzVy5DfnC0/NSygv9vFAqDO+s\nJPc86FBmsGpfbVTabEL1Qu/LbP+RU3XKgEZZkcmkYysNctsEq9XUfer+rqGe1/D9UKaPnCIt7N3A\n9UvULD5fl/7su+sCaGUXUQuxrPCZdXff5lb5Uf2kaZ/iED2tb1wzUM4Ek1JwupUXufWVlZQaw18v\n9S1OpUKnzpHX5FPvw53nRFeU5H5y3w4UHZ12d09Hzq4gCIIgCIIgCIIgCGVH6Sg0BEHY85HJQEEQ\nBEEQBEHwIR4a8SiZAQ1bfk9I3li5ExdaQJg+kn9Pec1B9WXFgjQMzf/MEuX08hlGRpV/EFKatMkO\nP4lqqtoeqKbpRqHcuedCIUzCTKjtoBuy6m2jjEcNwi4os1YuTCksbCUqaltOHQ49TCn5ez0VNHIh\n8uaywStHTdqwkQ4zcIc2ZLNmMvuohEloKem1Hn5iQibj34eS1CrJsy4X9hpkBhNNWBlmgJrbpz+E\nw92O4HcOXz5sv/HuKVMTTEo67g0lcZfzfzPQsmy3RDmsnbxUXD/3fmNRbp+JxFpLn1xWVFRkyGeu\njemeqPuEMhGl7ldVTpfLO+Wihc5FhX9HAOrZ0ftadTwVzF83el+u+mQn9MTsvUP/0ZmE6J2r18yY\n1X293dc0ckga9DDS4HANV2sNjGH1Ms57MUWU00NT+PDKKLjrokIq3euKfa8LhVMyAxqCIAiCIAhC\nOyIDGoIgCCWDmILGo3QGNDzGmMVSCeij0cWcoY4FMbOeyqe/dKVyVaOpnFGoPuKqzq2eSjNuKlyq\nvRxU+t2kz3exFCUm6cdMDWILMflMAvJYPCatVBmTlLEU2YDZg1J51oRQ/OaThc9QhJk/OrNI0dQQ\n9Gx7fNkmta0y8qRm83kDVX1G3W0oqpuDUrNa4TOUJgSfc3WN3akN3cqL9sA8vV6wcoGr11R5YaJm\nCcLE2JRSBlH7pGbb4xrzCXsWuWeguM+oaYrWjoCaWadm+x1TZr4+pdZwG02qfjq/F2Pzaf+Da6pC\noxQUSaoii3WvcG3kjGHpdL3Oso4w0KTfwe73fnA5d3uT/v4QwimdAQ1BEARBEASh/ZBBZkEQBKHM\nKZ0BDa86oY3wsyjWDAWlHLCzJWn7zATPYBvHcUX1S8iPUqb01FppToXhr9NOhRvWRhO/CdNrUKyP\npKjnL6KypKBWk74oMWuk/Fyipt0NU1d4U8qaqkhYT5siqXCEdsfrI+GeoYhXZ9SZPypG3O33kJzH\nRpgvA5c205kV9Jdxx5671QF6+kC1jEo7GNWfgk7Dqq+P9i6llA5x6+Rm9NzXQM3kme2DS+cbpryI\nOiOW5MxpmPLC5NxTJO15I5QGuf5P3RPOctXPmKYXjor+DPlnrf3rdMz9gVQd1Ow9tW2unK7CUMdP\neWOo/lbvd5X/hv4cOuv959I0JTXlkeNrfZGeUXO1Xw6q/6PeOeqYClHtRG1bGN7vFMoTJrxNweoK\nJ+W8Xt7v7+FFT+tOrxfFXdKUzoCGIAh7PjLQIQiCIAiCIAg+ZLAjHjKgIQhC+yEDGoIgCKWD9MmC\nIAglg3hoxKP8BzTsfJsJ1BUnbatXYh+WspOq32RfmpQtlR+9cx2y3Q5DyX/UEBKqHBVewO2XOUcp\nqg6uXvKc6m0jynmPIeo1prYNa0dcwsJLTMI+dEwMS6NeR26f8pFc9qiXqm5cWShh0lLuRU5Jqr3m\nbXHgJP1UCIRJ6Ilen1uq7TYFdctSlYybD8vxSnbptHn+FIt6OW/KRi5cw72vsLAcd/000STYhZmr\nBV9T2vjVaZu6z5w2hRnaFi6lNrkXzdMk8maqipSEpuzxuI2JC6/PCZkzK++EKugmyO4wlLC+ziTN\nN+CEn3DPEGUAShHVpJo2+PWnveX36T9m6hx5TTaD6vWeNyrtM/W+oLdxh57oUKFz+ne91+QzqXAb\n7v0Q9V3mnG+ze5GzGqC+m9znSAYtkqb8BzQEQSgfZKBDEARBEARBEHxIyEk8yn9Aw9ij0sBM0tQ0\ns5A/yqLOfFPkBw9TWhpW2/DTaw4KOMPorll/ZsbexBw0DG7WXxvpjJ3+NKwZ5HrPwjDDUBMFShLp\nWAsxu426ralCgysfdz/CHk1HpvejjEJNFQkUtBLBOxvIp+hT6gu3SZlF/tTbSJnqxTXxDMLkPOhK\nGE6ZEXW2jiqvZu/cxxlsqkfNMhai5DCZiU3azE5hmnKYV23426QfC2U0K+w9mBv2+u9n6tuZN/aN\npt6g28EoiogU0+7ZbvcyWvHgNwB1q+vc23IGmUGYpB3VzzelwvAuoxQPYf2SqRpEW+pb4u2PKPNT\nTo2h76uQPpNO7x1lOzPCzin1TJhcb7das7TSIe8JlP+AhiAI5YPImwVBEEoHGXwWBEEoGcRDIx4y\noCEIgiAIgrA3IgMagiAIQplTOgMaXpNKzswxif2ELUti27hS/jihL959pSzfOl0mZVFtixtSw7bD\n0ACUkl8VYriplAC61NK3LdGOsHstapgSt97eV8Swn6j7CSoX9R6Mcl8ElZWP57KDCh+IC2V4yUnu\nqZAMU3TZaBvj6RY3nEMPDXFCOPzhJXrohrdtuikoVUcSxmFUOziDSVXO1CjUFO4+oq8tJSdX7fGX\n5sxJ49zD6j1lKg1W5U33RV0D7rp4y4StDzP6E8qTdDpl3/9UqF0SxJXU59oUbVuv8SW1Lgj6GXWH\nYVGhApQpKBeaooeoqPNsej68+3HXb7ZMtbuy0h86ZmIcHdwm/zuYC0NRu6LNsvn9c9eSD2HS20aF\nY0b9LogWCsQbf0Y99/5QHQrx0IhH6QxoCIIgCIIgCO2HDDILgiAIZU7pDGj4ZvQTGKEynT0njSnz\nP6PG/IeVT0KtQZyjVH5EkTxrVtZfl20eqi/zjDaazmpxCg3dAFTVb2oAGhXq3FPL1OhnmHEopdpg\nrxWzTx2vEkYfjSUzkzHXwfT+jKsISvpjVz6ey4a45m6mM1dxZ6i5utzLoqW+jAqlpGhr88/86SoM\nJ12rX41BKTmo1HxeKINMHWomiFPCJKGO4aBUOkrVoM+GOfuMbp4Wt71xzP9M4O7PMCWMyQwkfT/z\ns6g20ieXFel02lYMJKHK4GagAdp80iTlahgm6VJN20kZhVLniFI4KPRnyKvk0NtKGeyaPKOmBqB6\nuk/vuU/CSJJWdPBGoP5rpbebKh/+vgo7Fsok27lGZu977z7D4MqFfdcklYYWEEVdXCINaCxZsgTP\nP/88Nm3ahC5dumDo0KEYN26cfWPedNNNWLt2rf1A7rfffpg+fXryrRYEQRAASL8sCIJQSkifLAiC\n0L5EGtBobm7G+PHjcdhhh2Hnzp2444478Nxzz+Hcc88FkBvVvPTSS3HaaacVpbGCIJQ5MhuYONIv\nC4IglA7SJwuCEBfx0IhHpAGN4cOH27/37NkTw4YNQ11dXbItokIV8mERxpc4qkGi/TOkrqgmn6bh\nFN7QDtNQGV3ilPWs0+vIqNAJzehG7Vqv1/sQ6e3iwk9Ik8/cz5QuK6NCTrwNShrK9JQyDGXbYRBm\nEgNbZq0vbDM0xfWew7CwGDKsKkWXCYMM4wlpX4nQ0NCAGTNm4L333kNNTQ3Gjh2LYcOGsdvcfPPN\nqKurw9NPP23PsH300UeYM2cO6uvrUVNTgwsvvBDHHnusvc3ixYuxaNEi7NixA7W1tbjiiiuw7777\nAgC+/PJLPPLII3j33XcB5PrV0aNHxz6mYvXLTuhB7lqahlOocrSBFy+pV+spmb9jmlm4RD8JKGM0\nt3lcPKPQ1lb/Mt1o0i+95o3G1LaUKahjAOoPL6HMLcPk6Rx02IXbwJLaZyEhH9w9E2ao6EiIo8m8\n9faq/VPmexzm5ZIIzS28ikIw7ZNfffVVPPPMM/jss89QUVGBI444AhMmTEDPnj0BhKseli9fjrlz\n52L79u3Yb7/9MHbsWBxzzDEAgPnz5+PZZ59FZWUlgNx9fuedd6JPnz6xjqnY38q0kWW0CxnV5JMK\nj6D+7zWydJcLNlEMC0GI2h9R50g9y5mMU5eqVw8l4Z4/+p2TClznbU/ud38Yj7pv9bAY7zlJMqwh\nqF66f8wGlteWGu8jClRop94crm/lQmm40Bv9vopu/Bm8b+MwwA7GtE8OU6I9//zzWLJkCTZs2ICh\nQ4fiyiuvtLdds2YN5s2bh/r6eqTTaQwaNAgTJkxAjx49XPtobW3FL37xCzQ2NmLGjBlsuwvy0PjH\nP/6BAQMGuJY99dRTePLJJ9GvXz+MHTsWgwYNKmQXgiDsQRTyB1ESzJ49G5WVlZg9ezbq6+sxbdo0\nDBw4EP379yfLL1u2DG2eFBltbW248847MXz4cEyePBl1dXW4/fbbcccdd+CAAw5AXV0d5s6diylT\npqBv37549NFHcd999+Gmm24CADz22GNoaWnBgw8+iJ07d+Lmm29G7969ccoppyRyjNIvC4JQLpj2\nyYcffjimTp2K7t27o7GxETNnzsTvfvc7/PznPwfAqx527tyJ+++/H9deey0GDx6Mt956C9OnT8eD\nDz6ImpoapFIpDB06FD/96U+LcozSJwuCYEpHe2iY9slhSrSePXvivPPOw7vvvovm5mbXtrt27cIZ\nZ5yBwYMHI51OY86cOXjooYcwadIkV7nnnnsONTU1aGxsDG137CGiF198EfX19TjnnHPsZRdccAEe\neOAB/Pd//zdOP/103H777fjkk0/MKkylgv+xZZD/x2yv/0unnX/eOtIp/7+Q+lL5f4liWf5/Yecs\n3167PYb/Uum08y+T+0ceu++cBS3LtyNfJ3u+U8ipRzLEeff+SwLv/WS6nxTzT4c6bwZYlmX/0xby\n116ty1q0siZKmkLTtnLnyPTYI9ybkf+F0NjYiOXLl+OHP/whqqqqUFtbi6OPPhpLly4ly+/atQsL\nFizAhRde6Fr+8ccf47PPPsNZZ52FVCqFr3/966itrbXrWbFiBYYMGYL+/fujoqIC5513HlatWoUt\nW7bY68855xx06tQJvXv3xmmnnYaXXnoptP0mJNkvZ7OW659+n3rX0bNW+vqs719raxtaW9tc5dra\nsr4Zbmefaluq3uB26PXwx+u0LS56HepYqGP3lmlr089H1ndcal1raxva2nL/1DHp6/Tz5V1PnfuW\nltw/qn6qvWRfRRD1vcidd+qYwoh6vdPpVP5fmviXMvpHkcT3AfWsee91/T6it2Pu6zLpk3v16oXu\n3bvb/0+n077ZvCA2b96M6upqDB48GADw7W9/G1VVVXY/aHpfxSHpb+VUir5P9fXqH32vht/XFRUZ\n+x9dnnpOcv/UvjOZtP2Pe0YKwaRvCHuW6XOVK+8cQ8b+55wXf3n3eXOfS6oder2Vlbl/VDm6juB7\noBCoa2WyH9P+kboWplDveK5v474Por7vTdvLnyP/taXbHdznF/ovjCh98vDhw1FbW4tMJmMr0d5/\n/317/bHHHotjjjkG3bp18207ePBgDBkyBNXV1ejUqRNGjBjh2hYAtmzZgmXLlmHkyJGh7QZCFBrL\nli3DrFmzAABHHHEEbrjhBgA56d7TTz+NyZMnuxp66KGH2r+ffPLJePXVV/H222/ju9/9rqveuro6\nl/xuzJgxRo0VBKG8mD9/vv17Rz/nmzZtQiaTQd++fe1lAwcODJQCP/XUUxgxYoTrIzqIbDaLDRs2\nAMh9UOofVur39evX2xJm7/r169cbH0cx+mXpkwVh78DXJxdJxm5C1D559erVmDZtGnbv3o1Bgwbh\n8ssvd60PUj0cdNBBSKfTWLFiBY466ii8+eabqKysxEEHHQQg12evWLECEyZMwL777osRI0a4wkbC\nkG9lQRDiUs7fyTqUEs2UVatW+bb97W9/i3HjxtmhgGGwAxonnngiTjzxRNeyd955BzNnzsQNN9wQ\nu+FHHnkkjjzySPdC72i+/n/1OzXiT/ohEOXUIu7lHbbP/O+RZ1xMPBCShjqWjL5PO9cSsak6dv8f\nZeS51bf1+mTo7cgEn1MXal/UeaMGGFUVrvSnMc+vy5fEYMYmzn6YmSDTOSLfPZjEseuYPicKrz9J\n/qJ0dOes09jYiM6dO7uWVVdXk1K2f/3rX1i7di0mTJiAbdu2udb169cP3bt3x3PPPYczzzwTdXV1\nWLVqFb7+9a8DyI0833fffRg+fDj69u2LBQsWAIAtuRs8eDAWLVqEq666Cjt27MBLL73kk+NxFKNf\npvpkr4eG7pehfDLccccq9tbvg6GidvR4VM6rwdsGvX7TZZz3QljMMNeWqDNhlIeG91zpy3SvC7We\nimiiH/UAACAASURBVANXvg9haVu9fhkA0NKS+93UlySJ2VUTHwnT1H+ms+ncvqgYcdP7go7Xtj8y\n7GUm/h9RfTDC6qTXO20q1z4ZAGpra/Hoo4/i008/xUMPPYTHH38cl1xyCYCc6kGp4l599VU7DHD/\n/fdHdXU1LrvsMtx7771obW1FRUUFrrnmGnTq1AkAcPzxx+OMM85A9+7dsXbtWtx9993o2rUrhg4d\nanQc7fmtnMmktZSW7pnv3HpdudPmWpcjOB2yqZ+FtxzlORC1zzD1QEga1V69T6FSsyrUudfTqzop\nYvX+K7gOta3+PlTHqu+bux5cCnKuDzftYzk4fw2TbUxQ1yOsP+P36b8HnX49uXda1H17ty3nPlmh\nlGi6T4YpH374IRYuXIjrr7/eXrZ8+XJYloVjjjnG2H8o0h22cuVK/OY3v8F1112HQw45xLVu165d\neOedd9Dc3Iy2tjYsW7YMq1atsiV+giAIxZY3z58/3/7n7QSrq6uxe/du17Jdu3ahurratSybzWL2\n7Nm4+OKLyRdWRUUFfvGLX+Ctt97CT37yE/zpT3/C8ccfb5vTfeMb38Do0aNx991346qrrkKfPn3Q\nuXNne/0ll1yCyspKXH311bjzzjsxdOhQe10cpF8WBKFUSaJP9tKzZ0+cf/75Lhn0oYceiurqalRU\nVODkk0/G4YcfjrfffhsAsG7dOsycORNTp07F008/jZtuugkPP/wwPvjgAwBA//790aNHD6RSKXzt\na1/D9773Pbzxxhuxj1n6ZEEQ4sKFqRb6D0i+T1ZKtEmTJpHhJRybN2/GbbfdhksuuQS1tbUAcoMq\nTzzxhD1YbUokU9CFCxdi9+7duPXWW+1lSl7X2tqKefPmYePGjUin0/jKV76C66+/3iVbEQRhL6fI\n8mZupPuAAw5AW1sbNm/ebPdLH374oW/2bPfu3Vi3bh3uvfdeAM4MxOWXX45rrrkGtbW1OPDAA22T\nTwC48cYbXaaeI0aMwIgRIwAAGzduxMKFC3HggQcCALp164arr77aLvvUU0/hsMMOi33M0i8LghCb\nIqtFk+iTKdra2myFRRgrV67EYYcdhq9+9asAgEMOOQSHHnoo/v73v2PgwIFGdURB+mRBEOJS7LSt\nSfbJhSjRtm7diltuuQWjRo1yKdw2b96MrVu3YvLkyQBymU527dqFyy67DLfeeit69epF1hdpQGPK\nlCmB62pqanDbbbdFqc4NF3KS/yPITt+qz5oquZOp1oR6eXPLtHVkqIlalvaXj2TMmBRq/2H7ttWx\nxLlkiod+/NjnQ4WeEOvCQk4UpuePi4aJeg2K1ZFQaVXVMtN7RivnS/kadl2SCHviypvedx1IdXU1\njj32WMybNw+XX3456uvrsWLFCvzqV79ylevatStmzpxp/3/btm2YNGkSbr/9duyzzz4Acn4Yffv2\nhWVZeOGFF7Bz5057QKOlpQWbNm3CgAEDsH37dsycORNnnXUWunTpAgD45JNP0KVLF3Tt2hXvvvsu\nFi9ejKlTp8Y+rmL1y97wCLdckgpVyN0DKu0oJYdubm4J3A/dBj68hKrDJJRFh5OeBklEg+owDVuh\nwnjUeXPLnSl5uPv4qW47TIbsDTXxmqX5Uft31umS6yBSRJ9F0R7Sco7wFHu+LfylibAVVS5q+FMh\nRE59W+zwVwbTPhkAXnnlFdTW1qJXr17YunUrnn76aRx33HEAcjOIa9aswaBBg5DJZPDaa69h1apV\nmDBhAoCch8aiRYvwwQcfYODAgaivr8fq1avtQee//e1vOOKII9C1a1f861//wv/+7//iggsuiH1c\nxfxWzt0v/jAJKk2p84zqmbpUSEjYPrzL/Buo59sdOhG8LfVO4O/54mR7CEvZ7JTzh1ZSOCFAbnPW\nINT5osNL/OeIS4HLtV+HC7WI2u8UKwsHFQ5DpSzn+jP9XnSOyyzMJm5YqQ73PZF0X18MovTJSol2\n/fXX+5RoQO58tra22uqQlpYWZDI5c9tPP/0UN998M7773e/i9NNPd2134IEH4uGHH7b///7772PO\nnDm444477G9wioLStgqCIESiAz+eAWDixImYMWMGJk6ciJqaGvz4xz9G//79sW3bNlxzzTWYPn06\n9ttvP5cRaFNTEwCge/fu9otu6dKlWLx4Mdra2nDEEUfgxhtvREVFrjttaWnB/fffj82bN6Nz5844\n9dRTcf7559v1rVu3Do8++ih27dqFfv364Wc/+1lg2lhBEIQ9GdM++aOPPsKTTz6JhoYG1NTU4IQT\nTsDo0aMBIFT18K1vfQv/9m//hrvvvhs7d+5E9+7dMXLkSHzzm98EALz22mt4+OGH0dLSgv322w8j\n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\nfbKmlrP75fw6VDoqD/tZ7qQty597XRnnnZ0NM/bkrotXqUGvA5xzGbYseN9eZYmO653g6dPCDF+p\nNJTec6Q/L7RixW8kzs1um8I+E9J3dwhx+2V3KmTd3NLfL1Hmod6UmmFqDHXP6svU72odpfIwhTMA\npcq5l+V+8mmZeSWWYxTq7L+1Ndxs2lRtqFJY62afu/MKuYYGxyh027advmXKDFSdb7cpcxfXftxt\niz/DTxuhehUMZu80/Xwk0Y9x8Abh/mOhvjsow1cT9QbAK+24FMVh7RXMSXRAo7GxEcuXL8c999yD\nqqoq1NbW4uijj8bSpUsxbty4JHclCEI50sEfz3FmxW6++WbU1dXh6aefRjqdRmtrK2bNmoWVK1ei\noaEB+++/P8aNG4fBgwfb2yxevBiLFi3Cjh07UFtbiyuuuAL77rsvAGDlypVYuHAh6uvr0bVrVzz4\n4INFO17pkwVBKGVM++QlS5bg+eefx6ZNm9ClSxcMHToU48aNs/9Y2L59O2bNmoU1a9agoqICQ4YM\nwfjx45FOp7Fs2TLMmjXLrsuyLDQ3N2PatGk4+OCDceutt2L16tX2+tbWVvTr1w933XVXUY5Z+mVB\nEILo6JAT0z55/fr1ePzxx7Fu3To0NDRg3rx5ZH2bNm3CddddhyFDhuDf//3fAeT62Pvuuw/r1q3D\ntm3bMGXKFAwaNMi13bp16/DYY4+hvr4eVVVVGDlyJM4888zAdic6oLFp0yZkMhn07dvXXjZw4EDU\n1dUluRtBEIRYRJ0VW7ZsmWskH8iN7Pfq1QtTp05Fr1698NZbb2H69Om466670Lt3b9TV1WHu3LmY\nMmUK+vbti0cffRT33XcfbrrpJgBAdXU1TjvtNDQ1NeHZZ58t6vFKnywIQilj2ic3Nzdj/PjxOOyw\nw7Bz507ccccdeO6553DuuecCAB555BHU1NRg5syZaGhowK9+9Su88MIL+N73vocTTzwRJ554ol3X\nkiVL8Pvf/x4HH3wwAGDSpEn/P3vnHmVFdab95/SdW6PcJB0QEnHCJUZ0KfYIUYJRkskkCzUQQRMv\niGG8ZDLquEL8jCGRiBjEeBfFxMGoMBovw1qjSVQaJTFMiDdAjEZEEFDECHagu+nu8/1xelfty1t7\n76pTp/uc7ve3lvahateuXbdd5+z9vM+r7Gv+/Pn4/Oc/X7Bj5n6ZYZhixbdPrqiowIknnoipU6fi\n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\nK33fOfDcmAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pymks.tools import draw_correlations\n", + "\n", + "print X_corr[0].shape\n", + "\n", + "draw_correlations(X_corr[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABDQAAAEsCAYAAAA8U+MrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmcFNW5///p7tnYBhwBEQFxi8OgCV6REDaXKBoT/IEC\nKmgURWPMNRqjXPEbMbgiRjHGC4ZFo6IyICYazXWJXhCNhrgFQRa9jIjsi4LDbEx3//7oOVWnqp4+\ndaq6qpeZ5/169Wt6TlWfOufU6aefOudZIslkMgmGYRiGYRiGYRiGYZgCIprrBjAMwzAMwzAMwzAM\nw3iFFzQYhmEYhmEYhmEYhik4eEGDYRiGYRiGYRiGYZiCgxc0GIZhGIZhGIZhGIYpOHhBg2EYhmEY\nhmEYhmGYgoMXNBiGYRiGYRiGYRiGKTh4QYNhGIZhGIZhGIZhmIKDFzQYJkO2bNmCTz/9NNfNYBiG\nYcAymWEYJt9gucyESVGuG9BaeO+99/Dqq6/iiy++QFNTE7p27YqTTz4Zo0aNwiGHHJLTtv33f/83\nvvrqK9x7773an/nHP/6BpqYmnHbaaRnX1dp54YUX0KlTJ1RVVeW6KQzDtMAyue3CMplh8hOWy20X\nlstMmPCCRgA8+eST+Nvf/obTTz8do0aNQrt27bB582a8/vrr2LlzJ2666aZcN9Ez7777Lmprax1C\neuzYsTh48GDW2rF69WosXLgQpaWlmD59ekZ1NTQ0YOHChejZsye2b9+O448/HkOHDs24PWvWrMFv\nfvObjNoWVPsYhmGZHCZBymQAaG5uxvPPP48ePXpgxIgRgbQnKJkcRPsYhknBcjk82pKuDLBcZpzw\ngkaGvP/++3j55Zfx85//3CLQ+vXrhzPPPBOrVq3yXXcikUAikUBRUZFWeTY47LDDsnq9E044Af37\n9w+kr0JAn3vuuUgkEvjVr36F3r17o0+fPr7bs3XrVvTo0QOHH354XrSPYdo6LJPDJUiZvGzZMnz5\n5Zf44IMPcP755wfSniBlchDtYxiG5XLYtCVdmeUyQ8ELGhny8ssv4+ijj3aszgJANBrFgAEDjP//\n8Y9/YOnSpdi+fTvKy8tx6qmnYvz48YhGU6FMhInamDFjsGjRImzbtg2333473njjDbK8srISa9eu\nxaJFi7Bx40aUlJRg0KBBuOyyy1BWVpa2zRs2bMCf//xnbNy4EXV1dTj88MNx3nnnYdiwYUY7Vq5c\nCQC48MILAQDjxo3D2LFjSTM63X5dfPHFePLJJ7Fjxw4cddRRuPrqq9GrVy/XMV63bh3Gjh3rep6K\nxsZGLF++HA888AAA8968/fbbmDBhgqe65PZ88sknGDlyZEZtC7p9DNOWYZlcGDIZgHGPampqMqon\nDJkMBNc+hmnrsFwuDLmc77oywHKZoeEFjQxobm7Ghg0bMGrUKNdz//3vf+P3v/89Tj31VPz0pz/F\npk2bUF1djW+//RZXXXUVACASiWDnzp14+umnMW7cOHTp0gXdu3dPW75u3TrceeedGDRoEH79619j\n//79eOaZZ3DgwAHceOONaduya9cuHH/88TjrrLNQWlqKdevWYfbs2YhEIhg6dCjGjh2LPXv2oK6u\nDpMnTwYAVFRUZNSv3bt3Y+HChbjgggtQXFyMp556CrNmzTKEZjoaGxvxxRdf4Pjjj3cdYxVbt25F\nU1MTunXrZpQdeuih+Ne//uWpHnt7du3ahbPOOiujtgXZPoZpy7BMLhyZHBRhyWSGYYKB5XLhyOV8\n15UZJh28oJEBtbW1aG5uRteuXV3PXbx4Mfr3749rr70WAPC9730PAPDMM8/gggsuQEVFBZLJJGpr\nazFt2jQceeSRxmfTlT/00EOorKzEDTfcYJRVVFTgzjvvxObNm9G7d2+yLbIvXDKZRGVlJfbs2YM3\n3ngDQ4cOxWGHHYYOHTogmUzi2GOPDaxfd955J3r06GFc93e/+x22bt2Knj17pq3/s88+w+GHH472\n7dsr2+HGvn37UFRUhEgkYpSVlZXhm2++8VSPvT2XXHJJRu0Kun0M05ZhmVw4MjkowpLJDMMEA8vl\nwpHL+a4rM0w6eEEjAOQvPkUikUBNTQ0uv/xyS/kPfvADPP3009iwYQMGDx4MICVkZUEssJc3Njbi\ns88+w6RJkxCPx43yyspKxGIxbNy4Ma2Qrq2txeLFi/H+++/j66+/RiKRMK7hBS/96t69uyGgAeCI\nI44AAOzdu1cppNetW4fKykpHeUNDAx5//HEkk0llG3v16oXzzjsPtbW1KCkpsRwrKipCXV2d8vO6\n7cmkbQACax/DMCyTC0EmB0VYMplhmGBhuezer1zL5XzXlRkmHbygkQEdO3ZEUVERdu/erTxv//79\niMfj6NKli6W8c+fOAFJCU2A/J135gQMHkEgksGDBAixYsMBx/p49e9K2Z/bs2fjss88wduxY9OrV\nC+3atcNrr73m2aTMS7/sq8YiUFBTU5PyGuvXr8epp57qKC8rK8PPf/5z7bZSfpKNjY0Owe1GuvZk\n0rYg28cwbRmWyYUjk4MiLJnMMEwwsFwuHLmc77oyw6SDFzQyoKioCJWVlfj444+NgEAU5eXliMVi\n2Ldvn6Vc/N+xY0fP1xZCb/z48TjppJMcx9Pl825qasKHH36IyZMn48wzzzTKxcqzF8Lol0wikcBn\nn32Gn/3sZxnVA6TGo6GhwVLW2NioZQIZRnvsBNE+hmnrsEwuHJkcBPnWHoZhnLBcLhy5nO+6MsOk\ngxc0MuTcc8/FzJkzsXz5csdqZCKRwKpVqzBgwAAcffTRePfddy1Bcd59911EIhF85zvf8XzdsrIy\nfOc738GWLVtwwQUXaH+uubkZyWTSktqpvr4e77//vhFpGUj9ALmtCEej0cD7JbNp0ya0a9cOXbt2\nxZo1a9C/f3/jmFdTtSOPPBIlJSXYu3evYS64bds2HHPMMYG0R8aPGV0Q7WMYhmVyocjkIAhTJjMM\nExwslwtDLue7rsww6eAFjQw5+eST8eMf/xiPPvoo1q9fj4EDB6KsrAxbtmzB66+/ju7du2PAgAEY\nP3487r77bsyePRtDhgzBl19+ierqapx55pme/fEEEydOxJ133olHHnkE3//+99GuXTvs3r0bH374\nIS6++GIy33P79u1xzDHH4LnnnkO7du0QiUTwl7/8BR06dLD4yB1xxBF4//338a9//QsVFRWoqKgg\nV7LD6Jdg27ZtOO6447B3715HQCKvpmpFRUU45ZRTsHLlSpxzzjloamrCqlWrcOuttxrnrFmzBnfc\ncQduv/12VFVVeWpPJm3TbR/DMO6wTC4MmSyTTCZJpTaXMlmnfQzD6MFyuTDkcr7ryjIslxkZXtAI\ngJ/+9Kc4/vjj8corr+Dhhx9GU1MTunfvjoEDBxppqr773e/i+uuvx/PPP4+3334bnTt3xqhRozB+\n/HijnnQBk9KVV1ZWYvr06Vi8eDEeeeQRJBIJdOvWDQMGDDB886jP//KXv8S8efPwyCOPoLy8HGef\nfTYaGxvx6quvGuecffbZ+OKLLzBnzhwcOHDAyK1tryuTfrlRVVWFt99+G2+++SbGjBnjqw6Zyy+/\nHI899hiam5uxdetWXHrppZZgUI2NjQBgGbsw2+O1fQzD6MEyuTBk8jvvvIOPPvoIn3/+Ob7++mt8\n/vnnGDVqFA477DAAuZfJbu1jGEYflsuFIZfzXVdmucxQRJK8vMUwAFJptdatW4dp06bluikMwzBt\nHpbJDMMw+QXLZSYfibqfkj3WrFmT6yZklbbWXyC/+7xhwwb85Cc/CbzefO5zWLTFPrdG2tp9bGv9\nBfK7zyyTg6Mt9rk10hbvY1vrc773Nwy5nO99DoO22Ocw8eRysmzZMsyZMwelpaVG2S233GL4UNXW\n1mLOnDlYtWoVysvLcfHFF2PYsGHa9auCx7RG2lp/gfzu829+85tQ6s3nPodFW+xzLmCZHCxtrb9A\nfveZZXJwtMU+5wKWycHT1vqc7/0NQy7ne5/DoC32OUw8x9AQvmgU8+fPR3FxMebPn4+amhrMmDED\nffv2Ra9evTJuKMMwDOOEZTLDMEz+wDKZYRgmu3he0EgXcqOhoQErV67Egw8+iNLSUlRWVmLgwIF4\n6623MGHChIwbyjAMkym6u2PvvPMOlixZgq+//hpFRUXo168frrjiCiMa+VdffYUFCxagpqYG5eXl\nuOSSSzBo0CDj842NjXjqqafw7rvvIh6P48gjj7QouAsXLsT//u//AgDOOOMMTJw40XefWCYzDFOo\neLFY2LFjBx5//HGsXbsWRUVFOP3003HJJZd4que5557DkiVLcNttt+GEE04wylkmMwzD6MvSZcuW\n4ZVXXsG2bdvQvn17DB06FBMmTDDSGu/Zswfz5s3Dhg0bUFRUhMGDB+Pyyy9HNBrFihUrMG/ePKOu\nZDKJpqYmzJgxA0cddRRefPFFLF++HLt370anTp0wcuRI19S9nhc0ampqcOWVV6Jjx44YMWIExowZ\ng2g0im3btiEWi6FHjx7GuX379vXkIyRH+20LtLX+AtzntkK+9ll3d+z444/H9OnT0blzZzQ0NGDu\n3Ll48sknccMNNyAej+P+++/HyJEjMW3aNKxZswb33XcfZs6caaR/++Mf/4hkMomHHnoIHTt2xBdf\nfGHU/frrr+P999/H/fffDwC466670L17d0t+ei+wTA6OttZfgPvcVsjXPuvK5ObmZtx1110455xz\ncOONNyIajWLr1q2e6tm+fTvee+89R1pNlsn5TVvrc1vrL8B9zid0ZXJTUxMuv/xyHHfccdi3bx9m\nzpyJF198EaNHjwYAPP744ygvL8fcuXNRW1uLu+66C6+++ip+9KMfYfjw4Rg+fLhR17Jly/D888/j\n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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_correlations(X_corr[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2-Point statistics provide an object way to compare microstructures, and have been shown as an effective input to machine learning methods." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predict Homogenized Properties" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section of the intro, we are going to predict the effective stiffness for two phase microstructures using the `MKSHomogenizationModel`, but we could have chosen any other effective material property. \n", + "\n", + "First we need to make some microstructures and their effective stress values to fit our model. Let's create 200 random instances 3 different types of microstructures, totaling to 600 microstructures." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from pymks.datasets import make_elastic_stress_random\n", + "\n", + "grain_size = [(47, 6), (4, 49), (14, 14)]\n", + "n_samples = [200, 200, 200]\n", + "\n", + "X_train, y_train = make_elastic_stress_random(n_samples=n_samples, size=(51, 51),\n", + " grain_size=grain_size, seed=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once again, `X_train` is our microstructures. Throughout PyMKS `y` is used as either the prpoerty or the field we would like to predict. In this case `y_train` is the effective stress values for `X_train`. Let's look at one of each of the three different types of microstructures." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nbmUh584sI6EAAAAJCaFZQigAAEBCQmiWEAoAAJCQEJolhAIAACQkhGY1DaGpbvwlvZQ3VzPYRvW4\nLVPxhrxmQ5nPAAACbElEQVR1HcQLVDuFN6amplp6Pq1T7Kmc8o7lycnJniyn7No5jw/i+aWX6zSI\nrz+Ffr/Ofi9/WBkJBQAASGiY/mm0vr4e+/v7Ua1WY2lpqTH97bffji9+8Ytxenoai4uLMTs7W9jG\nxTrIAAAA8D57e3txcnISq6urcXp6Gru7u415r776arzwwgtx+/bteOWVVy5tx0goAABAQsMyErqz\nsxNzc3MRETE7Oxvb29sxPT0dET/42PzMzExERFy9ejWOj4/j8ccfz23HSCgAAEBC5+fnpfhppl6v\nx9WrVyMiolKpRL1eb8w7Oztr/P7+ee/XdCQ0xY30ZdbODfODyM3VvF/eCaeToj3Xr1+Pe/fudbJK\nXTc2dvH/bYNYrKgdKQrWKIJTDv0ufDJs+0SvzgXDMgrysDrdl/RfKLsHA9qg29jYaPxeq9WiVqs1\n/q5UKnF8fBwREUdHRzExMdGY92B/6/j4OK5du1a4DB/HBQAAICIiFhcXC+fNzMzE5uZmzM/Px9bW\nViwsLDTmTU1Nxfb2dkxNTcXx8XFjxDSPj+MCAADQVLVajfHx8VhZWYkrV67E9PR0rK2tRUTE888/\nH3/zN38Td+7ciV/91V+9tB0joQAAALTkwa9liYhYXl6OiIgbN27Eiy++2FIbRkIBAADomaYjoZd9\nyegocmM8o6CT4/6JJ57o4pr8QN76pDgWU5zvOl3PonUaxNc/iNeLXq1TO8tpZ9sN4nvaqTK8pjKs\nY9noP/XGIF7HIM8j56Nerg0AAICe8XFcAAAAekYIBQAAoGeEUAAAAHpGCAUAAKBnhFAAAAB6RggF\nAACgZ/4fR2DQAZWM47AAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_microstructures(X_train[::200])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `MKSHomogenizationModel` uses 2-point statistics, so we need provide a discretization method for the microstructures by providing a basis function. We will also specify which correlations we want." + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from pymks import MKSHomogenizationModel\n", + "\n", + "prim_basis = PrimitiveBasis(n_states=2, domain=[0, 1])\n", + "homogenize_model = MKSHomogenizationModel(basis=prim_basis,\n", + " correlations=[(0, 0), (1, 1), (0, 1)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's fit our model with the data we created." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "homogenize_model.fit(X_train, y_train, periodic_axes=[0, 1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's make some new data to see how good our model is." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "n_samples = [10, 10, 10]\n", + "X_test, y_test = make_elastic_stress_random(n_samples=n_samples, size=(51, 51),\n", + " grain_size=grain_size, seed=100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will try and predict the effective stress of our `X_test` microstructures." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "y_pred = homogenize_model.predict(X_test, periodic_axes=[0, 1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `MKSHomogenizationModel` generates low dimensional representations of microstructures and regression methods to predict effective properties. Take a look at the low dimensional representations." + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pymks.tools import draw_components\n", + "\n", + "draw_components(homogenize_model.fit_data, homogenize_model.predict_data, \n", + " label_1='Training Data', label_2='Testing Data')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's look at a goodness of fit plot for our `MKSHomogenizationModel`." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nuLiY4OBg+vXrh6enJ9nZ2fzwww+YTCZGjhxJx44dGT9+PFu2bGHu3LloNBpn0HMs8Haz700QblZD\njeBKPBDPwQ2rkVstmKUyYidPZ+DQuEYocRURUGqxYvua3z74q+hHBbPyh7X1/vBvjGvWxmazYTAY\neOaZZ1zWN/Dz82PixInO37t06YJSqeTbb7/l4YcfrvXbtqO57PHHH3emccjJyeHEiRM3DCj+/v7M\nmDEDsH/Inz9/npMnTzoDyv79+1GpVMybN8/5Ae7h4cHy5cvr/wLAuapnSUkJbdq0ISIigoiICOfz\ndOnShcrKSo4cOcLIkSPx8PBw/mPt0KGDyxLTbdu2rdd7E4Sb0VDzShIPxHPoy/d5M6oq/c+CL98H\naNSgIgJKLUxYcPd6Km3mFnXN6/H19XW7WE58fDxHjhyhoKAAs7nq3oWFhQQGBrq9lkQiITw83CUn\nUEhICCUlJVit1uvmCoqKinL5PSQkhIsXLzp/v3DhApGRkS5NYHVdw/pmmEwm9uzZQ3JyMoWFhVit\nVue+Gz0D1O+9CUJdNPS8koMbVrsEE4A3onxYsPFbEVCagwL33ziVkvq/ssa45vW4S04YHx/Pli1b\nGDlyJN26dUOtVpOVlcX69etdPiTduXbUk+NbudlsRqlU3tR51ZuzSkpKaN++vcsxCoXiutesi+Li\nYqDqPWzdupXExETGjBlDhw4d8PT05PTp0+zevfuGz3Ar700QrqcxZrvLrRa322WWxv1bFbm8ajF7\n7FQ0u3Uu2zS7dMx6cEqLuubNSklJoU+fPowdO5bIyEg6dux4yx/ct0qj0VBaWuqyzWQyUVlZeUvX\nTU9PR6PROJuuUlJSGDp0KMOHDyciIoKOHTvWOQtrS3xvQut2oxxct9Lxbpa6//JqkTVuHULUUGrh\n6NNY+cNaKm1mlBI5s6Y+c0t9HY1xzetx98doNptrtPcnJyc3yv3rqlOnTvz000+YTCYUCgUAP//8\n8y1d88yZM5w6dcplhNi1z261Wjl+/LjLeY791w4IaInvTWi9GjsHV+zk6Sz48n3eqNbsNT+thNjH\n597SdW9EBJTrGDEkrsE/7BvjmrVxN5ciIiKChIQEOnfuTEBAAMnJyeTl5dXrWg1l2LBhHDx4kM8/\n/5xhw4ZRUlLC3r17USgUN6xB2Gw2iouLyczMxGq1UlJSQnp6OklJSURGRjJy5EjnsRERERw8eJCg\n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\nCSFEoJBHXo20ZcsW4uPjOXnshN/zJp2hlUskhBDtiwSUS6jZ23369OkUFBRQfeo8RcsyvK6RRYhC\nCCGPvC7p7NmzfPjhh57XXQ1mZoz7LYe3/yKLEIUQog4JKJfQq1cvnn32WZ599llZVyKEEBchAaUR\nZs+eTa9evYiLi5MZXEII0QAJKI2gVqu5+eab27oYQgjRrsmgvBBCiGYhAUUIIUSzkIAihBCiWUhA\nEUII0SwkoAghhGgWElCEEEI0izabNlxcXMzixYspKChg1apVqNW1sS0tLY3169czYMAAHnnkEQDs\ndjtLliyhrKyMhIQEbrrpprYquhBCCD/arIdiMpmYO3cu/fv39zk3YsQInnvuOa9jqampjB07lvnz\n55OamorD4WitogohhGiENgsoQUFBhISE+D1nNpu9eiwAubm5DB06FLVaTa9evThxwn/WXyGEEG2j\nw4yhlJeXYzQaATAajZSVlbVxiYQQQtTVblOv1M+ZZTAYKC8vx2KxYLfb/fZusrOzyc7O9rxOSkqi\ne/fuLV7WjsJsNrd1EdoNqYtaUhduUg+11q5d6/k5JiaGmJiYRr2v3fZQFEXxet2/f3/279+Py+Xi\n6NGj9OjRw+c9MTExJCUlef6rWymBTuqiltRFLakLN6mHWmvXrvX6PdrYYAJtGFCcTicLFizg6NGj\nJCcnc/jwYVasWAFAZmYmb775JgcOHODVV18FID4+ni1btjBv3jwmTJiARqNpq6ILIYTwo80eeWk0\nGp5//nmvY3379gVg+PDhDB8+3OucwWDgqaeearXyCSGEaJp2+8irOTSlq9bZSV3UkrqoJXXhJvVQ\n69fUhUqpP1ghhBBCXIZO3UMRQgjReiSgCCGEaBbtdh3KpUgusFpNrYv09HQ2bNhAaGgoffv2ZebM\nmW1V9GZ3sbpISUlh7969AEyfPp0hQ4YEbLvwVxeB2i42bNhAVlYWVVVVTJkyheuvvz5g24W/umhS\nu1A6qKqqKqW0tFR54YUXFKfT6XXOZrMphYWFyuuvv+459umnnypbtmxRnE6nMnfuXKW6urq1i9xi\nmloXGzduVFJTU1u7mK3iYnVx6tQpRVEUpaysTJk7d66iKIHbLvzVRaC2C4fDoSiKotjtduW5555T\nFCVw24W/umhKu+iwj7wkF1itptYFwOeff868efM4cOBASxevVV2sLiIiIgDQarWeTAyB2i781QUE\n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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pymks.tools import draw_goodness_of_fit\n", + "\n", + "fit_data = np.array([y_train, \n", + " homogenize_model.predict(X_train, periodic_axes=[0, 1])])\n", + "pred_data = np.array([y_test, y_pred])\n", + "\n", + "draw_goodness_of_fit(fit_data, pred_data, ['Training Data', 'Testing Data'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks good.\n", + "\n", + "The `MKSHomogenizationModel` can be used to predict effective properties and processing-structure evolutions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Predict Local Properties" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section of the intro, we are going to predict the local strain field in a microstructure using `MKSLocalizationModel`, but we could have predicted another local property.\n", + "\n", + "First we need some data, so let's make some." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from pymks.datasets import make_elastic_FE_strain_delta\n", + "\n", + "X_delta, y_delta = make_elastic_FE_strain_delta()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once again, `X_delta` is our microstructures and `y_delta` is our local strain fields. We need to discretize the microstructure again so we will also use the same basis function." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from pymks import MKSLocalizationModel\n", + "\n", + "prim_basis = PrimitiveBasis(n_states=2)\n", + "localize_model = MKSLocalizationModel(basis=prim_basis)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's use the data to fit our `MKSLocalizationModel`." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "localize_model.fit(X_delta, y_delta)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have fit our model, we will create a random microstructure and compute its local strain field using finite element analysis. We will then try and reproduce the same strain field with our model." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from pymks.datasets import make_elastic_FE_strain_random\n", + "\n", + "X_test, y_test = make_elastic_FE_strain_random()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's look at the microstructure and its local strain field." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoMAAAExCAYAAAAHhKhtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8lOWd9/HvTEiYTA6SAEIhmZxwBENAUNQgghTUivog\nIFHqiaVP11qrXXVtZRFCIN1dq60iiKeWZbGeUkSsVXEjntBilS5nowkJJIMogQQ5zAyQkDx/8DAS\ncpPkutUh7f15v155vWDu6zvXNYcMP35zH1zNzc3NAgAAgCO5T/UCAAAAcOpQDAIAADgYxSAAAICD\nUQwCAAA4GMUgAACAg1EMAgAAOBjFIAAAgINRDH7HZs+erWuvvfZULwMAAMBSl1O9gM7s+CLukUce\nUa9evSzHFRUV6ZNPPpEk3Xrrrbr44osj21wu13e6xu/S7NmzVVZWphdeeOFUL8VSZ18fAAB/DygG\n2+F2u9XU1KS33npLU6ZMabX9iy++0CeffBIZd2Lxd9ttt+nw4cPRWi4AAIARisF2dOvWTd26ddM7\n77yja6+9Vm53y2/WV65cKUk655xz9PHHH7fK9+jRIyrrBIC/Fw0NDVq9erXWrl2rr776SocPH9bB\ngweVm5urcePGqXfv3qd6iYCjUAx2wJgxY/TUU0/pb3/7m4YNGxa5vbGxUe+++67OPPNMpaWlWRaD\nbX2VuX79er3++uvasmWLwuGwkpOTlZWVpcsvv1x5eXmSpM2bN2vOnDm65pprNGTIEP3xj39UeXm5\nQqGQHn30UfXo0UMNDQ169dVXtWrVKtXW1srtdiszM1M/+MEPlJ+f32reNWvW6LXXXtP27dsVDAaV\nmJio733vexo+fLguvfRS1dbW6vbbb4+MP/7r8rPOOkuFhYWSjnY9JenBBx9USUmJPvroI9XX12vi\nxImaPHmyHn30Ub333nuRdR7v+Mc1efLkFtsOHDigV155RWvWrFFtba1iYmLUs2dPDRkyRJMmTdLe\nvXs7tL5rr722xd+PZ7W2Y4971KhRuvrqq/XCCy9o8+bN2r9/vwoLC3XWWWdJktatWxd53Q4ePKjU\n1FSdf/75mjhxorxeb6u5AHxt+/bteu2113TRRRfpjjvuiHybcuDAAS1fvlw1NTUUg0CUUQx2wIgR\nI7RkyRKtXLmyRTG4Zs0a7du3TzfccIO++OILo/ssKSnRiy++KI/Ho2HDhqlHjx6qr6/XZ599plWr\nVkWKwWPKy8u1fPly9e/fX2PGjNG+ffvUpUsXNTY26le/+pXKysrUt29fXXbZZTp06JA+/PBDPfzw\nw9q2bVuLr7fffPNNPfXUU+rWrZvOPfdcJScna+/evaqurtY777yjSy+9VImJibrmmmv0zjvvaPfu\n3S2KtZ49e7ZYV2Njo4qKihQMBjV48GB5vd6T7ltp5cSv1Wtra1VUVKTdu3crOztbl156qZqbm7Vj\nxw69+uqrxuuzY+fOnZoxY4b69OmjkSNH6vDhw5Ei749//KOWLl2qxMREnXPOOUpOTlZ1dbVeeeUV\nrV27VsXFxYqPj//GawD+UT333HO66667FBMT0+L2xMRE3XDDDadoVYCzUQx2gMfj0fDhw/Xuu++q\nvr5eqampko5+Rez1epWfn69ly5Z1+P7Wr1+vF198UaeffrrmzJmjlJSUFtvr6+tbZTZs2KAf//jH\nGjt2bIvbX3rpJZWVlWnIkCH6xS9+Efkae/LkyZo+fbqWL1+uc845R36/X5JUWlqqLl266IEHHlBy\ncnKL+zpw4IAkyev1avLkydq8ebN2796ta6655qSP5auvvlJ6errmzJmjuLi4Dj8HJ/PII49o9+7d\nmjJliq6++upW6+vatatiY2M7vD47Pv30U02YMEHXXXddi9s3bdqkpUuXyu/3a/r06S26gO+8844e\ne+wxlZSU6Oabb/5W1wP8owiFQmpsbGxVCAI4tTi1TAeNHTs2ciCJJO3atUsbNmzQiBEjjIug119/\nXZJ00003tSoEJUWKzeNlZma2KgQl6e2335bL5dJNN93UYn/G5ORkTZo0SdLX+zUe43a7LT+MExMT\njR7HMTfddNO3UghWVVWpoqJCmZmZrQpB6ej6YmNjv/E87enWrZtlgXnsdbvllltafR188cUXKyMj\nQ++///53vj7g75XX61VCQoJKSkr029/+VrNnz9bcuXP1wQcfnOqlAY5GZ7CD+vXrJ5/Pp7fffluT\nJk2KFFhjxowxvq+Kigq5XC6dffbZRvOfKBwOa+fOnUpNTVWfPn1abR84cKAkadu2bZHbLrroIj39\n9NO66667NHz4cA0YMED9+/dv1SXsqLi4OPl8PlvZE5WXl0uSBg8e/K3cn10ZGRnq0qX1r0Z5ebli\nYmK0evVqNTc3t9re2Nioffv26cCBA7YLa+Af2cGDByVJe/bsUTAYVExMjGJjY9m1AjjFKAYNjBkz\n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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pymks.tools import draw_microstructure_strain\n", + "\n", + "draw_microstructure_strain(X_test[0], y_test[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's pass that same microstructure to our `MKSLocalizationModel` and compare the predicted and computed local strain field." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\ny2EAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pymks.tools import draw_strains_compare\n", + "\n", + "\n", + "y_pred = localize_model.predict(X_test)\n", + "draw_strains_compare(y_test[0], y_pred[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Not bad.\n", + "\n", + "The `MKSLocalizationModel` can be used to predict local properties and local processing-structure evolutions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/website/jekyll_site/_data/members.yml b/website/jekyll_site/_data/members.yml new file mode 100644 index 0000000..bc68628 --- /dev/null +++ b/website/jekyll_site/_data/members.yml @@ -0,0 +1,8 @@ +# Members + +- name: Derek Smith + role: Software Developer + img: https://avatars2.githubusercontent.com/u/23437177?s=400&v=4 + bio: Derek is a software developer focusing on Bitcoin Cache Machine. + url: http://www.farscapian.com + visible: true diff --git a/website/jekyll_site/_includes/altmetric.html b/website/jekyll_site/_includes/altmetric.html new file mode 100644 index 0000000..d607f0a --- /dev/null +++ b/website/jekyll_site/_includes/altmetric.html @@ -0,0 +1,6 @@ + + +{% for member in site.data.members %} + + +{% endfor %} \ No newline at end of file diff --git a/website/jekyll_site/_includes/analytics.html b/website/jekyll_site/_includes/analytics.html new file mode 100644 index 0000000..12e7f12 --- /dev/null +++ b/website/jekyll_site/_includes/analytics.html @@ -0,0 +1,11 @@ +{% if site.g-analytics %} + + +{% endif %} \ No newline at end of file diff --git a/website/jekyll_site/_includes/footer.html b/website/jekyll_site/_includes/footer.html new file mode 100644 index 0000000..287acd7 --- /dev/null +++ b/website/jekyll_site/_includes/footer.html @@ -0,0 +1,41 @@ + + diff --git a/website/jekyll_site/_includes/head.html b/website/jekyll_site/_includes/head.html new file mode 100644 index 0000000..6141c31 --- /dev/null +++ b/website/jekyll_site/_includes/head.html @@ -0,0 +1,70 @@ + + + + + + + {% include ogmeta.html %} + + {% if site.altmetric == true %} + + {% include altmetric.html %} + + {% endif %} + + + + {% if page.title %}{{ page.title }} - {{ site.title }}{% else %}{{ site.title }}{% endif %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% include analytics.html %} + + diff --git a/website/jekyll_site/_includes/imagezoom.html b/website/jekyll_site/_includes/imagezoom.html new file mode 100644 index 0000000..4cf8a6b --- /dev/null +++ b/website/jekyll_site/_includes/imagezoom.html @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/website/jekyll_site/_includes/nav.html b/website/jekyll_site/_includes/nav.html new file mode 100644 index 0000000..aff6d3c --- /dev/null +++ b/website/jekyll_site/_includes/nav.html @@ -0,0 +1,38 @@ + + diff --git a/website/jekyll_site/_includes/ogmeta.html b/website/jekyll_site/_includes/ogmeta.html new file mode 100644 index 0000000..85668ee --- /dev/null +++ b/website/jekyll_site/_includes/ogmeta.html @@ -0,0 +1,4 @@ + + + + diff --git a/website/jekyll_site/_layouts/blog.html b/website/jekyll_site/_layouts/blog.html new file mode 100644 index 0000000..d409589 --- /dev/null +++ b/website/jekyll_site/_layouts/blog.html @@ -0,0 +1,6 @@ +--- +layout: default +--- +

{{ page.date | date: "%Y-%m-%d" }} by {{ page.author }}

+ +{{ content }} \ No newline at end of file diff --git a/website/jekyll_site/_layouts/default.html b/website/jekyll_site/_layouts/default.html new file mode 100644 index 0000000..94d4f25 --- /dev/null +++ b/website/jekyll_site/_layouts/default.html @@ -0,0 +1,16 @@ + + + +{% include head.html %} + + + + {% include nav.html %} + + {{ content }} + + {% include footer.html %} + + + + \ No newline at end of file diff --git a/website/jekyll_site/_layouts/page.html b/website/jekyll_site/_layouts/page.html new file mode 100644 index 0000000..0c211fe --- /dev/null +++ b/website/jekyll_site/_layouts/page.html @@ -0,0 +1,41 @@ +--- +layout: default +--- + + +
+
+
+
+
+ {% if page.url == '/' %} + {% if site.icon %} + + {% endif %} + {% else %}{% endif %} +

{{ page.title }}

+ + {{ page.description }} + {% if page.url == '/' %} + Download Source Files +
+ + {% endif %} +
+
+
+
+
+
+ + +{% if page.url == '/' %} +
+ {% endif %} +
+
+
+ {{ content }} +
+
+
diff --git a/website/jekyll_site/_layouts/post.html b/website/jekyll_site/_layouts/post.html new file mode 100644 index 0000000..72e89a7 --- /dev/null +++ b/website/jekyll_site/_layouts/post.html @@ -0,0 +1,176 @@ +--- +layout: default +--- + + +
+
+
+
+
+

{{ page.title }}

+ {% if page.subtitle %} +

{{ page.subtitle }}

+ {% endif %} + Posted by {{ page.author }} on {{ page.date | date: "%B %-d, %Y" }} +
+
+
+
+
+ +{% for post in site.posts %} + +{% if post.title != page.title and post.author == page.author %} + +
+
+ +

Recently by the same author:

+ +
+ + +

{{ post.title }}

+
+ + {% if post.subtitle %} +

{{ post.subtitle }}

+ {% endif %} + + + + + + {% for member in site.data.members %} + {% if member.name == page.author %} + +
+ + + +

{{ member.name }}

+ +

{{ member.role }}

+ + {% if member.github %} + + {% endif %} + + {% endif %} + {% endfor %} + +
+
+ +{% assign recentpost = post.title %} + +{% endif %} + +{% break %} + +{% endfor %} + + + +{% assign relevantpostcount = 0 %} +{% for post in site.posts %} + +{% if post.title != page.title and post.title != recentpost %} +{% for tag in post.tags %} + +{% if page.tags contains tag and relevantpostcount == 0 %} + +
+
+ + +

You may find interesting:

+ +
+ + +

{{ post.title }}

+
+ + {% if post.subtitle %} +

{{ post.subtitle }}

+ {% endif %} + + + + + + {% assign relevantpostcount = 1 %} + + {% continue %} + + {% endif %} + + {% if page.tags contains tag and relevantpostcount == 1 %} + +
+ + +

{{ post.title }}

+
+ + {% if post.subtitle %} +

{{ post.subtitle }}

+ {% endif %} + + + + + + {% assign relevantpostcount = 2 %} + + {% break %} + + {% endif %} + + {% endfor %} + {% endif %} + + {% endfor %} + +
+
+ + +{% include imagezoom.html %} + +
+
+
+
+ + {{ content | markdownify }} + +
+ + + +
+
+
+
+ +
diff --git a/website/jekyll_site/_posts/2018-11-27-introducing-bitcoin-cache-machine.md b/website/jekyll_site/_posts/2018-11-27-introducing-bitcoin-cache-machine.md new file mode 100644 index 0000000..c4626c4 --- /dev/null +++ b/website/jekyll_site/_posts/2018-11-27-introducing-bitcoin-cache-machine.md @@ -0,0 +1,41 @@ +--- +layout: post +title: Introducing Bitcoin Cache Machine +author: farscapian +subtitle: a privacy-preserving Software-defined Data Center +tags: [bitcoin, lightning, software-defined-network] +--- + +Bitcoin Cache Machine is open-source software that implements a self-hosted, privacy-preserving, software-defined network. BCM is built entirely with free and open-source software and is meant primarily for home and small office use in line with the spirit of decentralization. Its broad purpose is to software-define your home or office network with resilient privacy-preserving Bitcoin-related payment and operating IT infrastructure. + +## Status + +Bitcoin Cache Machine is still very new and recommended for testing purposes only. It is far from feature complete and has NOT undergone a formal security evaluation. We’re hoping to increase the community of open-source developers that work on Bitcoin Cache Machine. If you would like to participate in the development of Bitcoin Cache Machine, take a look at the project on Github or consider coordinating with the existing developers in the Keybase Team. + +## Why is Bitcoin Cache Machine is needed + +Before we get into the weeds of what Bitcoin Cache Machine is and what it does, let’s step back and understand WHY Bitcoin Cache Machine is needed. + +Over time, our personal information—our address, family members, favorite childhood pet, elementary school, our Socialist Security Numbers—all the informational tidbits that online services have asked us for over the years, gets hacked. It’s easy to see why. Companies like Experian work each day to collect our sensitive personal information and store it in centralized databases–veritable honeypots for would-be hackers. A single successful hack makes it far more likely that financial fraud will be committed in your name. Fundamentally, this is because the existing (legacy) financial system depends on personal information to establish trust relationships. + +The answer to this craziness is to not disclose our personal information to untrusted third parties in the first place. This is unavoidable to an extent when operating in the legacy financial system. Fortunately we have Bitcoin–a monetary system that operates outside of the existing broken system. In Bitcoin, trust is (partially) established by proving knowledge of private information; it simply doesn’t rely on readily-available personal information. By using Bitcoin, we can reduce the impact of financial fraud being committed in our name. + +Using Bitcoin is a great first step, but there are a myriad of other ways your personal information—or metadata—can be disclosed to third parties. Many web wallets, for example, consult hosted Bitcoin nodes or link to public block explorers, or download transaction history and price data from public servers. Without adequate protection, those hosting these public services can glean and store informational tid-bits, and given enough information, e.g., your public IP address, bitcoin transactions, XPUBs, etc., third parties can determine who you are or how much or WHICH bitcoins are yours! Not great for your privacy! And what about your communication services? Services like Signal help by protecting the content of your messages, but do little to prevent adversaries from compromising your communication metadata. + +To prevent our personal data from being disclosed, we MUST run our own IT infrastructure. Not an easy task for most people. + +## Introducing Bitcoin Cache Machine + +Bitcoin Cache Machine is a software-defined data center capable of automating the deployment and operation of your own privacy-preserving IT infrastructure. It allows you to run a fully-operational data center in your home or office. It’s a platform for bitcoin and lightning-related development. If you have an old computer, you can install BCM on it and software-define your network while simultaneously on-boarding yourself onto the Bitcoin and Lightning economy. + +BCM deploys the latest Bitcoin Core full node so you can start participating in the Bitcoin economy and have full assurance of the underlying financial system. You can deploy BCM with one or more Lightning daemons, web wallet interfaces, databases, etc., or you can package up your own custom software to run against a BCM software stack! BCM is designed to be composable, so you can piece together the components you need like legos! All deployed components are pre-configured to emit logging information to nearby Apache Kafka-based messaging stacks. Kafka provides distributed messaging and event and source logging. Event processing is expected to Kafka Streams 5.0 KSQL API and toolset. One of the development goals of BCM is to provide event schema classification and evolution (via Apache Avro) for all supported components (e.g., bitcoind, lightningd, etc.) which will allow workflow developers to program against a common and structured data model. + +BCM isn’t just about using Bitcoin, it’s about protecting your overall privacy. Whenever possible, BCM uses TOR for outbound client/server and peer-to-peer (e.g., bitcoind, lightningd, etc.) communication. You have the option of exposing various RPC interfaces as authenticated onion sites which is great for mobile apps requiring access to your hosted RPC interfaces. BCM thus requires outbound TCP 9050 to host services on the Internet; fiddling with external firewalls is often unnecessary. + +You can deploy as many BCM instances as you want, you just will need to bring disk, memory, compute, and an internet connection! Key management for your software-defined data center will use hardware wallets for secure cryptographic operations; hardware wallets will function as the trusted Root CA for all client and server certificates deployed within your data center. Each data center/trust boundary you create is operated by a distinct BIP32 path! + +BCM is deployed entirely against the LXD REST API. This means you can run BCM or any of its components on ANY networked computer (or your local machine) capable of running LXD. As it happens, getting a modern Linux distribution ready to host BCM is a snap. The BCM github repo includes shell scripts and cloud-init files that prepare your computer for LXD commands. Getting started with BCM is quick and simple and free since it’s built entirely using open source! + +## Conclusion + +BCM dramatically lowers the barriers to deploying and operating your own privacy-preserving bitcoin payment infrastructure. This network and its components deploy in a fully automated way and run on commodity x86_64, so it’s likely you can start testing it today! You just need to provide CPU, memory, disk, a modern Linux kernel with LXD installed, and an Internet connection! Deploy any combination of BCM components to create the data center that suits your particular needs! diff --git a/website/jekyll_site/_posts/2019-01-12-presentation-slides.md b/website/jekyll_site/_posts/2019-01-12-presentation-slides.md new file mode 100644 index 0000000..67259e8 --- /dev/null +++ b/website/jekyll_site/_posts/2019-01-12-presentation-slides.md @@ -0,0 +1,10 @@ +--- +layout: post +title: Greenville ACM presentation on Bitcoin Cache Machine +subtitle: Problem statement, concept of operations, command line interface, architecture. +date: 2019-01-12 17:00:00 -0500 +tags: [documentation, learning, slides] +author: farscapian +--- + +Here's the link to the [presentation slides.](/assets/bcm_presentation_10Jan19.pdf). \ No newline at end of file diff --git a/website/jekyll_site/_posts/2019-07-25-getting-started-with-bcm.md b/website/jekyll_site/_posts/2019-07-25-getting-started-with-bcm.md new file mode 100644 index 0000000..93c5c61 --- /dev/null +++ b/website/jekyll_site/_posts/2019-07-25-getting-started-with-bcm.md @@ -0,0 +1,28 @@ +--- +layout: post +title: Getting Started with Bitcoin Cache Machine +subtitle: Learn the basics of BCM and how to get it on your machine! +date: 2019-07-20 17:00:00 -0500 +tags: [documentation, learning, slides] +author: farscapian +--- + +It's been a while since I added any posts to this website! To make up for my slack, I'm making a commitment to produce a blog post every couple weeks to demonstrate some of the neat things Bitcoin Cache Machine is capable of! Stay tuned to this website and Twitter. + +In this article, I describe some of the basics of Bitcoin Cache Machine (BCM). This includes how to get it, how and when to use it, and what some of the basic functionalities are. I'll go into greater detail in later posts and show you how you can use all the features provided by BCM. + +BCM is just a bunch of Bash scripts you download to your workstation (laptop/desktop). BCM allows you to deploy Bitcoin-related software to your local computer or to one or more remote machines.BCM integrates all software components so you can work in a trust-minimized manner! You no longer need to rely on untrusted third parties! Ditch those custodial services that can steal or censor your Bitcoin transaction. Say goodbye to third-party block explorers that surveil and log your every query! It's the way Bitcoin was meant to be used--without reliance on anybody but yourself! + +All BCM components are deployed such that services (e.g., bitcoin RPC, bitcoind P2P, clightning RPC, etc) can be securly accessed from your local network secured using a Wireguard VPN. All services are also exposed over Tor onion services when operating from the Internet. Because BCM uses TOR, there's never any need to open firewall ports! + +The scripts provided in the BCM repository provide everything you need to deploy BCM components, whether it's a Bitcoin Core full node, clightning node, Spark web application to manage that node, or a desktop application like Electrum wallet. All components are configured to consult your full node in a trust minimized manner. BCM also includes scripts that allow you to perform manual backup backup and restoration of critical data. BCM is built for privacy: all components are configured to use TOR for outbound communication when possible. You need to have a Trezor-T hardware wallet in order to use BCM. + +## Download BCM to your computer + +INSERT GETTING STARTED INSTRUCTIONS + +## Initialize BCM; download necessary software + +BCM scripts download and install pre-requisites. Software that BCM installs include + +## \ No newline at end of file diff --git a/website/jekyll_site/_posts/2019-08-10-initialize-your-gpg-certs.md b/website/jekyll_site/_posts/2019-08-10-initialize-your-gpg-certs.md new file mode 100644 index 0000000..1e5d150 --- /dev/null +++ b/website/jekyll_site/_posts/2019-08-10-initialize-your-gpg-certs.md @@ -0,0 +1,34 @@ +--- +layout: post +title: Use BCM with your Trezor +subtitle: Initialize your Trezor GPG certificates, make git commits and tags, and login to a remote machine using SSH. +date: 2019-07-20 17:00:00 -0500 +tags: [documentation, learning, slides] +author: farscapian +--- + +## How BCM uses your Trezor + +Most cryptographic operations in BCM use Trezor-backed GPG certificates. We recommend you buy a dedicated Trezor-T device for your BCM activities. + +## Use 'bcm init' to create new GPG certificates and Password Store + +When you first start using BCM, it will detect whether your have initilzed your GPG and password stores. If `~/.gnupg/trezor` doesn't yet exist, you will be prompted to create new GPG certificates. Be sure you have your Trezor handy! Of course, you can always generate them manually by running `bcm init` at the CLI. + +When generating new certificates, you will be asked for the Certificate Title, username, and domain name. This defines the title of your certificate. For example, if your name is `Satoshi Natamoto`, username is `satoshi`, and your domain is `bitcoin.org`, your certificate will look like. + +``` +Satoshi Nakamoto +``` + +After the prompts, BCM scripts communicate with your Trezor to generate them. You can generate the certificates at the BIP32 root of the device, or you're welcom + +## Use 'bcm git' command to create signed git commit and git tags + +## Use 'bcm ssh' to perform SSH authentication with remote machines + +## Use 'bcm file' commands to encrypt and decrypt files + +## Use 'bcm file' commands to create and verify file signatures + +## Use 'bcm pass' commands to create and manage passwords locally \ No newline at end of file diff --git a/website/jekyll_site/_posts/2019-08-20-deploy-your-bitcoin-stacks.md b/website/jekyll_site/_posts/2019-08-20-deploy-your-bitcoin-stacks.md new file mode 100644 index 0000000..d8523a7 --- /dev/null +++ b/website/jekyll_site/_posts/2019-08-20-deploy-your-bitcoin-stacks.md @@ -0,0 +1,9 @@ +--- +layout: post +title: Using BCM to deploy fully-integrated Bitcoin-related software +subtitle: Let's deploy bitcoind, clightning, lnd, spark, ride the lightning, and more! +date: 2019-07-20 17:00:00 -0500 +tags: [documentation, learning, slides] +author: farscapian +--- + diff --git a/website/jekyll_site/_posts/Architecture.md b/website/jekyll_site/_posts/Architecture.md new file mode 100644 index 0000000..c0ca1b0 --- /dev/null +++ b/website/jekyll_site/_posts/Architecture.md @@ -0,0 +1,27 @@ +## Architecture + +BCM is built entirely on Ubuntu (cosmic). BCM can run inside a VM or on bare-metal (preferred). LXD/LXC system containers are used to provision system-level containers (analogous to a VM in the cloud). Docker daemon runs in each LXD system container and is responsible for running application-specific containers. + +TCP 9050 (TOR) outbound is required for BCM to function. This is required since BCM exposes some of the services on the TOR overlay network facilitating client connections (e.g., a wallet app on your phone, or maybe a block explorer). This allows you to host your own infrastructure while maintaining a very cloud-like feel, all without having to fiddle with your external firewall. + +BCM begins by deploying full Bitcoin infrastructure to the environment via LXD system containers running Docker daemon. A Bitcoin full node running Bitcoin Core 16.0 is deployed along with Lightning Network Daemon (lnd) (other implementations planned). BCM includes Kafka infrastructure for distributed messaging and stream processing. All logs are sent to Kafka which is the system of record for user data. Event processing if facilitated by Kafka Streams. + +## Why use Docker Swarm and LXD? + +LXD is used primarily to facilitate multi-tenancy across shared hardware for service provider use cases. Although this is useful for the enterprise providing shared infrastructure, it compromises individual sovereignty (necessarily)! The fact is, if you rely on someone else to run a part of your finances (including the financial system!), you cede your financial sovereignty! Why? Because you're stupidly relying on a "trusted" third-party to validate all transactions (including money supply)! In the 21st centruty, to be secure in your finances means to ALSO to independently validate the underlying financial system upon which you are recording your all your business transactions! Bitcoin is the only public blockchain that is worthy of the property of "secure"! + +## Bitcoin Cache Machine Components + +First, it is important that Bitcoin Cache Machine is designed to be composable. The components listed below may be deployed depending on the desired use case. Second is to remember that the components listed below are simply LXD + +Each Bitcoin Cache Machine deployment includes one or more of the following components: + +* `gateway` - an lxc container that provides essential network services for BCM deployments. `gateway` isn't strictly necessary, but having one on your network greatly improves your privacy and improves the overall experience. `gateway` runs [dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html) which provides DHCP and DNS services for your physical network home or office network. *From the perspective of BCM, this is the physical underlay network*. BCM components, e.g., cachestack, managers, bitcoin, elastic, etc., SHOULD be deployed on `gateway` *physical underlay network*, aka `trusted inside` network. `gateway` allows outbound outbound traffic (i.e., ip forwarding) from the `trusted inside` to `untrusted outside` according to a strict firewall policy, only TCP 9050 (TOR) traffic is allowed. This ensures that all traffic originating on the `trusted inside` is configured to use TOR. More details about `gateway` and its operation can be found at ./lxd/bcm_core/README.md. + +* `cachestack` - a set of LXD components that primarily provide caching services for other BCM components. `cachestack` MAY be installed in either standalone mode (essential for development), in which case it provides caching services to devices on your network, or 2) in combination with other BCM components. Certain BCM components are dependent on one or more caching services that are expected to be hosted on a `cachestack`. If there is no standalone `cachestack` on your LAN segment, BCM installs a local copy and uses it internally; that is, BCM is dependent on a `cachestack` existing. Each `cachestack` hosts a Docker registry mirror configured as a pull-through cache and a private docker registry to store images emitted after the docker image build process. More information about the `cachestack` and its components can be found at ./lxd/cachestack/README.md. + +* `manager1` [required], `manager2` [optional], `manager3` [optional] -- There are manager LXD hosts that 1) provides container service orchestration using [Docker Swarm Mode](https://docs.docker.com/engine/swarm/), and 2) hosts a docker stack that provides event messaging services based on [Apache Kafka](https://kafka.apache.org/). Dependent LXD hosts, e.g., `bitcoin`, `app_host` are configured to LOG messages to one or more upstream `manager` hosts. The docker-ce daemon on each manager host is configured to use a docker registry mirror hosted on an upstream `cachestack`. A Kafka messaging stack is deployed to each manager node for distributed messaging and is the system-of-record for event data. More information on `manager` hosts can be found in "$BCM_LOCAL_GIT_REPO_DIR/lxd/managers/README.md". + +* `bitcoin` -- the `bitcoin` lxd host is built for bitcoin-related services. The dockerd daemon on any `bitcoin` BCM instance is configured to log messages via TCP-based GELF to a `manager` instance which runs a GELF listener. The `bitcoin` LXC host is capable of running a Bitcoin Core full node, one or more Lightning daemons, applications like BTCPay, lightning-charge, etc.. Users may choose which additional components to deploy depending the expected use case. All daemons running on a `bitcoin` BCM instance are configured use TOR for outbound communication. Individual services, e.g,. bitcoind RPC, lnd gRPC, c-lightning RPC, lightning-charge REST API, etc., MAY be exposed as authenticated TOR onion sites. + +* `app_host` -- hosts designed for user applications. Each app_host can be named according to user requirements, examples include hosting an `elastic` database for visualizing data originating from a Kafka topic, or perhaps `streamhost` for stream processing to/from Kafka topics. Developers choosing BCM as an operating platform create custom code and organize it here. /lxd/app_host/README.md provides BASH scripts for provisioning each `app_host`. Users simply develop associated `$BCM_LOCAL_GIT_REPO_DIR/docker_stack` files `$BCM_LOCAL_GIT_REPO_DIR/docker_image` files to deploy a custom app. diff --git a/website/jekyll_site/_posts/Home.md b/website/jekyll_site/_posts/Home.md new file mode 100644 index 0000000..87bcad7 --- /dev/null +++ b/website/jekyll_site/_posts/Home.md @@ -0,0 +1,6 @@ +### Welcome to the Bitcoin Cache Machine Wiki! + +This wiki contains all technical documentation including architectural descriptions of the system. + +* [Installation Guides](https://github.com/BitcoinCacheMachine/BitcoinCacheMachine/InstallationGuide) +* [User Guide](https://github.com/BitcoinCacheMachine/BitcoinCacheMachine/UserGuide) diff --git a/show.sh b/website/jekyll_site/_posts/InstallationGuide.md old mode 100755 new mode 100644 similarity index 100% rename from show.sh rename to website/jekyll_site/_posts/InstallationGuide.md diff --git a/website/jekyll_site/_posts/_Sidebar.md b/website/jekyll_site/_posts/_Sidebar.md new file mode 100644 index 0000000..e93ccf1 --- /dev/null +++ b/website/jekyll_site/_posts/_Sidebar.md @@ -0,0 +1,7 @@ +[Bitcoin Cache Machine](https://github.com/BitcoinCacheMachine/BitcoinCacheMachine) + +* Installation + * [Installation Guides](https://github.com/BitcoinCacheMachine/BitcoinCacheMachine/InstallationGuide) + +* Usage + * [User Guide](https://github.com/BitcoinCacheMachine/BitcoinCacheMachine/UserGuide) diff --git a/website/jekyll_site/_posts/bcm_core.md b/website/jekyll_site/_posts/bcm_core.md new file mode 100644 index 0000000..480d0e7 --- /dev/null +++ b/website/jekyll_site/_posts/bcm_core.md @@ -0,0 +1,30 @@ +# IMPORTANT NOTE + +This section is still under construction. Your attempts at running scripts here will likely fail at the moment. Once we get a stable product with a semi-complete feature set, we will merge changes into the master branch. Feel free to inspect the codebase to see what we're working on! + +# Deploying Bitcoin Cache Machine components using the LXD API + +This is where BCM data center components reside. The main entrypoint at this level is `./up_lxc_project.sh`. This script calls subscripts to provision the data center. BCM Environment variables, which are refreshed (i.e., exported) every time any script executes, guide the logic the installation and deployment process. All `up_lxc_*.sh` scripts are designed to be idempotent; running the scripts multiple times SHOULD NOT change the resulting data center deployment. + +## Assumptions + +The instructions in this directory make the following assumptions: + +1. you have one or more LXD remote endpoints defined on the `dev machine`. You can run `lxc remote list`, or `lxc remote get-default` to view the current LXD endpoints you have defined on your `dev machine`. The endpoint could be local, in which case BCM will be deployed to the LXD daemon running on the `dev machine` (developer machine). It could be the result of ../up_multipass.sh, which creates a new multipass-based VM with a remote LXD daemon, or it could be a home server that you've [manually provisioned](../../docs/installation/lxd_host_prep.md) +2. All scripts with `lxc` in the name ASSUMES that the commands are being executed against to THE CURRENT LXD remote endpoint. Issue the `lxc remote get-default` command to determine your active endpoint. +3. BCM LXD scripts SHOULD be loaded PRIOR to executing any `lxd` scripts. [These environment variables define BCM-specific deployment options](../resources/README.md). The files in ../resources/ MUST be copied to the $BCM_RUNTIME_DIR/defaults/ directory unless you want to fork Bitcoin Cache Machine. When executed, `../../setup.sh` at the root of this repository creates the necessary files and directories (including $BCM_RUNTIME_DIR) to create BCM instances in idiomatic manner. All endpoint-specific information is kept in $BCM_RUNTIME_DIR on the `admin machine`. Thus, you should back it up and protect it accordingly. Future versions of BCM will integrate Trezor-T on-board storage for management of this sensitive information (including key and password management). + +Decide where you want to run your BCM workload. You can deploy BCM to the `dev machine` for quick and convenient testing. You can consider running BCM in a [multipass-based VM](./multipass/) or in a [cloud provider via cloud-init](./cloud_providers/). `multipass` VMs use lower-level hardware-based virtualization which provide additional security guarantees. In the end, all you need to run BCM component is a LXD endpoint configured and controllable by your `dev machine`. Use the `lxc remote list`, `lxc remote get-default` and related commands. + +## Privilege Levels + +Unfortuantely, BCM is currently built entirely on privileged LXC containers. This is because Docker swarm could not be made functional using unprivileged containers. There are several mitigating factors that reduce the overall risk involved with this limitation: + +* `dockerd` runs within each privileged LXC container, hus `dockerd`-level process isolation is in effect for running application-level containers. +* The network-level attack surface of BCM is extremely small. By default BCM exposes ZERO services to the local network interfaces EXCEPT for the LXD endpoint (for the management plane). Any service exposed to the internet is exposed as an authenticated onion whenever possible. This provides cloud-like connectivity to your BCM instance in your home or office. You get end-to-end encryption and IP anonymity as well as Layer 4 authentication. + +### priviliged.yml + + +### unprivileged.yml + diff --git a/website/jekyll_site/_posts/cluster.md b/website/jekyll_site/_posts/cluster.md new file mode 100644 index 0000000..4ef95c1 --- /dev/null +++ b/website/jekyll_site/_posts/cluster.md @@ -0,0 +1,66 @@ +# Multipass and Bitcoin Cache Machine + +[`multipass`](https://github.com/CanonicalLtd/multipass) is software (available as a [snap](https://snapcraft.io/)) that orchestrates the creation, management, and maintenance of QEMU/KVM VMs. Multipass is installed on the `dev machine` when running provisioning scripts found in `$BCM_LOCAL_GIT_REPO_DIR/lxd_projects/` BCM scripts use the `multipass` CLI to create one or more hardware-enforced VMs. Each VM created by BCM multipass scripts runs a cloud-based Ubuntu image. + +The scripts in this directory help you get started testing BCM quickly. Running `./up_multipass_cluster.sh -c CLUS1 -m 3` at the terminal will create a series of multipass VMs. Each VM will be named CLUS1-00, CLUS1-01, ... The last parameter is the number of member nodes you want in your LXD cluster. In the example, there will be 4 VMs total, one for the cluster master (assumed) and 3 additional member nodes. If you run `./up_multipass_cluster.sh CLUS1` (without the integer parameter), a single VM will be created. In all cases, `up_multipass_cluster.sh` leaves you with one or more Ubuntu VMs that are up-to-date and have necessary dependencies. Furthermore, LXD in each VM is [preseeded](https://lxd.readthedocs.io/en/latest/clustering/#preseed) and configured to operate in a cohesive cluster. + +Each VM represents available CPU, memory, disk, and networking that you can use to deploy BCM components. + +# multipass Requirements + +To run multipass, you must have a computer capable of running QEMU/KVM-based VMs which is typical with a developer or server machine. In some cases, you might have to visit your BIOS to ensure that hardware-based virtualization features are enabled. Low-end laptops typical of the DEV market may not have the necessary hardware requirements to run BCM in a multipass VM. However, you can always run BCM on [bare-metal](./lxd/README.md)! + +To install `multipass` manually, run the following command. Also remember that `$BCM_LOCAL_GIT_REPO_DIR/lxd_projects/setup.sh` installs `multipass` on the `dev machine` during provisioning as well. + +```bash +sudo snap install lxd --candidate +``` + +# Script descriptions + +Each section below briefly explains what each script does. The end goal of all the scripts is to deliver one or more VMs, all of which are configured as an LXD cluster. Each VM is a place where you can deploy one or more BCM components! + +>WARNING: You can create a cluster of multipass VMs all on the same host, but you really should have distinct physical hosts to increase your [failure domains](https://en.wikipedia.org/wiki/Failure_domain). Creating a local cluster on your `dev machine`, however, is great for testing! + +## Creation Scripts + +### ./up_multipass_cluster.sh + +This is what you're going to run when in the ./multipass directory. It has 2 parameters: `-c` for the cluster name, and `-m` for the number of additional nodes beyond 1 you want provisioned. Pertinent examples, + +* `./up_multipass_cluster.sh -c DEV -m 2` -- This will provision a total of three multipass VMs each prepended with "DEV". The VMs will be "DEV-00", "DEV-01", and "DEV-02". This is the recommended command when testing on the `dev machine` since it provisions a cluster of machines (representing physical hosts) that allow a quorum to be reached. Of course, BCM works just as well when developing against a single-host cluster. +* `./up_multipass_cluster.sh -c DEV` -- This will provision one multipass VM named "DEV-00". DEV-00 will still be configured to operate in a LXD cluster even though it hasn't reached a quorum. + +### ./stub.env.sh + +This script creates the .env file needed for each LXD endpoint. `./stub_env.sh` uses the `envsubst` command to substitute environment variables from the template files in the ./env/ directory. The resulting file gets stored at `$BCM_RUNTIME_DIR/clusters/$BCM_CLUSTER_NAME/endpoints/$BCM_CLUSTER_ENDPOINT_NAME/.env`. This file contains, the VM multipass VM name, the LXD secret (randomly generated), and the multipass CPU, memory, and disk space used during provisioning. + +### ./multipass_vm_up.sh + +This script actually creates the VM using the `multipass` cli. The `multipass launch` command passes a [cloud-init](https://cloud-init.io/) file to the VM for provisioning directly after launch. The static `./cloud_init.yml` is used to initially provision ALL multipass hosts (master and members). The `cloud-init` file installs all necessary base OS dependencies like [ZFS](https://en.wikipedia.org/wiki/ZFS), which is used as the LXD container storage backend, and `wait-for-it`, which is helpful to determine when service come online. (TODO `tor` is also installed for optionally exposing the LXD REST API over an authenticated onion service). The cloud-init definition also removes the default LXD client that comes with the Ubuntu base image and instead installs the latest candidate LXD via snap. + +This script continues by obtaining the runtime IP address of the multipass VM then passing control over to either `./provision_lxd_master.sh` or `./provision_lxd_member.sh`, depending on whether the multipass VM is the first host in the cluster, i.e., the host ending in '-00'. + +### provision_lxd_master.sh + +This script starts by creating an LXD preseed file, storing it in `$BCM_RUNTIME_DIR/clusters/$BCM_CLUSTER_NAME/endpoints/$BCM_CLUSTER_ENDPOINT_NAME/lxd/`. The resulting file is copied up to the multipass VM then the `lxd init` command is issued, passing in the preseed file. After the LXD daemon is configured in the multipass VM, the resulting lxd.cert file in the daemon is copied back to the `dev_machine` for subsequent provisioning activities. The lxd.cert is stored in the same directory as the LXD preseed file. + +`provision_lxd_master.sh` completes by adding an LXD remote to the `dev_machine` lxd client (via `lxc remote add`). Furthermore, the lxc remote is defaulted to first cluster member (i.e., "-00") via `lxd remote set-default`. This allows you to pass control to BCM provisioning scripts in the `$BCM_LOCAL_GIT_REPO_DIR/lxd/` directory. + +### provision_lxd_member.sh + +`provision_lxd_member.sh` performs similar functions to `provision_lxd_master.sh` and is required because LXD preseed files for VMs joining an existing cluster is different from the first host in the cluster. All resulting preseed files are stored under `$BCM_RUNTIME_DIR/clusters/$BCM_CLUSTER_NAME/endpoints/$BCM_CLUSTER_ENDPOINT_NAME/lxd/`. + +## Destruction Scripts + +### ./destroy_cluster.sh + +This script iterates over the VMs that have the specified cluster name and deletes them. It also removes related files and directories in `$BCM_RUNTIME_DIR/clusters/$BCM_CLUSTER_NAME`. You can initiate this script with the following command. + +./destroy_cluster.sh -c DEV + +In the example above, "DEV" is the name of the cluster you want destroyed. + +### ./destroy_multipass.sh + +This script is called by `./destroy_cluster.sh` and performs destruction processes scoped to a single VM/LXD endpoint. \ No newline at end of file diff --git a/website/jekyll_site/_posts/gateway.md b/website/jekyll_site/_posts/gateway.md new file mode 100644 index 0000000..6bc1193 --- /dev/null +++ b/website/jekyll_site/_posts/gateway.md @@ -0,0 +1,33 @@ +* +* TOR SOCKS5 PROXY configured to perform DNS over TOR +* An HTTP proxy configured to use the TOR service for outbound HTTP requests. + + +# `gateway` + +The `gateway` LXC container is intended to be deployed on computer that has at least two (2) physical network interfaces each connected to a distinct L2 broadcast domain. These interfaces are the `untrusted outside` and `trusted inside` interfaces and MUST exist as separate physical L2 broadcast domains. + +For the `untrusted outside` interface, macvlan is used to obtain an IP address and default gateway from the upstream DHCP server such that might be running on your DSL or cable modem or the Linksys or Netgear router providing DHCP on your internal home or office network. Since `gateway` uses macvlan on the `untrusted outside` interface, it can be used as the LXD endpoint, though would exist on a separate IP address. The outside interface obtains IP and default gateway information from a DHCP server upstream, such as a DSL or cable modem or your existing network. + +It's important to understand that the network `bcmnet` can be configured to attach to a physical LAN segment. This is required when you want to run your home or office network on more than one computer which is required if you require any kind of scale or if you need to run a component on specialized hardware (e.g., Bitcoin miner or IoT sensors). + +## Required Services provided by `bcm-gateway` + +## DHCP + +DHCP clients requesting an IP information SHOULD provide a hostname which is auto-pushed into the DNS. + +## DNS + +Both the `untrusted outside` and `trusted inside` interfaces MUST be explicitly set by the administrator (see ./resources/defaults/gateway.env). + +## Docker Registry Mirror Image Cache + +The registry mirror hosted on `gateway` is configured to use [certificate-based client-server authentication](https://docs.docker.com/engine/security/certificates/). Docker daemons having access to bcmnet use this mirror as an image-cache-of-last-resort. TODO is to implement TOR for outbound communication by docker registry process if possible. Note that general strategy, if possible, is to rely on privately built images, which get stored in the Private Registry (see below). + +## Docker Private Registry + +The Private Registry hosts all custom-built images. BCM structures docker image layers to minimze disk usage. Downstream docker daemons on `bcmnet` may push images to the private registry. The general strategy for creating custom docker images is to create an ephemeral build lxc container. These temporary `builder` containers pull base images from the Registry Mirror then performs the build process using `docker build`. Scripts then push the tagged image to the private registry located at `bcmnet:443`. Communication is secured using TLS 1.3 and uses certificate-based client-server authentication. + +## Squid HTTPS proxy + diff --git a/website/jekyll_site/_posts/host_template.md b/website/jekyll_site/_posts/host_template.md new file mode 100644 index 0000000..a48c7f3 --- /dev/null +++ b/website/jekyll_site/_posts/host_template.md @@ -0,0 +1,9 @@ + + +# bcm_host_template + +This repo is shared by BCM `cachestack` and Bitcoin Cache Machine. `./up_lxc.sh` provisions a host template based on Ubuntu (Cosmic) and with the latest docker daemon. + +## Storage + +The ZFS file system is used for back LXD system containers. However, each /var/lib/docker directory in each system container is "bind-mounted" (using lxc ) and so exists outside of the ZFS storage pool. One could theoretically back the ZFS storage pool with multiple physical disks for a software-defined RAID-like experience. \ No newline at end of file diff --git a/website/jekyll_site/_posts/key_backup.md b/website/jekyll_site/_posts/key_backup.md new file mode 100644 index 0000000..2858e63 --- /dev/null +++ b/website/jekyll_site/_posts/key_backup.md @@ -0,0 +1,3 @@ +# Key Backup Strategies + +As you know, BCM uses hardware wallets for secure cryptographic operations. It is thus very important that you follow appropriate key management strategies, and this includes key backups. This section specifically addresses the backup and restoration activites you can take to secure your keys. There are several areas to consider. \ No newline at end of file diff --git a/website/jekyll_site/_site/2018/11/27/introducing-bitcoin-cache-machine/index.html b/website/jekyll_site/_site/2018/11/27/introducing-bitcoin-cache-machine/index.html new file mode 100644 index 0000000..3ee4307 --- /dev/null +++ b/website/jekyll_site/_site/2018/11/27/introducing-bitcoin-cache-machine/index.html @@ -0,0 +1,411 @@ + + + + + + + + + + + + + + + + + + + + Introducing Bitcoin Cache Machine - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Introducing Bitcoin Cache Machine

+ +

a privacy-preserving Software-defined Data Center

+ + Posted by farscapian on November 27, 2018 +
+
+
+
+
+ + + + + +
+
+ +

Recently by the same author:

+ +
+ + +

Using BCM to deploy fully-integrated Bitcoin-related software

+
+ + +

Let's deploy bitcoind, clightning, lnd, spark, ride the lightning, and more!

+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+
+
+ +

Bitcoin Cache Machine is open-source software that implements a self-hosted, privacy-preserving, software-defined network. BCM is built entirely with free and open-source software and is meant primarily for home and small office use in line with the spirit of decentralization. Its broad purpose is to software-define your home or office network with resilient privacy-preserving Bitcoin-related payment and operating IT infrastructure.

+ +

Status

+ +

Bitcoin Cache Machine is still very new and recommended for testing purposes only. It is far from feature complete and has NOT undergone a formal security evaluation. We’re hoping to increase the community of open-source developers that work on Bitcoin Cache Machine. If you would like to participate in the development of Bitcoin Cache Machine, take a look at the project on Github or consider coordinating with the existing developers in the Keybase Team.

+ +

Why is Bitcoin Cache Machine is needed

+ +

Before we get into the weeds of what Bitcoin Cache Machine is and what it does, let’s step back and understand WHY Bitcoin Cache Machine is needed.

+ +

Over time, our personal information—our address, family members, favorite childhood pet, elementary school, our Socialist Security Numbers—all the informational tidbits that online services have asked us for over the years, gets hacked. It’s easy to see why. Companies like Experian work each day to collect our sensitive personal information and store it in centralized databases–veritable honeypots for would-be hackers. A single successful hack makes it far more likely that financial fraud will be committed in your name. Fundamentally, this is because the existing (legacy) financial system depends on personal information to establish trust relationships.

+ +

The answer to this craziness is to not disclose our personal information to untrusted third parties in the first place. This is unavoidable to an extent when operating in the legacy financial system. Fortunately we have Bitcoin–a monetary system that operates outside of the existing broken system. In Bitcoin, trust is (partially) established by proving knowledge of private information; it simply doesn’t rely on readily-available personal information. By using Bitcoin, we can reduce the impact of financial fraud being committed in our name.

+ +

Using Bitcoin is a great first step, but there are a myriad of other ways your personal information—or metadata—can be disclosed to third parties. Many web wallets, for example, consult hosted Bitcoin nodes or link to public block explorers, or download transaction history and price data from public servers. Without adequate protection, those hosting these public services can glean and store informational tid-bits, and given enough information, e.g., your public IP address, bitcoin transactions, XPUBs, etc., third parties can determine who you are or how much or WHICH bitcoins are yours! Not great for your privacy! And what about your communication services? Services like Signal help by protecting the content of your messages, but do little to prevent adversaries from compromising your communication metadata.

+ +

To prevent our personal data from being disclosed, we MUST run our own IT infrastructure. Not an easy task for most people.

+ +

Introducing Bitcoin Cache Machine

+ +

Bitcoin Cache Machine is a software-defined data center capable of automating the deployment and operation of your own privacy-preserving IT infrastructure. It allows you to run a fully-operational data center in your home or office. It’s a platform for bitcoin and lightning-related development. If you have an old computer, you can install BCM on it and software-define your network while simultaneously on-boarding yourself onto the Bitcoin and Lightning economy.

+ +

BCM deploys the latest Bitcoin Core full node so you can start participating in the Bitcoin economy and have full assurance of the underlying financial system. You can deploy BCM with one or more Lightning daemons, web wallet interfaces, databases, etc., or you can package up your own custom software to run against a BCM software stack! BCM is designed to be composable, so you can piece together the components you need like legos! All deployed components are pre-configured to emit logging information to nearby Apache Kafka-based messaging stacks. Kafka provides distributed messaging and event and source logging. Event processing is expected to Kafka Streams 5.0 KSQL API and toolset. One of the development goals of BCM is to provide event schema classification and evolution (via Apache Avro) for all supported components (e.g., bitcoind, lightningd, etc.) which will allow workflow developers to program against a common and structured data model.

+ +

BCM isn’t just about using Bitcoin, it’s about protecting your overall privacy. Whenever possible, BCM uses TOR for outbound client/server and peer-to-peer (e.g., bitcoind, lightningd, etc.) communication. You have the option of exposing various RPC interfaces as authenticated onion sites which is great for mobile apps requiring access to your hosted RPC interfaces. BCM thus requires outbound TCP 9050 to host services on the Internet; fiddling with external firewalls is often unnecessary.

+ +

You can deploy as many BCM instances as you want, you just will need to bring disk, memory, compute, and an internet connection! Key management for your software-defined data center will use hardware wallets for secure cryptographic operations; hardware wallets will function as the trusted Root CA for all client and server certificates deployed within your data center. Each data center/trust boundary you create is operated by a distinct BIP32 path!

+ +

BCM is deployed entirely against the LXD REST API. This means you can run BCM or any of its components on ANY networked computer (or your local machine) capable of running LXD. As it happens, getting a modern Linux distribution ready to host BCM is a snap. The BCM github repo includes shell scripts and cloud-init files that prepare your computer for LXD commands. Getting started with BCM is quick and simple and free since it’s built entirely using open source!

+ +

Conclusion

+ +

BCM dramatically lowers the barriers to deploying and operating your own privacy-preserving bitcoin payment infrastructure. This network and its components deploy in a fully automated way and run on commodity x86_64, so it’s likely you can start testing it today! You just need to provide CPU, memory, disk, a modern Linux kernel with LXD installed, and an Internet connection! Deploy any combination of BCM components to create the data center that suits your particular needs!

+ + +
+ + + +
+
+
+
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/2019/01/12/presentation-slides/index.html b/website/jekyll_site/_site/2019/01/12/presentation-slides/index.html new file mode 100644 index 0000000..78fa91d --- /dev/null +++ b/website/jekyll_site/_site/2019/01/12/presentation-slides/index.html @@ -0,0 +1,417 @@ + + + + + + + + + + + + + + + + + + + + Greenville ACM presentation on Bitcoin Cache Machine - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Greenville ACM presentation on Bitcoin Cache Machine

+ +

Problem statement, concept of operations, command line interface, architecture.

+ + Posted by farscapian on January 12, 2019 +
+
+
+
+
+ + + + + +
+
+ +

Recently by the same author:

+ +
+ + +

Using BCM to deploy fully-integrated Bitcoin-related software

+
+ + +

Let's deploy bitcoind, clightning, lnd, spark, ride the lightning, and more!

+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + +

You may find interesting:

+ +
+ + +

Use BCM with your Trezor

+
+ + +

Initialize your Trezor GPG certificates, make git commits and tags, and login to a remote machine using SSH.

+ + + + + + + + + + + + + + +
+ + +

Use BCM with your Trezor

+
+ + +

Initialize your Trezor GPG certificates, make git commits and tags, and login to a remote machine using SSH.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/2019/07/20/deploy-your-bitcoin-stacks/index.html b/website/jekyll_site/_site/2019/07/20/deploy-your-bitcoin-stacks/index.html new file mode 100644 index 0000000..f357699 --- /dev/null +++ b/website/jekyll_site/_site/2019/07/20/deploy-your-bitcoin-stacks/index.html @@ -0,0 +1,401 @@ + + + + + + + + + + + + + + + + + + + + Using BCM to deploy fully-integrated Bitcoin-related software - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Using BCM to deploy fully-integrated Bitcoin-related software

+ +

Let's deploy bitcoind, clightning, lnd, spark, ride the lightning, and more!

+ + Posted by farscapian on July 20, 2019 +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + +

You may find interesting:

+ +
+ + +

Use BCM with your Trezor

+
+ + +

Initialize your Trezor GPG certificates, make git commits and tags, and login to a remote machine using SSH.

+ + + + + + + + + + + + + + +
+ + +

Use BCM with your Trezor

+
+ + +

Initialize your Trezor GPG certificates, make git commits and tags, and login to a remote machine using SSH.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/2019/07/20/getting-started-with-bcm/index.html b/website/jekyll_site/_site/2019/07/20/getting-started-with-bcm/index.html new file mode 100644 index 0000000..f9943a6 --- /dev/null +++ b/website/jekyll_site/_site/2019/07/20/getting-started-with-bcm/index.html @@ -0,0 +1,435 @@ + + + + + + + + + + + + + + + + + + + + Getting Started with Bitcoin Cache Machine - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Getting Started with Bitcoin Cache Machine

+ +

Learn the basics of BCM and how to get it on your machine!

+ + Posted by farscapian on July 20, 2019 +
+
+
+
+
+ + + + + +
+
+ +

Recently by the same author:

+ +
+ + +

Using BCM to deploy fully-integrated Bitcoin-related software

+
+ + +

Let's deploy bitcoind, clightning, lnd, spark, ride the lightning, and more!

+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ + +

You may find interesting:

+ +
+ + +

Use BCM with your Trezor

+
+ + +

Initialize your Trezor GPG certificates, make git commits and tags, and login to a remote machine using SSH.

+ + + + + + + + + + + + + + +
+ + +

Use BCM with your Trezor

+
+ + +

Initialize your Trezor GPG certificates, make git commits and tags, and login to a remote machine using SSH.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+
+
+ +

It’s been a while since I added any posts to this website! To make up for my slack, I’m making a commitment to produce a blog post every couple weeks to demonstrate some of the neat things Bitcoin Cache Machine is capable of! Stay tuned to this website and Twitter.

+ +

In this article, I describe some of the basics of Bitcoin Cache Machine (BCM). This includes how to get it, how and when to use it, and what some of the basic functionalities are. I’ll go into greater detail in later posts and show you how you can use all the features provided by BCM.

+ +

BCM is just a bunch of Bash scripts you download to your workstation (laptop/desktop). BCM allows you to deploy Bitcoin-related software to your local computer or to one or more remote machines.BCM integrates all software components so you can work in a trust-minimized manner! You no longer need to rely on untrusted third parties! Ditch those custodial services that can steal or censor your Bitcoin transaction. Say goodbye to third-party block explorers that surveil and log your every query! It’s the way Bitcoin was meant to be used–without reliance on anybody but yourself!

+ +

All BCM components are deployed such that services (e.g., bitcoin RPC, bitcoind P2P, clightning RPC, etc) can be securly accessed from your local network secured using a Wireguard VPN. All services are also exposed over Tor onion services when operating from the Internet. Because BCM uses TOR, there’s never any need to open firewall ports!

+ +

The scripts provided in the BCM repository provide everything you need to deploy BCM components, whether it’s a Bitcoin Core full node, clightning node, Spark web application to manage that node, or a desktop application like Electrum wallet. All components are configured to consult your full node in a trust minimized manner. BCM also includes scripts that allow you to perform manual backup backup and restoration of critical data. BCM is built for privacy: all components are configured to use TOR for outbound communication when possible. You need to have a Trezor-T hardware wallet in order to use BCM.

+ +

Download BCM to your computer

+ +

INSERT GETTING STARTED INSTRUCTIONS

+ +

Initialize BCM; download necessary software

+ +

BCM scripts download and install pre-requisites. Software that BCM installs include

+ +

##

+ + +
+ + + +
+
+
+
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/2019/07/20/initialize-your-gpg-certs/index.html b/website/jekyll_site/_site/2019/07/20/initialize-your-gpg-certs/index.html new file mode 100644 index 0000000..55920bf --- /dev/null +++ b/website/jekyll_site/_site/2019/07/20/initialize-your-gpg-certs/index.html @@ -0,0 +1,440 @@ + + + + + + + + + + + + + + + + + + + + Use BCM with your Trezor - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Use BCM with your Trezor

+ +

Initialize your Trezor GPG certificates, make git commits and tags, and login to a remote machine using SSH.

+ + Posted by farscapian on July 20, 2019 +
+
+
+
+
+ + + + + +
+
+ +

Recently by the same author:

+ +
+ + +

Using BCM to deploy fully-integrated Bitcoin-related software

+
+ + +

Let's deploy bitcoind, clightning, lnd, spark, ride the lightning, and more!

+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +

You may find interesting:

+ +
+ + +

Getting Started with Bitcoin Cache Machine

+
+ + +

Learn the basics of BCM and how to get it on your machine!

+ + + + + + + + + + + + + + +
+ + +

Getting Started with Bitcoin Cache Machine

+
+ + +

Learn the basics of BCM and how to get it on your machine!

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+
+
+ +

How BCM uses your Trezor

+ +

Most cryptographic operations in BCM use Trezor-backed GPG certificates. We recommend you buy a dedicated Trezor-T device for your BCM activities.

+ +

Use ‘bcm init’ to create new GPG certificates and Password Store

+ +

When you first start using BCM, it will detect whether your have initilzed your GPG and password stores. If ~/.gnupg/trezor doesn’t yet exist, you will be prompted to create new GPG certificates. Be sure you have your Trezor handy! Of course, you can always generate them manually by running bcm init at the CLI.

+ +

When generating new certificates, you will be asked for the Certificate Title, username, and domain name. This defines the title of your certificate. For example, if your name is Satoshi Natamoto, username is satoshi, and your domain is bitcoin.org, your certificate will look like.

+ +
Satoshi Nakamoto <satoshi@bitcoin.org>
+
+ +

After the prompts, BCM scripts communicate with your Trezor to generate them. You can generate the certificates at the BIP32 root of the device, or you’re welcom

+ +

Use ‘bcm git’ command to create signed git commit and git tags

+ +

Use ‘bcm ssh’ to perform SSH authentication with remote machines

+ +

Use ‘bcm file’ commands to encrypt and decrypt files

+ +

Use ‘bcm file’ commands to create and verify file signatures

+ +

Use ‘bcm pass’ commands to create and manage passwords locally

+ + +
+ + + +
+
+
+
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/404/index.html b/website/jekyll_site/_site/404/index.html new file mode 100644 index 0000000..08a9eda --- /dev/null +++ b/website/jekyll_site/_site/404/index.html @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/CNAME b/website/jekyll_site/_site/CNAME new file mode 100644 index 0000000..d0ea04c --- /dev/null +++ b/website/jekyll_site/_site/CNAME @@ -0,0 +1 @@ +www.bitcoincachemachine.org \ No newline at end of file diff --git a/website/jekyll_site/_site/Gemfile b/website/jekyll_site/_site/Gemfile new file mode 100644 index 0000000..491cae0 --- /dev/null +++ b/website/jekyll_site/_site/Gemfile @@ -0,0 +1,14 @@ +source 'https://rubygems.org' +gem 'github-pages', group: :jekyll_plugins + +# source "https://rubygems.org" + +# # bundle exec jekyll serve + +# # If you have any plugins, put them here! +# group :jekyll_plugins do +# gem "jekyll-feed", "~> 0.6" +# end + +# gem "github-pages", group: :jekyll_plugins +# gem 'nokogiri', '~> 1.10', '>= 1.10.1' \ No newline at end of file diff --git a/website/jekyll_site/_site/Gemfile.lock b/website/jekyll_site/_site/Gemfile.lock new file mode 100644 index 0000000..8cddb0a --- /dev/null +++ b/website/jekyll_site/_site/Gemfile.lock @@ -0,0 +1,248 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.10) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.4) + dnsruby (1.61.2) + addressable (~> 2.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + ethon (0.12.0) + ffi (>= 1.3.0) + eventmachine (1.2.7) + execjs (2.7.0) + faraday (0.15.4) + multipart-post (>= 1.2, < 3) + ffi (1.10.0) + forwardable-extended (2.6.0) + gemoji (3.0.0) + github-pages (193) + activesupport (= 4.2.10) + github-pages-health-check (= 1.8.1) + jekyll (= 3.7.4) + jekyll-avatar (= 0.6.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.5) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.11.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.9.4) + jekyll-mentions (= 1.4.1) + jekyll-optional-front-matter (= 0.3.0) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.2.0) + jekyll-redirect-from (= 0.14.0) + jekyll-relative-links (= 0.5.3) + jekyll-remote-theme (= 0.3.1) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.5.0) + jekyll-sitemap (= 1.2.0) + jekyll-swiss (= 0.4.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.1) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.3) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.1) + jemoji (= 0.10.1) + kramdown (= 1.17.0) + liquid (= 4.0.0) + listen (= 3.1.5) + mercenary (~> 0.3) + minima (= 2.5.0) + nokogiri (>= 1.8.2, < 2.0) + rouge (= 2.2.1) + terminal-table (~> 1.4) + github-pages-health-check (1.8.1) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (~> 2.0) + typhoeus (~> 1.3) + html-pipeline (2.10.0) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.7.4) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.6.0) + jekyll (~> 3.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.2.0) + commonmarker (~> 0.14) + jekyll (>= 3.0, < 4.0) + jekyll-commonmark-ghpages (0.1.5) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1) + rouge (~> 2) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.11.0) + jekyll (~> 3.3) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.9.4) + jekyll (~> 3.1) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.4.1) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-optional-front-matter (0.3.0) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.2.0) + jekyll (~> 3.0) + jekyll-redirect-from (0.14.0) + jekyll (~> 3.3) + jekyll-relative-links (0.5.3) + jekyll (~> 3.3) + jekyll-remote-theme (0.3.1) + jekyll (~> 3.5) + rubyzip (>= 1.2.1, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-swiss (0.4.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.3) + jekyll (~> 3.5) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.1) + jekyll (~> 3.3) + jekyll-watch (2.1.2) + listen (~> 3.0) + jemoji (0.10.1) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (~> 3.0) + kramdown (1.17.0) + liquid (4.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + mercenary (0.3.6) + mini_portile2 (2.4.0) + minima (2.5.0) + jekyll (~> 3.5) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.11.3) + multipart-post (2.0.0) + nokogiri (1.10.1) + mini_portile2 (~> 2.4.0) + octokit (4.13.0) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (2.0.5) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rouge (2.2.1) + ruby-enum (0.7.2) + i18n + ruby_dep (1.5.0) + rubyzip (1.2.2) + safe_yaml (1.0.4) + sass (3.7.3) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thread_safe (0.3.6) + typhoeus (1.3.1) + ethon (>= 0.9.0) + tzinfo (1.2.5) + thread_safe (~> 0.1) + unicode-display_width (1.4.1) + +PLATFORMS + ruby + +DEPENDENCIES + github-pages + +BUNDLED WITH + 2.0.1 diff --git a/website/jekyll_site/_site/about/index.html b/website/jekyll_site/_site/about/index.html new file mode 100644 index 0000000..b1ca1c6 --- /dev/null +++ b/website/jekyll_site/_site/about/index.html @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + About - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +

About

+ + About Bitcoin Cache Machine + +
+
+
+
+
+
+ + + +
+
+
+

Bitcoin Cache Machine is open-source software that allows you to create a self-hosted privacy-preserving + software-defined data-center. BCM is built entirely with free and open-source software and is meant primarily for + home and small office use in line with the spirit of decentralization.

+ +

BCM runs entirely inside open source Linux, so it's free. It's built entirely with open-source software. You can + deploy BCM instances to one or more clusters located across the Internet. Achieve local high-availability by + deploying BCM to three or more computers. BCM installs software across each failure domain to ensure high + availability.

+ +

BCM is an event-driven system. When something happens, say a lightning invoice is paid, this event gets captured + inside of a distributed Kafka cluster. You can deploy workflows against this event flow to create custom logic that + meets your particular needs.

+ +

+ +

+ Users wanting to contribute to the project may submit pull requests for review. A Keybase + Team has been created for those wanting to discuss project ideas and coordinate.”.

+ +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/assets/bcm_presentation_10Jan19.pdf b/website/jekyll_site/_site/assets/bcm_presentation_10Jan19.pdf new file mode 100644 index 0000000..b13377b Binary files /dev/null and b/website/jekyll_site/_site/assets/bcm_presentation_10Jan19.pdf differ diff --git a/website/jekyll_site/_site/assets/css/style.css b/website/jekyll_site/_site/assets/css/style.css new file mode 100644 index 0000000..97e0029 --- /dev/null +++ b/website/jekyll_site/_site/assets/css/style.css @@ -0,0 +1,2766 @@ +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ +/** 1. Change the default font family in all browsers (opinionated). 2. Prevent adjustments of font size after orientation changes in IE and iOS. */ +html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/** Remove the margin in all browsers (opinionated). */ +body { margin: 0; } + +/* HTML5 display definitions ========================================================================== */ +/** Add the correct display in IE 9-. 1. Add the correct display in Edge, IE, and Firefox. 2. Add the correct display in IE. */ +article, aside, details, figcaption, figure, footer, header, main, menu, nav, section { /* 1 */ display: block; } + +summary { display: list-item; } + +/** Add the correct display in IE 9-. */ +audio, canvas, progress, video { display: inline-block; } + +/** Add the correct display in iOS 4-7. */ +audio:not([controls]) { display: none; height: 0; } + +/** Add the correct vertical alignment in Chrome, Firefox, and Opera. */ +progress { vertical-align: baseline; } + +/** Add the correct display in IE 10-. 1. Add the correct display in IE. */ +template, [hidden] { display: none; } + +/* Links ========================================================================== */ +/** Remove the gray background on active links in IE 10. */ +a { background-color: transparent; /* 1 */ } + +/** Remove the outline on focused links when they are also active or hovered in all browsers (opinionated). */ +a:active, a:hover { outline-width: 0; } + +/* Text-level semantics ========================================================================== */ +/** 1. Remove the bottom border in Firefox 39-. 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ +abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ text-decoration: underline dotted; /* 2 */ } + +/** Prevent the duplicate application of `bolder` by the next rule in Safari 6. */ +b, strong { font-weight: inherit; } + +/** Add the correct font weight in Chrome, Edge, and Safari. */ +b, strong { font-weight: bolder; } + +/** Add the correct font style in Android 4.3-. */ +dfn { font-style: italic; } + +/** Correct the font size and margin on `h1` elements within `section` and `article` contexts in Chrome, Firefox, and Safari. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/** Add the correct background and color in IE 9-. */ +mark { background-color: #ff0; color: #000; } + +/** Add the correct font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` elements from affecting the line height in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sub { bottom: -0.25em; } + +sup { top: -0.5em; } + +/* Embedded content ========================================================================== */ +/** Remove the border on images inside links in IE 10-. */ +img { border-style: none; } + +/** Hide the overflow in IE. */ +svg:not(:root) { overflow: hidden; } + +/* Grouping content ========================================================================== */ +/** 1. Correct the inheritance and scaling of font size in all browsers. 2. Correct the odd `em` font sizing in all browsers. */ +code, kbd, pre, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } + +/** Add the correct margin in IE 8. */ +figure { margin: 1em 40px; } + +/** 1. Add the correct box sizing in Firefox. 2. Show the overflow in Edge and IE. */ +hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } + +/* Forms ========================================================================== */ +/** 1. Change font properties to `inherit` in all browsers (opinionated). 2. Remove the margin in Firefox and Safari. */ +button, input, select, textarea { font: inherit; /* 1 */ margin: 0; /* 2 */ } + +/** Restore the font weight unset by the previous rule. */ +optgroup { font-weight: bold; } + +/** Show the overflow in IE. 1. Show the overflow in Edge. */ +button, input { /* 1 */ overflow: visible; } + +/** Remove the inheritance of text transform in Edge, Firefox, and IE. 1. Remove the inheritance of text transform in Firefox. */ +button, select { /* 1 */ text-transform: none; } + +/** 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` controls in Android 4. 2. Correct the inability to style clickable types in iOS and Safari. */ +button, html [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; /* 2 */ } + +/** Remove the inner border and padding in Firefox. */ +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +/** Restore the focus styles unset by the previous rule. */ +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +/** Change the border, margin, and padding in all browsers (opinionated). */ +fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } + +/** 1. Correct the text wrapping in Edge and IE. 2. Correct the color inheritance from `fieldset` elements in IE. 3. Remove the padding so developers are not caught out when they zero out `fieldset` elements in all browsers. */ +legend { box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } + +/** Remove the default vertical scrollbar in IE. */ +textarea { overflow: auto; } + +/** 1. Add the correct box sizing in IE 10-. 2. Remove the padding in IE 10-. */ +[type="checkbox"], [type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Correct the cursor style of increment and decrement buttons in Chrome. */ +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ +[type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } + +/** Remove the inner padding and cancel buttons in Chrome and Safari on OS X. */ +[type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** Correct the text style of placeholders in Chrome, Edge, and Safari. */ +::-webkit-input-placeholder { color: inherit; opacity: 0.54; } + +/** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to `inherit` in Safari. */ +::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } + +* { box-sizing: border-box; } + +input, select, textarea, button { font-family: inherit; font-size: inherit; line-height: inherit; } + +body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14px; line-height: 1.5; color: #24292e; background-color: #fff; } + +a { color: #0366d6; text-decoration: none; } +a:hover { text-decoration: underline; } + +b, strong { font-weight: 600; } + +hr, .rule { height: 0; margin: 15px 0; overflow: hidden; background: transparent; border: 0; border-bottom: 1px solid #dfe2e5; } +hr::before, .rule::before { display: table; content: ""; } +hr::after, .rule::after { display: table; clear: both; content: ""; } + +table { border-spacing: 0; border-collapse: collapse; } + +td, th { padding: 0; } + +button { cursor: pointer; border-radius: 0; } + +details summary { cursor: pointer; } +details:not([open]) > *:not(summary) { display: none !important; } + +h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 0; } + +h1 { font-size: 32px; font-weight: 600; } + +h2 { font-size: 24px; font-weight: 600; } + +h3 { font-size: 20px; font-weight: 600; } + +h4 { font-size: 16px; font-weight: 600; } + +h5 { font-size: 14px; font-weight: 600; } + +h6 { font-size: 12px; font-weight: 600; } + +p { margin-top: 0; margin-bottom: 10px; } + +small { font-size: 90%; } + +blockquote { margin: 0; } + +ul, ol { padding-left: 0; margin-top: 0; margin-bottom: 0; } + +ol ol, ul ol { list-style-type: lower-roman; } + +ul ul ol, ul ol ol, ol ul ol, ol ol ol { list-style-type: lower-alpha; } + +dd { margin-left: 0; } + +tt, code { font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; } + +pre { margin-top: 0; margin-bottom: 0; font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; } + +.octicon { vertical-align: text-bottom; } + +/* Fade in an element */ +.anim-fade-in { animation-name: fade-in; animation-duration: 1s; animation-timing-function: ease-in-out; } +.anim-fade-in.fast { animation-duration: 300ms; } + +@keyframes fade-in { 0% { opacity: 0; } + 100% { opacity: 1; } } +/* Fade out an element */ +.anim-fade-out { animation-name: fade-out; animation-duration: 1s; animation-timing-function: ease-out; } +.anim-fade-out.fast { animation-duration: 0.3s; } + +@keyframes fade-out { 0% { opacity: 1; } + 100% { opacity: 0; } } +/* Fade in and slide up an element */ +.anim-fade-up { opacity: 0; animation-name: fade-up; animation-duration: 0.3s; animation-fill-mode: forwards; animation-timing-function: ease-out; animation-delay: 1s; } + +@keyframes fade-up { 0% { opacity: 0.8; transform: translateY(100%); } + 100% { opacity: 1; transform: translateY(0); } } +/* Fade an element out and slide down */ +.anim-fade-down { animation-name: fade-down; animation-duration: 0.3s; animation-fill-mode: forwards; animation-timing-function: ease-in; } + +@keyframes fade-down { 0% { opacity: 1; transform: translateY(0); } + 100% { opacity: 0.5; transform: translateY(100%); } } +/* Grow an element width from 0 to 100% */ +.anim-grow-x { width: 0%; animation-name: grow-x; animation-duration: 0.3s; animation-fill-mode: forwards; animation-timing-function: ease; animation-delay: 0.5s; } + +@keyframes grow-x { to { width: 100%; } } +/* Shrink an element from 100% to 0% */ +.anim-shrink-x { animation-name: shrink-x; animation-duration: 0.3s; animation-fill-mode: forwards; animation-timing-function: ease-in-out; animation-delay: 0.5s; } + +@keyframes shrink-x { to { width: 0%; } } +/* Fade in an element and scale it fast */ +.anim-scale-in { animation-name: scale-in; animation-duration: 0.15s; animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); } + +@keyframes scale-in { 0% { opacity: 0; transform: scale(0.5); } + 100% { opacity: 1; transform: scale(1); } } +/* Pulse an element's opacity */ +.anim-pulse { animation-name: pulse; animation-duration: 2s; animation-timing-function: linear; animation-iteration-count: infinite; } + +@keyframes pulse { 0% { opacity: 0.3; } + 10% { opacity: 1; } + 100% { opacity: 0.3; } } +/* Pulse in an element */ +.anim-pulse-in { animation-name: pulse-in; animation-duration: 0.5s; } + +@keyframes pulse-in { 0% { transform: scale3d(1, 1, 1); } + 50% { transform: scale3d(1.1, 1.1, 1.1); } + 100% { transform: scale3d(1, 1, 1); } } +/* Increase scale of an element on hover */ +.hover-grow { transition: transform 0.3s; } +.hover-grow:hover { transform: scale(1.025); } + +/* Add a gray border */ +.border { border: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the top */ +.border-top { border-top: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the right */ +.border-right { border-right: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the bottom */ +.border-bottom { border-bottom: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the left */ +.border-left { border-left: 1px #e1e4e8 solid !important; } + +/* Add a gray border to the left and right */ +.border-y { border-top: 1px #e1e4e8 solid !important; border-bottom: 1px #e1e4e8 solid !important; } + +.border-dashed { border-style: dashed !important; } + +/* Use with .border to turn the border blue */ +.border-blue { border-color: #0366d6 !important; } + +/* Use with .border to turn the border blue-light */ +.border-blue-light { border-color: #c8e1ff !important; } + +/* Use with .border to turn the border green */ +.border-green { border-color: #34d058 !important; } + +/* Use with .border to turn the border green light */ +.border-green-light { border-color: #a2cbac !important; } + +/* Use with .border to turn the border red */ +.border-red { border-color: #d73a49 !important; } + +/* Use with .border to turn the border red-light */ +.border-red-light { border-color: #cea0a5 !important; } + +/* Use with .border to turn the border purple */ +.border-purple { border-color: #6f42c1 !important; } + +/* Use with .border to turn the border yellow */ +.border-yellow { border-color: #d9d0a5 !important; } + +/* Use with .border to turn the border gray-light */ +.border-gray-light { border-color: #eaecef !important; } + +/* Use with .border to turn the border gray-dark */ +.border-gray-dark { border-color: #d1d5da !important; } + +/* Use with .border to turn the border rgba black 0.15 */ +.border-black-fade { border-color: rgba(27, 31, 35, 0.15) !important; } + +/* Remove all borders */ +.border-0 { border: 0 !important; } + +/* Remove the top border */ +.border-top-0 { border-top: 0 !important; } + +/* Remove the right border */ +.border-right-0 { border-right: 0 !important; } + +/* Remove the bottom border */ +.border-bottom-0 { border-bottom: 0 !important; } + +/* Remove the left border */ +.border-left-0 { border-left: 0 !important; } + +/* Remove the border-radius */ +.rounded-0 { border-radius: 0 !important; } + +/* Add a border-radius to all corners */ +.rounded-1 { border-radius: 3px !important; } + +/* Add a 2x border-radius to all corners */ +.rounded-2 { border-radius: 6px !important; } + +/* Add a 50% border-radius to make something into a circle */ +.circle { border-radius: 50% !important; } + +.box-shadow { box-shadow: 0 1px 1px rgba(27, 31, 35, 0.1) !important; } + +.box-shadow-medium { box-shadow: 0 1px 5px rgba(27, 31, 35, 0.15) !important; } + +.box-shadow-large { box-shadow: 0 1px 15px rgba(27, 31, 35, 0.15) !important; } + +.box-shadow-extra-large { box-shadow: 0 10px 50px rgba(27, 31, 35, 0.07) !important; } + +.box-shadow-none { box-shadow: none !important; } + +/* Set the background to $bg-white */ +.bg-white { background-color: #fff !important; } + +/* Set the background to $bg-blue */ +.bg-blue { background-color: #0366d6 !important; } + +/* Set the background to $bg-blue-light */ +.bg-blue-light { background-color: #f1f8ff !important; } + +/* Set the background to $bg-gray-dark */ +.bg-gray-dark { background-color: #24292e !important; } + +/* Set the background to $bg-gray */ +.bg-gray { background-color: #f6f8fa !important; } + +/* Set the background to $bg-gray-light */ +.bg-gray-light { background-color: #fafbfc !important; } + +/* Set the background to $bg-green */ +.bg-green { background-color: #28a745 !important; } + +/* Set the background to $bg-green-light */ +.bg-green-light { background-color: #dcffe4 !important; } + +/* Set the background to $bg-red */ +.bg-red { background-color: #d73a49 !important; } + +/* Set the background to $bg-red-light */ +.bg-red-light { background-color: #ffdce0 !important; } + +/* Set the background to $bg-yellow */ +.bg-yellow { background-color: #ffd33d !important; } + +/* Set the background to $bg-yellow-light */ +.bg-yellow-light { background-color: #fff5b1 !important; } + +/* Set the background to $bg-purple */ +.bg-purple { background-color: #6f42c1 !important; } + +/* Set the background to $bg-purple-light */ +.bg-purple-light { background-color: #f5f0ff !important; } + +.bg-shade-gradient { background-image: linear-gradient(180deg, rgba(27, 31, 35, 0.065), rgba(27, 31, 35, 0)) !important; background-repeat: no-repeat !important; background-size: 100% 200px !important; } + +/* Set the text color to $text-blue */ +.text-blue { color: #0366d6 !important; } + +/* Set the text color to $text-red */ +.text-red { color: #cb2431 !important; } + +/* Set the text color to $text-gray-light */ +.text-gray-light { color: #6a737d !important; } + +/* Set the text color to $text-gray */ +.text-gray { color: #586069 !important; } + +/* Set the text color to $text-gray-dark */ +.text-gray-dark { color: #24292e !important; } + +/* Set the text color to $text-green */ +.text-green { color: #28a745 !important; } + +/* Set the text color to $text-orange */ +.text-orange { color: #a04100 !important; } + +/* Set the text color to $text-orange-light */ +.text-orange-light { color: #e36209 !important; } + +/* Set the text color to $text-purple */ +.text-purple { color: #6f42c1 !important; } + +/* Set the text color to $text-white */ +.text-white { color: #fff !important; } + +/* Set the text color to inherit */ +.text-inherit { color: inherit !important; } + +.text-pending { color: #b08800 !important; } + +.bg-pending { color: #dbab09 !important; } + +.link-gray { color: #586069 !important; } +.link-gray:hover { color: #0366d6 !important; } + +.link-gray-dark { color: #24292e !important; } +.link-gray-dark:hover { color: #0366d6 !important; } + +/* Set the link color to $text-blue on hover Useful when you want only part of a link to turn blue on hover */ +.link-hover-blue:hover { color: #0366d6 !important; } + +/* Make a link $text-gray, then $text-blue on hover and removes the underline */ +.muted-link { color: #586069 !important; } +.muted-link:hover { color: #0366d6 !important; text-decoration: none; } + +.flex-row { flex-direction: row !important; } + +.flex-row-reverse { flex-direction: row-reverse !important; } + +.flex-column { flex-direction: column !important; } + +.flex-wrap { flex-wrap: wrap !important; } + +.flex-nowrap { flex-wrap: nowrap !important; } + +.flex-justify-start { justify-content: flex-start !important; } + +.flex-justify-end { justify-content: flex-end !important; } + +.flex-justify-center { justify-content: center !important; } + +.flex-justify-between { justify-content: space-between !important; } + +.flex-justify-around { justify-content: space-around !important; } + +.flex-items-start { align-items: flex-start !important; } + +.flex-items-end { align-items: flex-end !important; } + +.flex-items-center { align-items: center !important; } + +.flex-items-baseline { align-items: baseline !important; } + +.flex-items-stretch { align-items: stretch !important; } + +.flex-content-start { align-content: flex-start !important; } + +.flex-content-end { align-content: flex-end !important; } + +.flex-content-center { align-content: center !important; } + +.flex-content-between { align-content: space-between !important; } + +.flex-content-around { align-content: space-around !important; } + +.flex-content-stretch { align-content: stretch !important; } + +.flex-auto { flex: 1 1 auto !important; } + +.flex-shrink-0 { flex-shrink: 0 !important; } + +.flex-self-auto { align-self: auto !important; } + +.flex-self-start { align-self: flex-start !important; } + +.flex-self-end { align-self: flex-end !important; } + +.flex-self-center { align-self: center !important; } + +.flex-self-baseline { align-self: baseline !important; } + +.flex-self-stretch { align-self: stretch !important; } + +.flex-item-equal { flex-grow: 1; flex-basis: 0; } + +@media (min-width: 544px) { .flex-sm-row { flex-direction: row !important; } + .flex-sm-row-reverse { flex-direction: row-reverse !important; } + .flex-sm-column { flex-direction: column !important; } + .flex-sm-wrap { flex-wrap: wrap !important; } + .flex-sm-nowrap { flex-wrap: nowrap !important; } + .flex-sm-justify-start { justify-content: flex-start !important; } + .flex-sm-justify-end { justify-content: flex-end !important; } + .flex-sm-justify-center { justify-content: center !important; } + .flex-sm-justify-between { justify-content: space-between !important; } + .flex-sm-justify-around { justify-content: space-around !important; } + .flex-sm-items-start { align-items: flex-start !important; } + .flex-sm-items-end { align-items: flex-end !important; } + .flex-sm-items-center { align-items: center !important; } + .flex-sm-items-baseline { align-items: baseline !important; } + .flex-sm-items-stretch { align-items: stretch !important; } + .flex-sm-content-start { align-content: flex-start !important; } + .flex-sm-content-end { align-content: flex-end !important; } + .flex-sm-content-center { align-content: center !important; } + .flex-sm-content-between { align-content: space-between !important; } + .flex-sm-content-around { align-content: space-around !important; } + .flex-sm-content-stretch { align-content: stretch !important; } + .flex-sm-auto { flex: 1 1 auto !important; } + .flex-sm-shrink-0 { flex-shrink: 0 !important; } + .flex-sm-self-auto { align-self: auto !important; } + .flex-sm-self-start { align-self: flex-start !important; } + .flex-sm-self-end { align-self: flex-end !important; } + .flex-sm-self-center { align-self: center !important; } + .flex-sm-self-baseline { align-self: baseline !important; } + .flex-sm-self-stretch { align-self: stretch !important; } + .flex-sm-item-equal { flex-grow: 1; flex-basis: 0; } } +@media (min-width: 768px) { .flex-md-row { flex-direction: row !important; } + .flex-md-row-reverse { flex-direction: row-reverse !important; } + .flex-md-column { flex-direction: column !important; } + .flex-md-wrap { flex-wrap: wrap !important; } + .flex-md-nowrap { flex-wrap: nowrap !important; } + .flex-md-justify-start { justify-content: flex-start !important; } + .flex-md-justify-end { justify-content: flex-end !important; } + .flex-md-justify-center { justify-content: center !important; } + .flex-md-justify-between { justify-content: space-between !important; } + .flex-md-justify-around { justify-content: space-around !important; } + .flex-md-items-start { align-items: flex-start !important; } + .flex-md-items-end { align-items: flex-end !important; } + .flex-md-items-center { align-items: center !important; } + .flex-md-items-baseline { align-items: baseline !important; } + .flex-md-items-stretch { align-items: stretch !important; } + .flex-md-content-start { align-content: flex-start !important; } + .flex-md-content-end { align-content: flex-end !important; } + .flex-md-content-center { align-content: center !important; } + .flex-md-content-between { align-content: space-between !important; } + .flex-md-content-around { align-content: space-around !important; } + .flex-md-content-stretch { align-content: stretch !important; } + .flex-md-auto { flex: 1 1 auto !important; } + .flex-md-shrink-0 { flex-shrink: 0 !important; } + .flex-md-self-auto { align-self: auto !important; } + .flex-md-self-start { align-self: flex-start !important; } + .flex-md-self-end { align-self: flex-end !important; } + .flex-md-self-center { align-self: center !important; } + .flex-md-self-baseline { align-self: baseline !important; } + .flex-md-self-stretch { align-self: stretch !important; } + .flex-md-item-equal { flex-grow: 1; flex-basis: 0; } } +@media (min-width: 1012px) { .flex-lg-row { flex-direction: row !important; } + .flex-lg-row-reverse { flex-direction: row-reverse !important; } + .flex-lg-column { flex-direction: column !important; } + .flex-lg-wrap { flex-wrap: wrap !important; } + .flex-lg-nowrap { flex-wrap: nowrap !important; } + .flex-lg-justify-start { justify-content: flex-start !important; } + .flex-lg-justify-end { justify-content: flex-end !important; } + .flex-lg-justify-center { justify-content: center !important; } + .flex-lg-justify-between { justify-content: space-between !important; } + .flex-lg-justify-around { justify-content: space-around !important; } + .flex-lg-items-start { align-items: flex-start !important; } + .flex-lg-items-end { align-items: flex-end !important; } + .flex-lg-items-center { align-items: center !important; } + .flex-lg-items-baseline { align-items: baseline !important; } + .flex-lg-items-stretch { align-items: stretch !important; } + .flex-lg-content-start { align-content: flex-start !important; } + .flex-lg-content-end { align-content: flex-end !important; } + .flex-lg-content-center { align-content: center !important; } + .flex-lg-content-between { align-content: space-between !important; } + .flex-lg-content-around { align-content: space-around !important; } + .flex-lg-content-stretch { align-content: stretch !important; } + .flex-lg-auto { flex: 1 1 auto !important; } + .flex-lg-shrink-0 { flex-shrink: 0 !important; } + .flex-lg-self-auto { align-self: auto !important; } + .flex-lg-self-start { align-self: flex-start !important; } + .flex-lg-self-end { align-self: flex-end !important; } + .flex-lg-self-center { align-self: center !important; } + .flex-lg-self-baseline { align-self: baseline !important; } + .flex-lg-self-stretch { align-self: stretch !important; } + .flex-lg-item-equal { flex-grow: 1; flex-basis: 0; } } +@media (min-width: 1280px) { .flex-xl-row { flex-direction: row !important; } + .flex-xl-row-reverse { flex-direction: row-reverse !important; } + .flex-xl-column { flex-direction: column !important; } + .flex-xl-wrap { flex-wrap: wrap !important; } + .flex-xl-nowrap { flex-wrap: nowrap !important; } + .flex-xl-justify-start { justify-content: flex-start !important; } + .flex-xl-justify-end { justify-content: flex-end !important; } + .flex-xl-justify-center { justify-content: center !important; } + .flex-xl-justify-between { justify-content: space-between !important; } + .flex-xl-justify-around { justify-content: space-around !important; } + .flex-xl-items-start { align-items: flex-start !important; } + .flex-xl-items-end { align-items: flex-end !important; } + .flex-xl-items-center { align-items: center !important; } + .flex-xl-items-baseline { align-items: baseline !important; } + .flex-xl-items-stretch { align-items: stretch !important; } + .flex-xl-content-start { align-content: flex-start !important; } + .flex-xl-content-end { align-content: flex-end !important; } + .flex-xl-content-center { align-content: center !important; } + .flex-xl-content-between { align-content: space-between !important; } + .flex-xl-content-around { align-content: space-around !important; } + .flex-xl-content-stretch { align-content: stretch !important; } + .flex-xl-auto { flex: 1 1 auto !important; } + .flex-xl-shrink-0 { flex-shrink: 0 !important; } + .flex-xl-self-auto { align-self: auto !important; } + .flex-xl-self-start { align-self: flex-start !important; } + .flex-xl-self-end { align-self: flex-end !important; } + .flex-xl-self-center { align-self: center !important; } + .flex-xl-self-baseline { align-self: baseline !important; } + .flex-xl-self-stretch { align-self: stretch !important; } + .flex-xl-item-equal { flex-grow: 1; flex-basis: 0; } } +/* Set position to static */ +.position-static { position: static !important; } + +/* Set position to relative */ +.position-relative { position: relative !important; } + +/* Set position to absolute */ +.position-absolute { position: absolute !important; } + +/* Set position to fixed */ +.position-fixed { position: fixed !important; } + +/* Set top 0 */ +.top-0 { top: 0 !important; } + +/* Set right 0 */ +.right-0 { right: 0 !important; } + +/* Set bottom 0 */ +.bottom-0 { bottom: 0 !important; } + +/* Set left 0 */ +.left-0 { left: 0 !important; } + +/* Vertical align middle */ +.v-align-middle { vertical-align: middle !important; } + +/* Vertical align top */ +.v-align-top { vertical-align: top !important; } + +/* Vertical align bottom */ +.v-align-bottom { vertical-align: bottom !important; } + +/* Vertical align to the top of the text */ +.v-align-text-top { vertical-align: text-top !important; } + +/* Vertical align to the bottom of the text */ +.v-align-text-bottom { vertical-align: text-bottom !important; } + +/* Vertical align to the parent's baseline */ +.v-align-baseline { vertical-align: baseline !important; } + +/* Set the overflow hidden */ +.overflow-hidden { overflow: hidden !important; } + +/* Set the overflow scroll */ +.overflow-scroll { overflow: scroll !important; } + +/* Set the overflow auto */ +.overflow-auto { overflow: auto !important; } + +/* Clear floats around the element */ +.clearfix::before { display: table; content: ""; } +.clearfix::after { display: table; clear: both; content: ""; } + +/* Float to the right */ +.float-right { float: right !important; } + +/* Float to the left */ +.float-left { float: left !important; } + +/* Don't float left or right */ +.float-none { float: none !important; } + +@media (min-width: 544px) { /* Float to the left at the sm breakpoint */ + .float-sm-left { float: left !important; } + /* Float to the right at the sm breakpoint */ + .float-sm-right { float: right !important; } + /* No float at the sm breakpoint */ + .float-sm-none { float: none !important; } } +@media (min-width: 768px) { /* Float to the left at the md breakpoint */ + .float-md-left { float: left !important; } + /* Float to the right at the md breakpoint */ + .float-md-right { float: right !important; } + /* No float at the md breakpoint */ + .float-md-none { float: none !important; } } +@media (min-width: 1012px) { /* Float to the left at the lg breakpoint */ + .float-lg-left { float: left !important; } + /* Float to the right at the lg breakpoint */ + .float-lg-right { float: right !important; } + /* No float at the lg breakpoint */ + .float-lg-none { float: none !important; } } +@media (min-width: 1280px) { /* Float to the left at the xl breakpoint */ + .float-xl-left { float: left !important; } + /* Float to the right at the xl breakpoint */ + .float-xl-right { float: right !important; } + /* No float at the xl breakpoint */ + .float-xl-none { float: none !important; } } +/* Max width 100% */ +.width-fit { max-width: 100% !important; } + +/* Set the width to 100% */ +.width-full { width: 100% !important; } + +/* Max height 100% */ +.height-fit { max-height: 100% !important; } + +/* Set the height to 100% */ +.height-full { height: 100% !important; } + +/* Remove min-width from element */ +.min-width-0 { min-width: 0 !important; } + +/* Set the direction to rtl */ +.direction-rtl { direction: rtl !important; } + +/* Set the direction to ltr */ +.direction-ltr { direction: ltr !important; } + +@media (min-width: 544px) { /* Set the direction to rtl at the sm breakpoint */ + .direction-sm-rtl { direction: rtl !important; } + /* Set the direction to ltr at the sm breakpoint */ + .direction-sm-ltr { direction: ltr !important; } } +@media (min-width: 768px) { /* Set the direction to rtl at the md breakpoint */ + .direction-md-rtl { direction: rtl !important; } + /* Set the direction to ltr at the md breakpoint */ + .direction-md-ltr { direction: ltr !important; } } +@media (min-width: 1012px) { /* Set the direction to rtl at the lg breakpoint */ + .direction-lg-rtl { direction: rtl !important; } + /* Set the direction to ltr at the lg breakpoint */ + .direction-lg-ltr { direction: ltr !important; } } +@media (min-width: 1280px) { /* Set the direction to rtl at the xl breakpoint */ + .direction-xl-rtl { direction: rtl !important; } + /* Set the direction to ltr at the xl breakpoint */ + .direction-xl-ltr { direction: ltr !important; } } +/* Set a 0 margin to all sides */ +.m-0 { margin: 0 !important; } + +/* Set a 0 margin on the top */ +.mt-0 { margin-top: 0 !important; } + +/* Set a 0 margin on the right */ +.mr-0 { margin-right: 0 !important; } + +/* Set a 0 margin on the bottom */ +.mb-0 { margin-bottom: 0 !important; } + +/* Set a 0 margin on the left */ +.ml-0 { margin-left: 0 !important; } + +/* Set a negative 0 margin on top */ +.mt-n0 { margin-top: -0 !important; } + +/* Set a negative 0 margin on the right */ +.mr-n0 { margin-right: -0 !important; } + +/* Set a negative 0 margin on the bottom */ +.mb-n0 { margin-bottom: -0 !important; } + +/* Set a negative 0 margin on the left */ +.ml-n0 { margin-left: -0 !important; } + +/* Set a 0 margin on the left & right */ +.mx-0 { margin-right: 0 !important; margin-left: 0 !important; } + +/* Set a 0 margin on the top & bottom */ +.my-0 { margin-top: 0 !important; margin-bottom: 0 !important; } + +/* Set a 4px margin to all sides */ +.m-1 { margin: 4px !important; } + +/* Set a 4px margin on the top */ +.mt-1 { margin-top: 4px !important; } + +/* Set a 4px margin on the right */ +.mr-1 { margin-right: 4px !important; } + +/* Set a 4px margin on the bottom */ +.mb-1 { margin-bottom: 4px !important; } + +/* Set a 4px margin on the left */ +.ml-1 { margin-left: 4px !important; } + +/* Set a negative 4px margin on top */ +.mt-n1 { margin-top: -4px !important; } + +/* Set a negative 4px margin on the right */ +.mr-n1 { margin-right: -4px !important; } + +/* Set a negative 4px margin on the bottom */ +.mb-n1 { margin-bottom: -4px !important; } + +/* Set a negative 4px margin on the left */ +.ml-n1 { margin-left: -4px !important; } + +/* Set a 4px margin on the left & right */ +.mx-1 { margin-right: 4px !important; margin-left: 4px !important; } + +/* Set a 4px margin on the top & bottom */ +.my-1 { margin-top: 4px !important; margin-bottom: 4px !important; } + +/* Set a 8px margin to all sides */ +.m-2 { margin: 8px !important; } + +/* Set a 8px margin on the top */ +.mt-2 { margin-top: 8px !important; } + +/* Set a 8px margin on the right */ +.mr-2 { margin-right: 8px !important; } + +/* Set a 8px margin on the bottom */ +.mb-2 { margin-bottom: 8px !important; } + +/* Set a 8px margin on the left */ +.ml-2 { margin-left: 8px !important; } + +/* Set a negative 8px margin on top */ +.mt-n2 { margin-top: -8px !important; } + +/* Set a negative 8px margin on the right */ +.mr-n2 { margin-right: -8px !important; } + +/* Set a negative 8px margin on the bottom */ +.mb-n2 { margin-bottom: -8px !important; } + +/* Set a negative 8px margin on the left */ +.ml-n2 { margin-left: -8px !important; } + +/* Set a 8px margin on the left & right */ +.mx-2 { margin-right: 8px !important; margin-left: 8px !important; } + +/* Set a 8px margin on the top & bottom */ +.my-2 { margin-top: 8px !important; margin-bottom: 8px !important; } + +/* Set a 16px margin to all sides */ +.m-3 { margin: 16px !important; } + +/* Set a 16px margin on the top */ +.mt-3 { margin-top: 16px !important; } + +/* Set a 16px margin on the right */ +.mr-3 { margin-right: 16px !important; } + +/* Set a 16px margin on the bottom */ +.mb-3 { margin-bottom: 16px !important; } + +/* Set a 16px margin on the left */ +.ml-3 { margin-left: 16px !important; } + +/* Set a negative 16px margin on top */ +.mt-n3 { margin-top: -16px !important; } + +/* Set a negative 16px margin on the right */ +.mr-n3 { margin-right: -16px !important; } + +/* Set a negative 16px margin on the bottom */ +.mb-n3 { margin-bottom: -16px !important; } + +/* Set a negative 16px margin on the left */ +.ml-n3 { margin-left: -16px !important; } + +/* Set a 16px margin on the left & right */ +.mx-3 { margin-right: 16px !important; margin-left: 16px !important; } + +/* Set a 16px margin on the top & bottom */ +.my-3 { margin-top: 16px !important; margin-bottom: 16px !important; } + +/* Set a 24px margin to all sides */ +.m-4 { margin: 24px !important; } + +/* Set a 24px margin on the top */ +.mt-4 { margin-top: 24px !important; } + +/* Set a 24px margin on the right */ +.mr-4 { margin-right: 24px !important; } + +/* Set a 24px margin on the bottom */ +.mb-4 { margin-bottom: 24px !important; } + +/* Set a 24px margin on the left */ +.ml-4 { margin-left: 24px !important; } + +/* Set a negative 24px margin on top */ +.mt-n4 { margin-top: -24px !important; } + +/* Set a negative 24px margin on the right */ +.mr-n4 { margin-right: -24px !important; } + +/* Set a negative 24px margin on the bottom */ +.mb-n4 { margin-bottom: -24px !important; } + +/* Set a negative 24px margin on the left */ +.ml-n4 { margin-left: -24px !important; } + +/* Set a 24px margin on the left & right */ +.mx-4 { margin-right: 24px !important; margin-left: 24px !important; } + +/* Set a 24px margin on the top & bottom */ +.my-4 { margin-top: 24px !important; margin-bottom: 24px !important; } + +/* Set a 32px margin to all sides */ +.m-5 { margin: 32px !important; } + +/* Set a 32px margin on the top */ +.mt-5 { margin-top: 32px !important; } + +/* Set a 32px margin on the right */ +.mr-5 { margin-right: 32px !important; } + +/* Set a 32px margin on the bottom */ +.mb-5 { margin-bottom: 32px !important; } + +/* Set a 32px margin on the left */ +.ml-5 { margin-left: 32px !important; } + +/* Set a negative 32px margin on top */ +.mt-n5 { margin-top: -32px !important; } + +/* Set a negative 32px margin on the right */ +.mr-n5 { margin-right: -32px !important; } + +/* Set a negative 32px margin on the bottom */ +.mb-n5 { margin-bottom: -32px !important; } + +/* Set a negative 32px margin on the left */ +.ml-n5 { margin-left: -32px !important; } + +/* Set a 32px margin on the left & right */ +.mx-5 { margin-right: 32px !important; margin-left: 32px !important; } + +/* Set a 32px margin on the top & bottom */ +.my-5 { margin-top: 32px !important; margin-bottom: 32px !important; } + +/* Set a 40px margin to all sides */ +.m-6 { margin: 40px !important; } + +/* Set a 40px margin on the top */ +.mt-6 { margin-top: 40px !important; } + +/* Set a 40px margin on the right */ +.mr-6 { margin-right: 40px !important; } + +/* Set a 40px margin on the bottom */ +.mb-6 { margin-bottom: 40px !important; } + +/* Set a 40px margin on the left */ +.ml-6 { margin-left: 40px !important; } + +/* Set a negative 40px margin on top */ +.mt-n6 { margin-top: -40px !important; } + +/* Set a negative 40px margin on the right */ +.mr-n6 { margin-right: -40px !important; } + +/* Set a negative 40px margin on the bottom */ +.mb-n6 { margin-bottom: -40px !important; } + +/* Set a negative 40px margin on the left */ +.ml-n6 { margin-left: -40px !important; } + +/* Set a 40px margin on the left & right */ +.mx-6 { margin-right: 40px !important; margin-left: 40px !important; } + +/* Set a 40px margin on the top & bottom */ +.my-6 { margin-top: 40px !important; margin-bottom: 40px !important; } + +/* Set an auto margin on left & right */ +.mx-auto { margin-right: auto !important; margin-left: auto !important; } + +@media (min-width: 544px) { /* Set a 0 margin to all sides at the breakpoint sm */ + .m-sm-0 { margin: 0 !important; } + /* Set a 0 margin on the top at the breakpoint sm */ + .mt-sm-0 { margin-top: 0 !important; } + /* Set a 0 margin on the right at the breakpoint sm */ + .mr-sm-0 { margin-right: 0 !important; } + /* Set a 0 margin on the bottom at the breakpoint sm */ + .mb-sm-0 { margin-bottom: 0 !important; } + /* Set a 0 margin on the left at the breakpoint sm */ + .ml-sm-0 { margin-left: 0 !important; } + /* Set a negative 0 margin on top at the breakpoint sm */ + .mt-sm-n0 { margin-top: -0 !important; } + /* Set a negative 0 margin on the right at the breakpoint sm */ + .mr-sm-n0 { margin-right: -0 !important; } + /* Set a negative 0 margin on the bottom at the breakpoint sm */ + .mb-sm-n0 { margin-bottom: -0 !important; } + /* Set a negative 0 margin on the left at the breakpoint sm */ + .ml-sm-n0 { margin-left: -0 !important; } + /* Set a 0 margin on the left & right at the breakpoint sm */ + .mx-sm-0 { margin-right: 0 !important; margin-left: 0 !important; } + /* Set a 0 margin on the top & bottom at the breakpoint sm */ + .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; } } +@media (min-width: 544px) { /* Set a 4px margin to all sides at the breakpoint sm */ + .m-sm-1 { margin: 4px !important; } + /* Set a 4px margin on the top at the breakpoint sm */ + .mt-sm-1 { margin-top: 4px !important; } + /* Set a 4px margin on the right at the breakpoint sm */ + .mr-sm-1 { margin-right: 4px !important; } + /* Set a 4px margin on the bottom at the breakpoint sm */ + .mb-sm-1 { margin-bottom: 4px !important; } + /* Set a 4px margin on the left at the breakpoint sm */ + .ml-sm-1 { margin-left: 4px !important; } + /* Set a negative 4px margin on top at the breakpoint sm */ + .mt-sm-n1 { margin-top: -4px !important; } + /* Set a negative 4px margin on the right at the breakpoint sm */ + .mr-sm-n1 { margin-right: -4px !important; } + /* Set a negative 4px margin on the bottom at the breakpoint sm */ + .mb-sm-n1 { margin-bottom: -4px !important; } + /* Set a negative 4px margin on the left at the breakpoint sm */ + .ml-sm-n1 { margin-left: -4px !important; } + /* Set a 4px margin on the left & right at the breakpoint sm */ + .mx-sm-1 { margin-right: 4px !important; margin-left: 4px !important; } + /* Set a 4px margin on the top & bottom at the breakpoint sm */ + .my-sm-1 { margin-top: 4px !important; margin-bottom: 4px !important; } } +@media (min-width: 544px) { /* Set a 8px margin to all sides at the breakpoint sm */ + .m-sm-2 { margin: 8px !important; } + /* Set a 8px margin on the top at the breakpoint sm */ + .mt-sm-2 { margin-top: 8px !important; } + /* Set a 8px margin on the right at the breakpoint sm */ + .mr-sm-2 { margin-right: 8px !important; } + /* Set a 8px margin on the bottom at the breakpoint sm */ + .mb-sm-2 { margin-bottom: 8px !important; } + /* Set a 8px margin on the left at the breakpoint sm */ + .ml-sm-2 { margin-left: 8px !important; } + /* Set a negative 8px margin on top at the breakpoint sm */ + .mt-sm-n2 { margin-top: -8px !important; } + /* Set a negative 8px margin on the right at the breakpoint sm */ + .mr-sm-n2 { margin-right: -8px !important; } + /* Set a negative 8px margin on the bottom at the breakpoint sm */ + .mb-sm-n2 { margin-bottom: -8px !important; } + /* Set a negative 8px margin on the left at the breakpoint sm */ + .ml-sm-n2 { margin-left: -8px !important; } + /* Set a 8px margin on the left & right at the breakpoint sm */ + .mx-sm-2 { margin-right: 8px !important; margin-left: 8px !important; } + /* Set a 8px margin on the top & bottom at the breakpoint sm */ + .my-sm-2 { margin-top: 8px !important; margin-bottom: 8px !important; } } +@media (min-width: 544px) { /* Set a 16px margin to all sides at the breakpoint sm */ + .m-sm-3 { margin: 16px !important; } + /* Set a 16px margin on the top at the breakpoint sm */ + .mt-sm-3 { margin-top: 16px !important; } + /* Set a 16px margin on the right at the breakpoint sm */ + .mr-sm-3 { margin-right: 16px !important; } + /* Set a 16px margin on the bottom at the breakpoint sm */ + .mb-sm-3 { margin-bottom: 16px !important; } + /* Set a 16px margin on the left at the breakpoint sm */ + .ml-sm-3 { margin-left: 16px !important; } + /* Set a negative 16px margin on top at the breakpoint sm */ + .mt-sm-n3 { margin-top: -16px !important; } + /* Set a negative 16px margin on the right at the breakpoint sm */ + .mr-sm-n3 { margin-right: -16px !important; } + /* Set a negative 16px margin on the bottom at the breakpoint sm */ + .mb-sm-n3 { margin-bottom: -16px !important; } + /* Set a negative 16px margin on the left at the breakpoint sm */ + .ml-sm-n3 { margin-left: -16px !important; } + /* Set a 16px margin on the left & right at the breakpoint sm */ + .mx-sm-3 { margin-right: 16px !important; margin-left: 16px !important; } + /* Set a 16px margin on the top & bottom at the breakpoint sm */ + .my-sm-3 { margin-top: 16px !important; margin-bottom: 16px !important; } } +@media (min-width: 544px) { /* Set a 24px margin to all sides at the breakpoint sm */ + .m-sm-4 { margin: 24px !important; } + /* Set a 24px margin on the top at the breakpoint sm */ + .mt-sm-4 { margin-top: 24px !important; } + /* Set a 24px margin on the right at the breakpoint sm */ + .mr-sm-4 { margin-right: 24px !important; } + /* Set a 24px margin on the bottom at the breakpoint sm */ + .mb-sm-4 { margin-bottom: 24px !important; } + /* Set a 24px margin on the left at the breakpoint sm */ + .ml-sm-4 { margin-left: 24px !important; } + /* Set a negative 24px margin on top at the breakpoint sm */ + .mt-sm-n4 { margin-top: -24px !important; } + /* Set a negative 24px margin on the right at the breakpoint sm */ + .mr-sm-n4 { margin-right: -24px !important; } + /* Set a negative 24px margin on the bottom at the breakpoint sm */ + .mb-sm-n4 { margin-bottom: -24px !important; } + /* Set a negative 24px margin on the left at the breakpoint sm */ + .ml-sm-n4 { margin-left: -24px !important; } + /* Set a 24px margin on the left & right at the breakpoint sm */ + .mx-sm-4 { margin-right: 24px !important; margin-left: 24px !important; } + /* Set a 24px margin on the top & bottom at the breakpoint sm */ + .my-sm-4 { margin-top: 24px !important; margin-bottom: 24px !important; } } +@media (min-width: 544px) { /* Set a 32px margin to all sides at the breakpoint sm */ + .m-sm-5 { margin: 32px !important; } + /* Set a 32px margin on the top at the breakpoint sm */ + .mt-sm-5 { margin-top: 32px !important; } + /* Set a 32px margin on the right at the breakpoint sm */ + .mr-sm-5 { margin-right: 32px !important; } + /* Set a 32px margin on the bottom at the breakpoint sm */ + .mb-sm-5 { margin-bottom: 32px !important; } + /* Set a 32px margin on the left at the breakpoint sm */ + .ml-sm-5 { margin-left: 32px !important; } + /* Set a negative 32px margin on top at the breakpoint sm */ + .mt-sm-n5 { margin-top: -32px !important; } + /* Set a negative 32px margin on the right at the breakpoint sm */ + .mr-sm-n5 { margin-right: -32px !important; } + /* Set a negative 32px margin on the bottom at the breakpoint sm */ + .mb-sm-n5 { margin-bottom: -32px !important; } + /* Set a negative 32px margin on the left at the breakpoint sm */ + .ml-sm-n5 { margin-left: -32px !important; } + /* Set a 32px margin on the left & right at the breakpoint sm */ + .mx-sm-5 { margin-right: 32px !important; margin-left: 32px !important; } + /* Set a 32px margin on the top & bottom at the breakpoint sm */ + .my-sm-5 { margin-top: 32px !important; margin-bottom: 32px !important; } } +@media (min-width: 544px) { /* Set a 40px margin to all sides at the breakpoint sm */ + .m-sm-6 { margin: 40px !important; } + /* Set a 40px margin on the top at the breakpoint sm */ + .mt-sm-6 { margin-top: 40px !important; } + /* Set a 40px margin on the right at the breakpoint sm */ + .mr-sm-6 { margin-right: 40px !important; } + /* Set a 40px margin on the bottom at the breakpoint sm */ + .mb-sm-6 { margin-bottom: 40px !important; } + /* Set a 40px margin on the left at the breakpoint sm */ + .ml-sm-6 { margin-left: 40px !important; } + /* Set a negative 40px margin on top at the breakpoint sm */ + .mt-sm-n6 { margin-top: -40px !important; } + /* Set a negative 40px margin on the right at the breakpoint sm */ + .mr-sm-n6 { margin-right: -40px !important; } + /* Set a negative 40px margin on the bottom at the breakpoint sm */ + .mb-sm-n6 { margin-bottom: -40px !important; } + /* Set a negative 40px margin on the left at the breakpoint sm */ + .ml-sm-n6 { margin-left: -40px !important; } + /* Set a 40px margin on the left & right at the breakpoint sm */ + .mx-sm-6 { margin-right: 40px !important; margin-left: 40px !important; } + /* Set a 40px margin on the top & bottom at the breakpoint sm */ + .my-sm-6 { margin-top: 40px !important; margin-bottom: 40px !important; } } +@media (min-width: 768px) { /* Set a 0 margin to all sides at the breakpoint md */ + .m-md-0 { margin: 0 !important; } + /* Set a 0 margin on the top at the breakpoint md */ + .mt-md-0 { margin-top: 0 !important; } + /* Set a 0 margin on the right at the breakpoint md */ + .mr-md-0 { margin-right: 0 !important; } + /* Set a 0 margin on the bottom at the breakpoint md */ + .mb-md-0 { margin-bottom: 0 !important; } + /* Set a 0 margin on the left at the breakpoint md */ + .ml-md-0 { margin-left: 0 !important; } + /* Set a negative 0 margin on top at the breakpoint md */ + .mt-md-n0 { margin-top: -0 !important; } + /* Set a negative 0 margin on the right at the breakpoint md */ + .mr-md-n0 { margin-right: -0 !important; } + /* Set a negative 0 margin on the bottom at the breakpoint md */ + .mb-md-n0 { margin-bottom: -0 !important; } + /* Set a negative 0 margin on the left at the breakpoint md */ + .ml-md-n0 { margin-left: -0 !important; } + /* Set a 0 margin on the left & right at the breakpoint md */ + .mx-md-0 { margin-right: 0 !important; margin-left: 0 !important; } + /* Set a 0 margin on the top & bottom at the breakpoint md */ + .my-md-0 { margin-top: 0 !important; margin-bottom: 0 !important; } } +@media (min-width: 768px) { /* Set a 4px margin to all sides at the breakpoint md */ + .m-md-1 { margin: 4px !important; } + /* Set a 4px margin on the top at the breakpoint md */ + .mt-md-1 { margin-top: 4px !important; } + /* Set a 4px margin on the right at the breakpoint md */ + .mr-md-1 { margin-right: 4px !important; } + /* Set a 4px margin on the bottom at the breakpoint md */ + .mb-md-1 { margin-bottom: 4px !important; } + /* Set a 4px margin on the left at the breakpoint md */ + .ml-md-1 { margin-left: 4px !important; } + /* Set a negative 4px margin on top at the breakpoint md */ + .mt-md-n1 { margin-top: -4px !important; } + /* Set a negative 4px margin on the right at the breakpoint md */ + .mr-md-n1 { margin-right: -4px !important; } + /* Set a negative 4px margin on the bottom at the breakpoint md */ + .mb-md-n1 { margin-bottom: -4px !important; } + /* Set a negative 4px margin on the left at the breakpoint md */ + .ml-md-n1 { margin-left: -4px !important; } + /* Set a 4px margin on the left & right at the breakpoint md */ + .mx-md-1 { margin-right: 4px !important; margin-left: 4px !important; } + /* Set a 4px margin on the top & bottom at the breakpoint md */ + .my-md-1 { margin-top: 4px !important; margin-bottom: 4px !important; } } +@media (min-width: 768px) { /* Set a 8px margin to all sides at the breakpoint md */ + .m-md-2 { margin: 8px !important; } + /* Set a 8px margin on the top at the breakpoint md */ + .mt-md-2 { margin-top: 8px !important; } + /* Set a 8px margin on the right at the breakpoint md */ + .mr-md-2 { margin-right: 8px !important; } + /* Set a 8px margin on the bottom at the breakpoint md */ + .mb-md-2 { margin-bottom: 8px !important; } + /* Set a 8px margin on the left at the breakpoint md */ + .ml-md-2 { margin-left: 8px !important; } + /* Set a negative 8px margin on top at the breakpoint md */ + .mt-md-n2 { margin-top: -8px !important; } + /* Set a negative 8px margin on the right at the breakpoint md */ + .mr-md-n2 { margin-right: -8px !important; } + /* Set a negative 8px margin on the bottom at the breakpoint md */ + .mb-md-n2 { margin-bottom: -8px !important; } + /* Set a negative 8px margin on the left at the breakpoint md */ + .ml-md-n2 { margin-left: -8px !important; } + /* Set a 8px margin on the left & right at the breakpoint md */ + .mx-md-2 { margin-right: 8px !important; margin-left: 8px !important; } + /* Set a 8px margin on the top & bottom at the breakpoint md */ + .my-md-2 { margin-top: 8px !important; margin-bottom: 8px !important; } } +@media (min-width: 768px) { /* Set a 16px margin to all sides at the breakpoint md */ + .m-md-3 { margin: 16px !important; } + /* Set a 16px margin on the top at the breakpoint md */ + .mt-md-3 { margin-top: 16px !important; } + /* Set a 16px margin on the right at the breakpoint md */ + .mr-md-3 { margin-right: 16px !important; } + /* Set a 16px margin on the bottom at the breakpoint md */ + .mb-md-3 { margin-bottom: 16px !important; } + /* Set a 16px margin on the left at the breakpoint md */ + .ml-md-3 { margin-left: 16px !important; } + /* Set a negative 16px margin on top at the breakpoint md */ + .mt-md-n3 { margin-top: -16px !important; } + /* Set a negative 16px margin on the right at the breakpoint md */ + .mr-md-n3 { margin-right: -16px !important; } + /* Set a negative 16px margin on the bottom at the breakpoint md */ + .mb-md-n3 { margin-bottom: -16px !important; } + /* Set a negative 16px margin on the left at the breakpoint md */ + .ml-md-n3 { margin-left: -16px !important; } + /* Set a 16px margin on the left & right at the breakpoint md */ + .mx-md-3 { margin-right: 16px !important; margin-left: 16px !important; } + /* Set a 16px margin on the top & bottom at the breakpoint md */ + .my-md-3 { margin-top: 16px !important; margin-bottom: 16px !important; } } +@media (min-width: 768px) { /* Set a 24px margin to all sides at the breakpoint md */ + .m-md-4 { margin: 24px !important; } + /* Set a 24px margin on the top at the breakpoint md */ + .mt-md-4 { margin-top: 24px !important; } + /* Set a 24px margin on the right at the breakpoint md */ + .mr-md-4 { margin-right: 24px !important; } + /* Set a 24px margin on the bottom at the breakpoint md */ + .mb-md-4 { margin-bottom: 24px !important; } + /* Set a 24px margin on the left at the breakpoint md */ + .ml-md-4 { margin-left: 24px !important; } + /* Set a negative 24px margin on top at the breakpoint md */ + .mt-md-n4 { margin-top: -24px !important; } + /* Set a negative 24px margin on the right at the breakpoint md */ + .mr-md-n4 { margin-right: -24px !important; } + /* Set a negative 24px margin on the bottom at the breakpoint md */ + .mb-md-n4 { margin-bottom: -24px !important; } + /* Set a negative 24px margin on the left at the breakpoint md */ + .ml-md-n4 { margin-left: -24px !important; } + /* Set a 24px margin on the left & right at the breakpoint md */ + .mx-md-4 { margin-right: 24px !important; margin-left: 24px !important; } + /* Set a 24px margin on the top & bottom at the breakpoint md */ + .my-md-4 { margin-top: 24px !important; margin-bottom: 24px !important; } } +@media (min-width: 768px) { /* Set a 32px margin to all sides at the breakpoint md */ + .m-md-5 { margin: 32px !important; } + /* Set a 32px margin on the top at the breakpoint md */ + .mt-md-5 { margin-top: 32px !important; } + /* Set a 32px margin on the right at the breakpoint md */ + .mr-md-5 { margin-right: 32px !important; } + /* Set a 32px margin on the bottom at the breakpoint md */ + .mb-md-5 { margin-bottom: 32px !important; } + /* Set a 32px margin on the left at the breakpoint md */ + .ml-md-5 { margin-left: 32px !important; } + /* Set a negative 32px margin on top at the breakpoint md */ + .mt-md-n5 { margin-top: -32px !important; } + /* Set a negative 32px margin on the right at the breakpoint md */ + .mr-md-n5 { margin-right: -32px !important; } + /* Set a negative 32px margin on the bottom at the breakpoint md */ + .mb-md-n5 { margin-bottom: -32px !important; } + /* Set a negative 32px margin on the left at the breakpoint md */ + .ml-md-n5 { margin-left: -32px !important; } + /* Set a 32px margin on the left & right at the breakpoint md */ + .mx-md-5 { margin-right: 32px !important; margin-left: 32px !important; } + /* Set a 32px margin on the top & bottom at the breakpoint md */ + .my-md-5 { margin-top: 32px !important; margin-bottom: 32px !important; } } +@media (min-width: 768px) { /* Set a 40px margin to all sides at the breakpoint md */ + .m-md-6 { margin: 40px !important; } + /* Set a 40px margin on the top at the breakpoint md */ + .mt-md-6 { margin-top: 40px !important; } + /* Set a 40px margin on the right at the breakpoint md */ + .mr-md-6 { margin-right: 40px !important; } + /* Set a 40px margin on the bottom at the breakpoint md */ + .mb-md-6 { margin-bottom: 40px !important; } + /* Set a 40px margin on the left at the breakpoint md */ + .ml-md-6 { margin-left: 40px !important; } + /* Set a negative 40px margin on top at the breakpoint md */ + .mt-md-n6 { margin-top: -40px !important; } + /* Set a negative 40px margin on the right at the breakpoint md */ + .mr-md-n6 { margin-right: -40px !important; } + /* Set a negative 40px margin on the bottom at the breakpoint md */ + .mb-md-n6 { margin-bottom: -40px !important; } + /* Set a negative 40px margin on the left at the breakpoint md */ + .ml-md-n6 { margin-left: -40px !important; } + /* Set a 40px margin on the left & right at the breakpoint md */ + .mx-md-6 { margin-right: 40px !important; margin-left: 40px !important; } + /* Set a 40px margin on the top & bottom at the breakpoint md */ + .my-md-6 { margin-top: 40px !important; margin-bottom: 40px !important; } } +@media (min-width: 1012px) { /* Set a 0 margin to all sides at the breakpoint lg */ + .m-lg-0 { margin: 0 !important; } + /* Set a 0 margin on the top at the breakpoint lg */ + .mt-lg-0 { margin-top: 0 !important; } + /* Set a 0 margin on the right at the breakpoint lg */ + .mr-lg-0 { margin-right: 0 !important; } + /* Set a 0 margin on the bottom at the breakpoint lg */ + .mb-lg-0 { margin-bottom: 0 !important; } + /* Set a 0 margin on the left at the breakpoint lg */ + .ml-lg-0 { margin-left: 0 !important; } + /* Set a negative 0 margin on top at the breakpoint lg */ + .mt-lg-n0 { margin-top: -0 !important; } + /* Set a negative 0 margin on the right at the breakpoint lg */ + .mr-lg-n0 { margin-right: -0 !important; } + /* Set a negative 0 margin on the bottom at the breakpoint lg */ + .mb-lg-n0 { margin-bottom: -0 !important; } + /* Set a negative 0 margin on the left at the breakpoint lg */ + .ml-lg-n0 { margin-left: -0 !important; } + /* Set a 0 margin on the left & right at the breakpoint lg */ + .mx-lg-0 { margin-right: 0 !important; margin-left: 0 !important; } + /* Set a 0 margin on the top & bottom at the breakpoint lg */ + .my-lg-0 { margin-top: 0 !important; margin-bottom: 0 !important; } } +@media (min-width: 1012px) { /* Set a 4px margin to all sides at the breakpoint lg */ + .m-lg-1 { margin: 4px !important; } + /* Set a 4px margin on the top at the breakpoint lg */ + .mt-lg-1 { margin-top: 4px !important; } + /* Set a 4px margin on the right at the breakpoint lg */ + .mr-lg-1 { margin-right: 4px !important; } + /* Set a 4px margin on the bottom at the breakpoint lg */ + .mb-lg-1 { margin-bottom: 4px !important; } + /* Set a 4px margin on the left at the breakpoint lg */ + .ml-lg-1 { margin-left: 4px !important; } + /* Set a negative 4px margin on top at the breakpoint lg */ + .mt-lg-n1 { margin-top: -4px !important; } + /* Set a negative 4px margin on the right at the breakpoint lg */ + .mr-lg-n1 { margin-right: -4px !important; } + /* Set a negative 4px margin on the bottom at the breakpoint lg */ + .mb-lg-n1 { margin-bottom: -4px !important; } + /* Set a negative 4px margin on the left at the breakpoint lg */ + .ml-lg-n1 { margin-left: -4px !important; } + /* Set a 4px margin on the left & right at the breakpoint lg */ + .mx-lg-1 { margin-right: 4px !important; margin-left: 4px !important; } + /* Set a 4px margin on the top & bottom at the breakpoint lg */ + .my-lg-1 { margin-top: 4px !important; margin-bottom: 4px !important; } } +@media (min-width: 1012px) { /* Set a 8px margin to all sides at the breakpoint lg */ + .m-lg-2 { margin: 8px !important; } + /* Set a 8px margin on the top at the breakpoint lg */ + .mt-lg-2 { margin-top: 8px !important; } + /* Set a 8px margin on the right at the breakpoint lg */ + .mr-lg-2 { margin-right: 8px !important; } + /* Set a 8px margin on the bottom at the breakpoint lg */ + .mb-lg-2 { margin-bottom: 8px !important; } + /* Set a 8px margin on the left at the breakpoint lg */ + .ml-lg-2 { margin-left: 8px !important; } + /* Set a negative 8px margin on top at the breakpoint lg */ + .mt-lg-n2 { margin-top: -8px !important; } + /* Set a negative 8px margin on the right at the breakpoint lg */ + .mr-lg-n2 { margin-right: -8px !important; } + /* Set a negative 8px margin on the bottom at the breakpoint lg */ + .mb-lg-n2 { margin-bottom: -8px !important; } + /* Set a negative 8px margin on the left at the breakpoint lg */ + .ml-lg-n2 { margin-left: -8px !important; } + /* Set a 8px margin on the left & right at the breakpoint lg */ + .mx-lg-2 { margin-right: 8px !important; margin-left: 8px !important; } + /* Set a 8px margin on the top & bottom at the breakpoint lg */ + .my-lg-2 { margin-top: 8px !important; margin-bottom: 8px !important; } } +@media (min-width: 1012px) { /* Set a 16px margin to all sides at the breakpoint lg */ + .m-lg-3 { margin: 16px !important; } + /* Set a 16px margin on the top at the breakpoint lg */ + .mt-lg-3 { margin-top: 16px !important; } + /* Set a 16px margin on the right at the breakpoint lg */ + .mr-lg-3 { margin-right: 16px !important; } + /* Set a 16px margin on the bottom at the breakpoint lg */ + .mb-lg-3 { margin-bottom: 16px !important; } + /* Set a 16px margin on the left at the breakpoint lg */ + .ml-lg-3 { margin-left: 16px !important; } + /* Set a negative 16px margin on top at the breakpoint lg */ + .mt-lg-n3 { margin-top: -16px !important; } + /* Set a negative 16px margin on the right at the breakpoint lg */ + .mr-lg-n3 { margin-right: -16px !important; } + /* Set a negative 16px margin on the bottom at the breakpoint lg */ + .mb-lg-n3 { margin-bottom: -16px !important; } + /* Set a negative 16px margin on the left at the breakpoint lg */ + .ml-lg-n3 { margin-left: -16px !important; } + /* Set a 16px margin on the left & right at the breakpoint lg */ + .mx-lg-3 { margin-right: 16px !important; margin-left: 16px !important; } + /* Set a 16px margin on the top & bottom at the breakpoint lg */ + .my-lg-3 { margin-top: 16px !important; margin-bottom: 16px !important; } } +@media (min-width: 1012px) { /* Set a 24px margin to all sides at the breakpoint lg */ + .m-lg-4 { margin: 24px !important; } + /* Set a 24px margin on the top at the breakpoint lg */ + .mt-lg-4 { margin-top: 24px !important; } + /* Set a 24px margin on the right at the breakpoint lg */ + .mr-lg-4 { margin-right: 24px !important; } + /* Set a 24px margin on the bottom at the breakpoint lg */ + .mb-lg-4 { margin-bottom: 24px !important; } + /* Set a 24px margin on the left at the breakpoint lg */ + .ml-lg-4 { margin-left: 24px !important; } + /* Set a negative 24px margin on top at the breakpoint lg */ + .mt-lg-n4 { margin-top: -24px !important; } + /* Set a negative 24px margin on the right at the breakpoint lg */ + .mr-lg-n4 { margin-right: -24px !important; } + /* Set a negative 24px margin on the bottom at the breakpoint lg */ + .mb-lg-n4 { margin-bottom: -24px !important; } + /* Set a negative 24px margin on the left at the breakpoint lg */ + .ml-lg-n4 { margin-left: -24px !important; } + /* Set a 24px margin on the left & right at the breakpoint lg */ + .mx-lg-4 { margin-right: 24px !important; margin-left: 24px !important; } + /* Set a 24px margin on the top & bottom at the breakpoint lg */ + .my-lg-4 { margin-top: 24px !important; margin-bottom: 24px !important; } } +@media (min-width: 1012px) { /* Set a 32px margin to all sides at the breakpoint lg */ + .m-lg-5 { margin: 32px !important; } + /* Set a 32px margin on the top at the breakpoint lg */ + .mt-lg-5 { margin-top: 32px !important; } + /* Set a 32px margin on the right at the breakpoint lg */ + .mr-lg-5 { margin-right: 32px !important; } + /* Set a 32px margin on the bottom at the breakpoint lg */ + .mb-lg-5 { margin-bottom: 32px !important; } + /* Set a 32px margin on the left at the breakpoint lg */ + .ml-lg-5 { margin-left: 32px !important; } + /* Set a negative 32px margin on top at the breakpoint lg */ + .mt-lg-n5 { margin-top: -32px !important; } + /* Set a negative 32px margin on the right at the breakpoint lg */ + .mr-lg-n5 { margin-right: -32px !important; } + /* Set a negative 32px margin on the bottom at the breakpoint lg */ + .mb-lg-n5 { margin-bottom: -32px !important; } + /* Set a negative 32px margin on the left at the breakpoint lg */ + .ml-lg-n5 { margin-left: -32px !important; } + /* Set a 32px margin on the left & right at the breakpoint lg */ + .mx-lg-5 { margin-right: 32px !important; margin-left: 32px !important; } + /* Set a 32px margin on the top & bottom at the breakpoint lg */ + .my-lg-5 { margin-top: 32px !important; margin-bottom: 32px !important; } } +@media (min-width: 1012px) { /* Set a 40px margin to all sides at the breakpoint lg */ + .m-lg-6 { margin: 40px !important; } + /* Set a 40px margin on the top at the breakpoint lg */ + .mt-lg-6 { margin-top: 40px !important; } + /* Set a 40px margin on the right at the breakpoint lg */ + .mr-lg-6 { margin-right: 40px !important; } + /* Set a 40px margin on the bottom at the breakpoint lg */ + .mb-lg-6 { margin-bottom: 40px !important; } + /* Set a 40px margin on the left at the breakpoint lg */ + .ml-lg-6 { margin-left: 40px !important; } + /* Set a negative 40px margin on top at the breakpoint lg */ + .mt-lg-n6 { margin-top: -40px !important; } + /* Set a negative 40px margin on the right at the breakpoint lg */ + .mr-lg-n6 { margin-right: -40px !important; } + /* Set a negative 40px margin on the bottom at the breakpoint lg */ + .mb-lg-n6 { margin-bottom: -40px !important; } + /* Set a negative 40px margin on the left at the breakpoint lg */ + .ml-lg-n6 { margin-left: -40px !important; } + /* Set a 40px margin on the left & right at the breakpoint lg */ + .mx-lg-6 { margin-right: 40px !important; margin-left: 40px !important; } + /* Set a 40px margin on the top & bottom at the breakpoint lg */ + .my-lg-6 { margin-top: 40px !important; margin-bottom: 40px !important; } } +@media (min-width: 1280px) { /* Set a 0 margin to all sides at the breakpoint xl */ + .m-xl-0 { margin: 0 !important; } + /* Set a 0 margin on the top at the breakpoint xl */ + .mt-xl-0 { margin-top: 0 !important; } + /* Set a 0 margin on the right at the breakpoint xl */ + .mr-xl-0 { margin-right: 0 !important; } + /* Set a 0 margin on the bottom at the breakpoint xl */ + .mb-xl-0 { margin-bottom: 0 !important; } + /* Set a 0 margin on the left at the breakpoint xl */ + .ml-xl-0 { margin-left: 0 !important; } + /* Set a negative 0 margin on top at the breakpoint xl */ + .mt-xl-n0 { margin-top: -0 !important; } + /* Set a negative 0 margin on the right at the breakpoint xl */ + .mr-xl-n0 { margin-right: -0 !important; } + /* Set a negative 0 margin on the bottom at the breakpoint xl */ + .mb-xl-n0 { margin-bottom: -0 !important; } + /* Set a negative 0 margin on the left at the breakpoint xl */ + .ml-xl-n0 { margin-left: -0 !important; } + /* Set a 0 margin on the left & right at the breakpoint xl */ + .mx-xl-0 { margin-right: 0 !important; margin-left: 0 !important; } + /* Set a 0 margin on the top & bottom at the breakpoint xl */ + .my-xl-0 { margin-top: 0 !important; margin-bottom: 0 !important; } } +@media (min-width: 1280px) { /* Set a 4px margin to all sides at the breakpoint xl */ + .m-xl-1 { margin: 4px !important; } + /* Set a 4px margin on the top at the breakpoint xl */ + .mt-xl-1 { margin-top: 4px !important; } + /* Set a 4px margin on the right at the breakpoint xl */ + .mr-xl-1 { margin-right: 4px !important; } + /* Set a 4px margin on the bottom at the breakpoint xl */ + .mb-xl-1 { margin-bottom: 4px !important; } + /* Set a 4px margin on the left at the breakpoint xl */ + .ml-xl-1 { margin-left: 4px !important; } + /* Set a negative 4px margin on top at the breakpoint xl */ + .mt-xl-n1 { margin-top: -4px !important; } + /* Set a negative 4px margin on the right at the breakpoint xl */ + .mr-xl-n1 { margin-right: -4px !important; } + /* Set a negative 4px margin on the bottom at the breakpoint xl */ + .mb-xl-n1 { margin-bottom: -4px !important; } + /* Set a negative 4px margin on the left at the breakpoint xl */ + .ml-xl-n1 { margin-left: -4px !important; } + /* Set a 4px margin on the left & right at the breakpoint xl */ + .mx-xl-1 { margin-right: 4px !important; margin-left: 4px !important; } + /* Set a 4px margin on the top & bottom at the breakpoint xl */ + .my-xl-1 { margin-top: 4px !important; margin-bottom: 4px !important; } } +@media (min-width: 1280px) { /* Set a 8px margin to all sides at the breakpoint xl */ + .m-xl-2 { margin: 8px !important; } + /* Set a 8px margin on the top at the breakpoint xl */ + .mt-xl-2 { margin-top: 8px !important; } + /* Set a 8px margin on the right at the breakpoint xl */ + .mr-xl-2 { margin-right: 8px !important; } + /* Set a 8px margin on the bottom at the breakpoint xl */ + .mb-xl-2 { margin-bottom: 8px !important; } + /* Set a 8px margin on the left at the breakpoint xl */ + .ml-xl-2 { margin-left: 8px !important; } + /* Set a negative 8px margin on top at the breakpoint xl */ + .mt-xl-n2 { margin-top: -8px !important; } + /* Set a negative 8px margin on the right at the breakpoint xl */ + .mr-xl-n2 { margin-right: -8px !important; } + /* Set a negative 8px margin on the bottom at the breakpoint xl */ + .mb-xl-n2 { margin-bottom: -8px !important; } + /* Set a negative 8px margin on the left at the breakpoint xl */ + .ml-xl-n2 { margin-left: -8px !important; } + /* Set a 8px margin on the left & right at the breakpoint xl */ + .mx-xl-2 { margin-right: 8px !important; margin-left: 8px !important; } + /* Set a 8px margin on the top & bottom at the breakpoint xl */ + .my-xl-2 { margin-top: 8px !important; margin-bottom: 8px !important; } } +@media (min-width: 1280px) { /* Set a 16px margin to all sides at the breakpoint xl */ + .m-xl-3 { margin: 16px !important; } + /* Set a 16px margin on the top at the breakpoint xl */ + .mt-xl-3 { margin-top: 16px !important; } + /* Set a 16px margin on the right at the breakpoint xl */ + .mr-xl-3 { margin-right: 16px !important; } + /* Set a 16px margin on the bottom at the breakpoint xl */ + .mb-xl-3 { margin-bottom: 16px !important; } + /* Set a 16px margin on the left at the breakpoint xl */ + .ml-xl-3 { margin-left: 16px !important; } + /* Set a negative 16px margin on top at the breakpoint xl */ + .mt-xl-n3 { margin-top: -16px !important; } + /* Set a negative 16px margin on the right at the breakpoint xl */ + .mr-xl-n3 { margin-right: -16px !important; } + /* Set a negative 16px margin on the bottom at the breakpoint xl */ + .mb-xl-n3 { margin-bottom: -16px !important; } + /* Set a negative 16px margin on the left at the breakpoint xl */ + .ml-xl-n3 { margin-left: -16px !important; } + /* Set a 16px margin on the left & right at the breakpoint xl */ + .mx-xl-3 { margin-right: 16px !important; margin-left: 16px !important; } + /* Set a 16px margin on the top & bottom at the breakpoint xl */ + .my-xl-3 { margin-top: 16px !important; margin-bottom: 16px !important; } } +@media (min-width: 1280px) { /* Set a 24px margin to all sides at the breakpoint xl */ + .m-xl-4 { margin: 24px !important; } + /* Set a 24px margin on the top at the breakpoint xl */ + .mt-xl-4 { margin-top: 24px !important; } + /* Set a 24px margin on the right at the breakpoint xl */ + .mr-xl-4 { margin-right: 24px !important; } + /* Set a 24px margin on the bottom at the breakpoint xl */ + .mb-xl-4 { margin-bottom: 24px !important; } + /* Set a 24px margin on the left at the breakpoint xl */ + .ml-xl-4 { margin-left: 24px !important; } + /* Set a negative 24px margin on top at the breakpoint xl */ + .mt-xl-n4 { margin-top: -24px !important; } + /* Set a negative 24px margin on the right at the breakpoint xl */ + .mr-xl-n4 { margin-right: -24px !important; } + /* Set a negative 24px margin on the bottom at the breakpoint xl */ + .mb-xl-n4 { margin-bottom: -24px !important; } + /* Set a negative 24px margin on the left at the breakpoint xl */ + .ml-xl-n4 { margin-left: -24px !important; } + /* Set a 24px margin on the left & right at the breakpoint xl */ + .mx-xl-4 { margin-right: 24px !important; margin-left: 24px !important; } + /* Set a 24px margin on the top & bottom at the breakpoint xl */ + .my-xl-4 { margin-top: 24px !important; margin-bottom: 24px !important; } } +@media (min-width: 1280px) { /* Set a 32px margin to all sides at the breakpoint xl */ + .m-xl-5 { margin: 32px !important; } + /* Set a 32px margin on the top at the breakpoint xl */ + .mt-xl-5 { margin-top: 32px !important; } + /* Set a 32px margin on the right at the breakpoint xl */ + .mr-xl-5 { margin-right: 32px !important; } + /* Set a 32px margin on the bottom at the breakpoint xl */ + .mb-xl-5 { margin-bottom: 32px !important; } + /* Set a 32px margin on the left at the breakpoint xl */ + .ml-xl-5 { margin-left: 32px !important; } + /* Set a negative 32px margin on top at the breakpoint xl */ + .mt-xl-n5 { margin-top: -32px !important; } + /* Set a negative 32px margin on the right at the breakpoint xl */ + .mr-xl-n5 { margin-right: -32px !important; } + /* Set a negative 32px margin on the bottom at the breakpoint xl */ + .mb-xl-n5 { margin-bottom: -32px !important; } + /* Set a negative 32px margin on the left at the breakpoint xl */ + .ml-xl-n5 { margin-left: -32px !important; } + /* Set a 32px margin on the left & right at the breakpoint xl */ + .mx-xl-5 { margin-right: 32px !important; margin-left: 32px !important; } + /* Set a 32px margin on the top & bottom at the breakpoint xl */ + .my-xl-5 { margin-top: 32px !important; margin-bottom: 32px !important; } } +@media (min-width: 1280px) { /* Set a 40px margin to all sides at the breakpoint xl */ + .m-xl-6 { margin: 40px !important; } + /* Set a 40px margin on the top at the breakpoint xl */ + .mt-xl-6 { margin-top: 40px !important; } + /* Set a 40px margin on the right at the breakpoint xl */ + .mr-xl-6 { margin-right: 40px !important; } + /* Set a 40px margin on the bottom at the breakpoint xl */ + .mb-xl-6 { margin-bottom: 40px !important; } + /* Set a 40px margin on the left at the breakpoint xl */ + .ml-xl-6 { margin-left: 40px !important; } + /* Set a negative 40px margin on top at the breakpoint xl */ + .mt-xl-n6 { margin-top: -40px !important; } + /* Set a negative 40px margin on the right at the breakpoint xl */ + .mr-xl-n6 { margin-right: -40px !important; } + /* Set a negative 40px margin on the bottom at the breakpoint xl */ + .mb-xl-n6 { margin-bottom: -40px !important; } + /* Set a negative 40px margin on the left at the breakpoint xl */ + .ml-xl-n6 { margin-left: -40px !important; } + /* Set a 40px margin on the left & right at the breakpoint xl */ + .mx-xl-6 { margin-right: 40px !important; margin-left: 40px !important; } + /* Set a 40px margin on the top & bottom at the breakpoint xl */ + .my-xl-6 { margin-top: 40px !important; margin-bottom: 40px !important; } } +/* Set a 0 padding to all sides */ +.p-0 { padding: 0 !important; } + +/* Set a 0 padding to the top */ +.pt-0 { padding-top: 0 !important; } + +/* Set a 0 padding to the right */ +.pr-0 { padding-right: 0 !important; } + +/* Set a 0 padding to the bottom */ +.pb-0 { padding-bottom: 0 !important; } + +/* Set a 0 padding to the left */ +.pl-0 { padding-left: 0 !important; } + +/* Set a 0 padding to the left & right */ +.px-0 { padding-right: 0 !important; padding-left: 0 !important; } + +/* Set a 0 padding to the top & bottom */ +.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; } + +/* Set a 4px padding to all sides */ +.p-1 { padding: 4px !important; } + +/* Set a 4px padding to the top */ +.pt-1 { padding-top: 4px !important; } + +/* Set a 4px padding to the right */ +.pr-1 { padding-right: 4px !important; } + +/* Set a 4px padding to the bottom */ +.pb-1 { padding-bottom: 4px !important; } + +/* Set a 4px padding to the left */ +.pl-1 { padding-left: 4px !important; } + +/* Set a 4px padding to the left & right */ +.px-1 { padding-right: 4px !important; padding-left: 4px !important; } + +/* Set a 4px padding to the top & bottom */ +.py-1 { padding-top: 4px !important; padding-bottom: 4px !important; } + +/* Set a 8px padding to all sides */ +.p-2 { padding: 8px !important; } + +/* Set a 8px padding to the top */ +.pt-2 { padding-top: 8px !important; } + +/* Set a 8px padding to the right */ +.pr-2 { padding-right: 8px !important; } + +/* Set a 8px padding to the bottom */ +.pb-2 { padding-bottom: 8px !important; } + +/* Set a 8px padding to the left */ +.pl-2 { padding-left: 8px !important; } + +/* Set a 8px padding to the left & right */ +.px-2 { padding-right: 8px !important; padding-left: 8px !important; } + +/* Set a 8px padding to the top & bottom */ +.py-2 { padding-top: 8px !important; padding-bottom: 8px !important; } + +/* Set a 16px padding to all sides */ +.p-3 { padding: 16px !important; } + +/* Set a 16px padding to the top */ +.pt-3 { padding-top: 16px !important; } + +/* Set a 16px padding to the right */ +.pr-3 { padding-right: 16px !important; } + +/* Set a 16px padding to the bottom */ +.pb-3 { padding-bottom: 16px !important; } + +/* Set a 16px padding to the left */ +.pl-3 { padding-left: 16px !important; } + +/* Set a 16px padding to the left & right */ +.px-3 { padding-right: 16px !important; padding-left: 16px !important; } + +/* Set a 16px padding to the top & bottom */ +.py-3 { padding-top: 16px !important; padding-bottom: 16px !important; } + +/* Set a 24px padding to all sides */ +.p-4 { padding: 24px !important; } + +/* Set a 24px padding to the top */ +.pt-4 { padding-top: 24px !important; } + +/* Set a 24px padding to the right */ +.pr-4 { padding-right: 24px !important; } + +/* Set a 24px padding to the bottom */ +.pb-4 { padding-bottom: 24px !important; } + +/* Set a 24px padding to the left */ +.pl-4 { padding-left: 24px !important; } + +/* Set a 24px padding to the left & right */ +.px-4 { padding-right: 24px !important; padding-left: 24px !important; } + +/* Set a 24px padding to the top & bottom */ +.py-4 { padding-top: 24px !important; padding-bottom: 24px !important; } + +/* Set a 32px padding to all sides */ +.p-5 { padding: 32px !important; } + +/* Set a 32px padding to the top */ +.pt-5 { padding-top: 32px !important; } + +/* Set a 32px padding to the right */ +.pr-5 { padding-right: 32px !important; } + +/* Set a 32px padding to the bottom */ +.pb-5 { padding-bottom: 32px !important; } + +/* Set a 32px padding to the left */ +.pl-5 { padding-left: 32px !important; } + +/* Set a 32px padding to the left & right */ +.px-5 { padding-right: 32px !important; padding-left: 32px !important; } + +/* Set a 32px padding to the top & bottom */ +.py-5 { padding-top: 32px !important; padding-bottom: 32px !important; } + +/* Set a 40px padding to all sides */ +.p-6 { padding: 40px !important; } + +/* Set a 40px padding to the top */ +.pt-6 { padding-top: 40px !important; } + +/* Set a 40px padding to the right */ +.pr-6 { padding-right: 40px !important; } + +/* Set a 40px padding to the bottom */ +.pb-6 { padding-bottom: 40px !important; } + +/* Set a 40px padding to the left */ +.pl-6 { padding-left: 40px !important; } + +/* Set a 40px padding to the left & right */ +.px-6 { padding-right: 40px !important; padding-left: 40px !important; } + +/* Set a 40px padding to the top & bottom */ +.py-6 { padding-top: 40px !important; padding-bottom: 40px !important; } + +@media (min-width: 544px) { /* Set a 0 padding to all sides at the sm breakpoint */ + .p-sm-0 { padding: 0 !important; } + /* Set a 0 padding to the top at the sm breakpoint */ + .pt-sm-0 { padding-top: 0 !important; } + /* Set a 0 padding to the right at the sm breakpoint */ + .pr-sm-0 { padding-right: 0 !important; } + /* Set a 0 padding to the bottom at the sm breakpoint */ + .pb-sm-0 { padding-bottom: 0 !important; } + /* Set a 0 padding to the left at the sm breakpoint */ + .pl-sm-0 { padding-left: 0 !important; } + /* Set a 0 padding to the left & right at the sm breakpoint */ + .px-sm-0 { padding-right: 0 !important; padding-left: 0 !important; } + /* Set a 0 padding to the top & bottom at the sm breakpoint */ + .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; } } +@media (min-width: 544px) { /* Set a 4px padding to all sides at the sm breakpoint */ + .p-sm-1 { padding: 4px !important; } + /* Set a 4px padding to the top at the sm breakpoint */ + .pt-sm-1 { padding-top: 4px !important; } + /* Set a 4px padding to the right at the sm breakpoint */ + .pr-sm-1 { padding-right: 4px !important; } + /* Set a 4px padding to the bottom at the sm breakpoint */ + .pb-sm-1 { padding-bottom: 4px !important; } + /* Set a 4px padding to the left at the sm breakpoint */ + .pl-sm-1 { padding-left: 4px !important; } + /* Set a 4px padding to the left & right at the sm breakpoint */ + .px-sm-1 { padding-right: 4px !important; padding-left: 4px !important; } + /* Set a 4px padding to the top & bottom at the sm breakpoint */ + .py-sm-1 { padding-top: 4px !important; padding-bottom: 4px !important; } } +@media (min-width: 544px) { /* Set a 8px padding to all sides at the sm breakpoint */ + .p-sm-2 { padding: 8px !important; } + /* Set a 8px padding to the top at the sm breakpoint */ + .pt-sm-2 { padding-top: 8px !important; } + /* Set a 8px padding to the right at the sm breakpoint */ + .pr-sm-2 { padding-right: 8px !important; } + /* Set a 8px padding to the bottom at the sm breakpoint */ + .pb-sm-2 { padding-bottom: 8px !important; } + /* Set a 8px padding to the left at the sm breakpoint */ + .pl-sm-2 { padding-left: 8px !important; } + /* Set a 8px padding to the left & right at the sm breakpoint */ + .px-sm-2 { padding-right: 8px !important; padding-left: 8px !important; } + /* Set a 8px padding to the top & bottom at the sm breakpoint */ + .py-sm-2 { padding-top: 8px !important; padding-bottom: 8px !important; } } +@media (min-width: 544px) { /* Set a 16px padding to all sides at the sm breakpoint */ + .p-sm-3 { padding: 16px !important; } + /* Set a 16px padding to the top at the sm breakpoint */ + .pt-sm-3 { padding-top: 16px !important; } + /* Set a 16px padding to the right at the sm breakpoint */ + .pr-sm-3 { padding-right: 16px !important; } + /* Set a 16px padding to the bottom at the sm breakpoint */ + .pb-sm-3 { padding-bottom: 16px !important; } + /* Set a 16px padding to the left at the sm breakpoint */ + .pl-sm-3 { padding-left: 16px !important; } + /* Set a 16px padding to the left & right at the sm breakpoint */ + .px-sm-3 { padding-right: 16px !important; padding-left: 16px !important; } + /* Set a 16px padding to the top & bottom at the sm breakpoint */ + .py-sm-3 { padding-top: 16px !important; padding-bottom: 16px !important; } } +@media (min-width: 544px) { /* Set a 24px padding to all sides at the sm breakpoint */ + .p-sm-4 { padding: 24px !important; } + /* Set a 24px padding to the top at the sm breakpoint */ + .pt-sm-4 { padding-top: 24px !important; } + /* Set a 24px padding to the right at the sm breakpoint */ + .pr-sm-4 { padding-right: 24px !important; } + /* Set a 24px padding to the bottom at the sm breakpoint */ + .pb-sm-4 { padding-bottom: 24px !important; } + /* Set a 24px padding to the left at the sm breakpoint */ + .pl-sm-4 { padding-left: 24px !important; } + /* Set a 24px padding to the left & right at the sm breakpoint */ + .px-sm-4 { padding-right: 24px !important; padding-left: 24px !important; } + /* Set a 24px padding to the top & bottom at the sm breakpoint */ + .py-sm-4 { padding-top: 24px !important; padding-bottom: 24px !important; } } +@media (min-width: 544px) { /* Set a 32px padding to all sides at the sm breakpoint */ + .p-sm-5 { padding: 32px !important; } + /* Set a 32px padding to the top at the sm breakpoint */ + .pt-sm-5 { padding-top: 32px !important; } + /* Set a 32px padding to the right at the sm breakpoint */ + .pr-sm-5 { padding-right: 32px !important; } + /* Set a 32px padding to the bottom at the sm breakpoint */ + .pb-sm-5 { padding-bottom: 32px !important; } + /* Set a 32px padding to the left at the sm breakpoint */ + .pl-sm-5 { padding-left: 32px !important; } + /* Set a 32px padding to the left & right at the sm breakpoint */ + .px-sm-5 { padding-right: 32px !important; padding-left: 32px !important; } + /* Set a 32px padding to the top & bottom at the sm breakpoint */ + .py-sm-5 { padding-top: 32px !important; padding-bottom: 32px !important; } } +@media (min-width: 544px) { /* Set a 40px padding to all sides at the sm breakpoint */ + .p-sm-6 { padding: 40px !important; } + /* Set a 40px padding to the top at the sm breakpoint */ + .pt-sm-6 { padding-top: 40px !important; } + /* Set a 40px padding to the right at the sm breakpoint */ + .pr-sm-6 { padding-right: 40px !important; } + /* Set a 40px padding to the bottom at the sm breakpoint */ + .pb-sm-6 { padding-bottom: 40px !important; } + /* Set a 40px padding to the left at the sm breakpoint */ + .pl-sm-6 { padding-left: 40px !important; } + /* Set a 40px padding to the left & right at the sm breakpoint */ + .px-sm-6 { padding-right: 40px !important; padding-left: 40px !important; } + /* Set a 40px padding to the top & bottom at the sm breakpoint */ + .py-sm-6 { padding-top: 40px !important; padding-bottom: 40px !important; } } +@media (min-width: 768px) { /* Set a 0 padding to all sides at the md breakpoint */ + .p-md-0 { padding: 0 !important; } + /* Set a 0 padding to the top at the md breakpoint */ + .pt-md-0 { padding-top: 0 !important; } + /* Set a 0 padding to the right at the md breakpoint */ + .pr-md-0 { padding-right: 0 !important; } + /* Set a 0 padding to the bottom at the md breakpoint */ + .pb-md-0 { padding-bottom: 0 !important; } + /* Set a 0 padding to the left at the md breakpoint */ + .pl-md-0 { padding-left: 0 !important; } + /* Set a 0 padding to the left & right at the md breakpoint */ + .px-md-0 { padding-right: 0 !important; padding-left: 0 !important; } + /* Set a 0 padding to the top & bottom at the md breakpoint */ + .py-md-0 { padding-top: 0 !important; padding-bottom: 0 !important; } } +@media (min-width: 768px) { /* Set a 4px padding to all sides at the md breakpoint */ + .p-md-1 { padding: 4px !important; } + /* Set a 4px padding to the top at the md breakpoint */ + .pt-md-1 { padding-top: 4px !important; } + /* Set a 4px padding to the right at the md breakpoint */ + .pr-md-1 { padding-right: 4px !important; } + /* Set a 4px padding to the bottom at the md breakpoint */ + .pb-md-1 { padding-bottom: 4px !important; } + /* Set a 4px padding to the left at the md breakpoint */ + .pl-md-1 { padding-left: 4px !important; } + /* Set a 4px padding to the left & right at the md breakpoint */ + .px-md-1 { padding-right: 4px !important; padding-left: 4px !important; } + /* Set a 4px padding to the top & bottom at the md breakpoint */ + .py-md-1 { padding-top: 4px !important; padding-bottom: 4px !important; } } +@media (min-width: 768px) { /* Set a 8px padding to all sides at the md breakpoint */ + .p-md-2 { padding: 8px !important; } + /* Set a 8px padding to the top at the md breakpoint */ + .pt-md-2 { padding-top: 8px !important; } + /* Set a 8px padding to the right at the md breakpoint */ + .pr-md-2 { padding-right: 8px !important; } + /* Set a 8px padding to the bottom at the md breakpoint */ + .pb-md-2 { padding-bottom: 8px !important; } + /* Set a 8px padding to the left at the md breakpoint */ + .pl-md-2 { padding-left: 8px !important; } + /* Set a 8px padding to the left & right at the md breakpoint */ + .px-md-2 { padding-right: 8px !important; padding-left: 8px !important; } + /* Set a 8px padding to the top & bottom at the md breakpoint */ + .py-md-2 { padding-top: 8px !important; padding-bottom: 8px !important; } } +@media (min-width: 768px) { /* Set a 16px padding to all sides at the md breakpoint */ + .p-md-3 { padding: 16px !important; } + /* Set a 16px padding to the top at the md breakpoint */ + .pt-md-3 { padding-top: 16px !important; } + /* Set a 16px padding to the right at the md breakpoint */ + .pr-md-3 { padding-right: 16px !important; } + /* Set a 16px padding to the bottom at the md breakpoint */ + .pb-md-3 { padding-bottom: 16px !important; } + /* Set a 16px padding to the left at the md breakpoint */ + .pl-md-3 { padding-left: 16px !important; } + /* Set a 16px padding to the left & right at the md breakpoint */ + .px-md-3 { padding-right: 16px !important; padding-left: 16px !important; } + /* Set a 16px padding to the top & bottom at the md breakpoint */ + .py-md-3 { padding-top: 16px !important; padding-bottom: 16px !important; } } +@media (min-width: 768px) { /* Set a 24px padding to all sides at the md breakpoint */ + .p-md-4 { padding: 24px !important; } + /* Set a 24px padding to the top at the md breakpoint */ + .pt-md-4 { padding-top: 24px !important; } + /* Set a 24px padding to the right at the md breakpoint */ + .pr-md-4 { padding-right: 24px !important; } + /* Set a 24px padding to the bottom at the md breakpoint */ + .pb-md-4 { padding-bottom: 24px !important; } + /* Set a 24px padding to the left at the md breakpoint */ + .pl-md-4 { padding-left: 24px !important; } + /* Set a 24px padding to the left & right at the md breakpoint */ + .px-md-4 { padding-right: 24px !important; padding-left: 24px !important; } + /* Set a 24px padding to the top & bottom at the md breakpoint */ + .py-md-4 { padding-top: 24px !important; padding-bottom: 24px !important; } } +@media (min-width: 768px) { /* Set a 32px padding to all sides at the md breakpoint */ + .p-md-5 { padding: 32px !important; } + /* Set a 32px padding to the top at the md breakpoint */ + .pt-md-5 { padding-top: 32px !important; } + /* Set a 32px padding to the right at the md breakpoint */ + .pr-md-5 { padding-right: 32px !important; } + /* Set a 32px padding to the bottom at the md breakpoint */ + .pb-md-5 { padding-bottom: 32px !important; } + /* Set a 32px padding to the left at the md breakpoint */ + .pl-md-5 { padding-left: 32px !important; } + /* Set a 32px padding to the left & right at the md breakpoint */ + .px-md-5 { padding-right: 32px !important; padding-left: 32px !important; } + /* Set a 32px padding to the top & bottom at the md breakpoint */ + .py-md-5 { padding-top: 32px !important; padding-bottom: 32px !important; } } +@media (min-width: 768px) { /* Set a 40px padding to all sides at the md breakpoint */ + .p-md-6 { padding: 40px !important; } + /* Set a 40px padding to the top at the md breakpoint */ + .pt-md-6 { padding-top: 40px !important; } + /* Set a 40px padding to the right at the md breakpoint */ + .pr-md-6 { padding-right: 40px !important; } + /* Set a 40px padding to the bottom at the md breakpoint */ + .pb-md-6 { padding-bottom: 40px !important; } + /* Set a 40px padding to the left at the md breakpoint */ + .pl-md-6 { padding-left: 40px !important; } + /* Set a 40px padding to the left & right at the md breakpoint */ + .px-md-6 { padding-right: 40px !important; padding-left: 40px !important; } + /* Set a 40px padding to the top & bottom at the md breakpoint */ + .py-md-6 { padding-top: 40px !important; padding-bottom: 40px !important; } } +@media (min-width: 1012px) { /* Set a 0 padding to all sides at the lg breakpoint */ + .p-lg-0 { padding: 0 !important; } + /* Set a 0 padding to the top at the lg breakpoint */ + .pt-lg-0 { padding-top: 0 !important; } + /* Set a 0 padding to the right at the lg breakpoint */ + .pr-lg-0 { padding-right: 0 !important; } + /* Set a 0 padding to the bottom at the lg breakpoint */ + .pb-lg-0 { padding-bottom: 0 !important; } + /* Set a 0 padding to the left at the lg breakpoint */ + .pl-lg-0 { padding-left: 0 !important; } + /* Set a 0 padding to the left & right at the lg breakpoint */ + .px-lg-0 { padding-right: 0 !important; padding-left: 0 !important; } + /* Set a 0 padding to the top & bottom at the lg breakpoint */ + .py-lg-0 { padding-top: 0 !important; padding-bottom: 0 !important; } } +@media (min-width: 1012px) { /* Set a 4px padding to all sides at the lg breakpoint */ + .p-lg-1 { padding: 4px !important; } + /* Set a 4px padding to the top at the lg breakpoint */ + .pt-lg-1 { padding-top: 4px !important; } + /* Set a 4px padding to the right at the lg breakpoint */ + .pr-lg-1 { padding-right: 4px !important; } + /* Set a 4px padding to the bottom at the lg breakpoint */ + .pb-lg-1 { padding-bottom: 4px !important; } + /* Set a 4px padding to the left at the lg breakpoint */ + .pl-lg-1 { padding-left: 4px !important; } + /* Set a 4px padding to the left & right at the lg breakpoint */ + .px-lg-1 { padding-right: 4px !important; padding-left: 4px !important; } + /* Set a 4px padding to the top & bottom at the lg breakpoint */ + .py-lg-1 { padding-top: 4px !important; padding-bottom: 4px !important; } } +@media (min-width: 1012px) { /* Set a 8px padding to all sides at the lg breakpoint */ + .p-lg-2 { padding: 8px !important; } + /* Set a 8px padding to the top at the lg breakpoint */ + .pt-lg-2 { padding-top: 8px !important; } + /* Set a 8px padding to the right at the lg breakpoint */ + .pr-lg-2 { padding-right: 8px !important; } + /* Set a 8px padding to the bottom at the lg breakpoint */ + .pb-lg-2 { padding-bottom: 8px !important; } + /* Set a 8px padding to the left at the lg breakpoint */ + .pl-lg-2 { padding-left: 8px !important; } + /* Set a 8px padding to the left & right at the lg breakpoint */ + .px-lg-2 { padding-right: 8px !important; padding-left: 8px !important; } + /* Set a 8px padding to the top & bottom at the lg breakpoint */ + .py-lg-2 { padding-top: 8px !important; padding-bottom: 8px !important; } } +@media (min-width: 1012px) { /* Set a 16px padding to all sides at the lg breakpoint */ + .p-lg-3 { padding: 16px !important; } + /* Set a 16px padding to the top at the lg breakpoint */ + .pt-lg-3 { padding-top: 16px !important; } + /* Set a 16px padding to the right at the lg breakpoint */ + .pr-lg-3 { padding-right: 16px !important; } + /* Set a 16px padding to the bottom at the lg breakpoint */ + .pb-lg-3 { padding-bottom: 16px !important; } + /* Set a 16px padding to the left at the lg breakpoint */ + .pl-lg-3 { padding-left: 16px !important; } + /* Set a 16px padding to the left & right at the lg breakpoint */ + .px-lg-3 { padding-right: 16px !important; padding-left: 16px !important; } + /* Set a 16px padding to the top & bottom at the lg breakpoint */ + .py-lg-3 { padding-top: 16px !important; padding-bottom: 16px !important; } } +@media (min-width: 1012px) { /* Set a 24px padding to all sides at the lg breakpoint */ + .p-lg-4 { padding: 24px !important; } + /* Set a 24px padding to the top at the lg breakpoint */ + .pt-lg-4 { padding-top: 24px !important; } + /* Set a 24px padding to the right at the lg breakpoint */ + .pr-lg-4 { padding-right: 24px !important; } + /* Set a 24px padding to the bottom at the lg breakpoint */ + .pb-lg-4 { padding-bottom: 24px !important; } + /* Set a 24px padding to the left at the lg breakpoint */ + .pl-lg-4 { padding-left: 24px !important; } + /* Set a 24px padding to the left & right at the lg breakpoint */ + .px-lg-4 { padding-right: 24px !important; padding-left: 24px !important; } + /* Set a 24px padding to the top & bottom at the lg breakpoint */ + .py-lg-4 { padding-top: 24px !important; padding-bottom: 24px !important; } } +@media (min-width: 1012px) { /* Set a 32px padding to all sides at the lg breakpoint */ + .p-lg-5 { padding: 32px !important; } + /* Set a 32px padding to the top at the lg breakpoint */ + .pt-lg-5 { padding-top: 32px !important; } + /* Set a 32px padding to the right at the lg breakpoint */ + .pr-lg-5 { padding-right: 32px !important; } + /* Set a 32px padding to the bottom at the lg breakpoint */ + .pb-lg-5 { padding-bottom: 32px !important; } + /* Set a 32px padding to the left at the lg breakpoint */ + .pl-lg-5 { padding-left: 32px !important; } + /* Set a 32px padding to the left & right at the lg breakpoint */ + .px-lg-5 { padding-right: 32px !important; padding-left: 32px !important; } + /* Set a 32px padding to the top & bottom at the lg breakpoint */ + .py-lg-5 { padding-top: 32px !important; padding-bottom: 32px !important; } } +@media (min-width: 1012px) { /* Set a 40px padding to all sides at the lg breakpoint */ + .p-lg-6 { padding: 40px !important; } + /* Set a 40px padding to the top at the lg breakpoint */ + .pt-lg-6 { padding-top: 40px !important; } + /* Set a 40px padding to the right at the lg breakpoint */ + .pr-lg-6 { padding-right: 40px !important; } + /* Set a 40px padding to the bottom at the lg breakpoint */ + .pb-lg-6 { padding-bottom: 40px !important; } + /* Set a 40px padding to the left at the lg breakpoint */ + .pl-lg-6 { padding-left: 40px !important; } + /* Set a 40px padding to the left & right at the lg breakpoint */ + .px-lg-6 { padding-right: 40px !important; padding-left: 40px !important; } + /* Set a 40px padding to the top & bottom at the lg breakpoint */ + .py-lg-6 { padding-top: 40px !important; padding-bottom: 40px !important; } } +@media (min-width: 1280px) { /* Set a 0 padding to all sides at the xl breakpoint */ + .p-xl-0 { padding: 0 !important; } + /* Set a 0 padding to the top at the xl breakpoint */ + .pt-xl-0 { padding-top: 0 !important; } + /* Set a 0 padding to the right at the xl breakpoint */ + .pr-xl-0 { padding-right: 0 !important; } + /* Set a 0 padding to the bottom at the xl breakpoint */ + .pb-xl-0 { padding-bottom: 0 !important; } + /* Set a 0 padding to the left at the xl breakpoint */ + .pl-xl-0 { padding-left: 0 !important; } + /* Set a 0 padding to the left & right at the xl breakpoint */ + .px-xl-0 { padding-right: 0 !important; padding-left: 0 !important; } + /* Set a 0 padding to the top & bottom at the xl breakpoint */ + .py-xl-0 { padding-top: 0 !important; padding-bottom: 0 !important; } } +@media (min-width: 1280px) { /* Set a 4px padding to all sides at the xl breakpoint */ + .p-xl-1 { padding: 4px !important; } + /* Set a 4px padding to the top at the xl breakpoint */ + .pt-xl-1 { padding-top: 4px !important; } + /* Set a 4px padding to the right at the xl breakpoint */ + .pr-xl-1 { padding-right: 4px !important; } + /* Set a 4px padding to the bottom at the xl breakpoint */ + .pb-xl-1 { padding-bottom: 4px !important; } + /* Set a 4px padding to the left at the xl breakpoint */ + .pl-xl-1 { padding-left: 4px !important; } + /* Set a 4px padding to the left & right at the xl breakpoint */ + .px-xl-1 { padding-right: 4px !important; padding-left: 4px !important; } + /* Set a 4px padding to the top & bottom at the xl breakpoint */ + .py-xl-1 { padding-top: 4px !important; padding-bottom: 4px !important; } } +@media (min-width: 1280px) { /* Set a 8px padding to all sides at the xl breakpoint */ + .p-xl-2 { padding: 8px !important; } + /* Set a 8px padding to the top at the xl breakpoint */ + .pt-xl-2 { padding-top: 8px !important; } + /* Set a 8px padding to the right at the xl breakpoint */ + .pr-xl-2 { padding-right: 8px !important; } + /* Set a 8px padding to the bottom at the xl breakpoint */ + .pb-xl-2 { padding-bottom: 8px !important; } + /* Set a 8px padding to the left at the xl breakpoint */ + .pl-xl-2 { padding-left: 8px !important; } + /* Set a 8px padding to the left & right at the xl breakpoint */ + .px-xl-2 { padding-right: 8px !important; padding-left: 8px !important; } + /* Set a 8px padding to the top & bottom at the xl breakpoint */ + .py-xl-2 { padding-top: 8px !important; padding-bottom: 8px !important; } } +@media (min-width: 1280px) { /* Set a 16px padding to all sides at the xl breakpoint */ + .p-xl-3 { padding: 16px !important; } + /* Set a 16px padding to the top at the xl breakpoint */ + .pt-xl-3 { padding-top: 16px !important; } + /* Set a 16px padding to the right at the xl breakpoint */ + .pr-xl-3 { padding-right: 16px !important; } + /* Set a 16px padding to the bottom at the xl breakpoint */ + .pb-xl-3 { padding-bottom: 16px !important; } + /* Set a 16px padding to the left at the xl breakpoint */ + .pl-xl-3 { padding-left: 16px !important; } + /* Set a 16px padding to the left & right at the xl breakpoint */ + .px-xl-3 { padding-right: 16px !important; padding-left: 16px !important; } + /* Set a 16px padding to the top & bottom at the xl breakpoint */ + .py-xl-3 { padding-top: 16px !important; padding-bottom: 16px !important; } } +@media (min-width: 1280px) { /* Set a 24px padding to all sides at the xl breakpoint */ + .p-xl-4 { padding: 24px !important; } + /* Set a 24px padding to the top at the xl breakpoint */ + .pt-xl-4 { padding-top: 24px !important; } + /* Set a 24px padding to the right at the xl breakpoint */ + .pr-xl-4 { padding-right: 24px !important; } + /* Set a 24px padding to the bottom at the xl breakpoint */ + .pb-xl-4 { padding-bottom: 24px !important; } + /* Set a 24px padding to the left at the xl breakpoint */ + .pl-xl-4 { padding-left: 24px !important; } + /* Set a 24px padding to the left & right at the xl breakpoint */ + .px-xl-4 { padding-right: 24px !important; padding-left: 24px !important; } + /* Set a 24px padding to the top & bottom at the xl breakpoint */ + .py-xl-4 { padding-top: 24px !important; padding-bottom: 24px !important; } } +@media (min-width: 1280px) { /* Set a 32px padding to all sides at the xl breakpoint */ + .p-xl-5 { padding: 32px !important; } + /* Set a 32px padding to the top at the xl breakpoint */ + .pt-xl-5 { padding-top: 32px !important; } + /* Set a 32px padding to the right at the xl breakpoint */ + .pr-xl-5 { padding-right: 32px !important; } + /* Set a 32px padding to the bottom at the xl breakpoint */ + .pb-xl-5 { padding-bottom: 32px !important; } + /* Set a 32px padding to the left at the xl breakpoint */ + .pl-xl-5 { padding-left: 32px !important; } + /* Set a 32px padding to the left & right at the xl breakpoint */ + .px-xl-5 { padding-right: 32px !important; padding-left: 32px !important; } + /* Set a 32px padding to the top & bottom at the xl breakpoint */ + .py-xl-5 { padding-top: 32px !important; padding-bottom: 32px !important; } } +@media (min-width: 1280px) { /* Set a 40px padding to all sides at the xl breakpoint */ + .p-xl-6 { padding: 40px !important; } + /* Set a 40px padding to the top at the xl breakpoint */ + .pt-xl-6 { padding-top: 40px !important; } + /* Set a 40px padding to the right at the xl breakpoint */ + .pr-xl-6 { padding-right: 40px !important; } + /* Set a 40px padding to the bottom at the xl breakpoint */ + .pb-xl-6 { padding-bottom: 40px !important; } + /* Set a 40px padding to the left at the xl breakpoint */ + .pl-xl-6 { padding-left: 40px !important; } + /* Set a 40px padding to the left & right at the xl breakpoint */ + .px-xl-6 { padding-right: 40px !important; padding-left: 40px !important; } + /* Set a 40px padding to the top & bottom at the xl breakpoint */ + .py-xl-6 { padding-top: 40px !important; padding-bottom: 40px !important; } } +.p-responsive { padding-right: 16px !important; padding-left: 16px !important; } +@media (min-width: 544px) { .p-responsive { padding-right: 40px !important; padding-left: 40px !important; } } +@media (min-width: 1012px) { .p-responsive { padding-right: 16px !important; padding-left: 16px !important; } } + +/* Set the font size to 26px */ +.h1 { font-size: 26px !important; } +@media (min-width: 768px) { .h1 { font-size: 32px !important; } } + +/* Set the font size to 22px */ +.h2 { font-size: 22px !important; } +@media (min-width: 768px) { .h2 { font-size: 24px !important; } } + +/* Set the font size to 18px */ +.h3 { font-size: 18px !important; } +@media (min-width: 768px) { .h3 { font-size: 20px !important; } } + +/* Set the font size to 16px */ +.h4 { font-size: 16px !important; } + +/* Set the font size to 14px */ +.h5 { font-size: 14px !important; } + +/* Set the font size to 12px */ +.h6 { font-size: 12px !important; } + +.h1, .h2, .h3, .h4, .h5, .h6 { font-weight: 600 !important; } + +/* Set the font size to 26px */ +.f1 { font-size: 26px !important; } +@media (min-width: 768px) { .f1 { font-size: 32px !important; } } + +/* Set the font size to 22px */ +.f2 { font-size: 22px !important; } +@media (min-width: 768px) { .f2 { font-size: 24px !important; } } + +/* Set the font size to 18px */ +.f3 { font-size: 18px !important; } +@media (min-width: 768px) { .f3 { font-size: 20px !important; } } + +/* Set the font size to 16px */ +.f4 { font-size: 16px !important; } +@media (min-width: 768px) { .f4 { font-size: 16px !important; } } + +/* Set the font size to 14px */ +.f5 { font-size: 14px !important; } + +/* Set the font size to 12px */ +.f6 { font-size: 12px !important; } + +/* Set the font size to 40px and weight to light */ +.f00-light { font-size: 40px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f00-light { font-size: 48px !important; } } + +/* Set the font size to 32px and weight to light */ +.f0-light { font-size: 32px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f0-light { font-size: 40px !important; } } + +/* Set the font size to 26px and weight to light */ +.f1-light { font-size: 26px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f1-light { font-size: 32px !important; } } + +/* Set the font size to 22px and weight to light */ +.f2-light { font-size: 22px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f2-light { font-size: 24px !important; } } + +/* Set the font size to 18px and weight to light */ +.f3-light { font-size: 18px !important; font-weight: 300 !important; } +@media (min-width: 768px) { .f3-light { font-size: 20px !important; } } + +/* Set the font size to ${#h6-size} */ +.text-small { font-size: 12px !important; } + +/* Large leading paragraphs */ +.lead { margin-bottom: 30px; font-size: 20px; font-weight: 300; color: #586069; } + +/* Set the line height to ultra condensed */ +.lh-condensed-ultra { line-height: 1 !important; } + +/* Set the line height to condensed */ +.lh-condensed { line-height: 1.25 !important; } + +/* Set the line height to default */ +.lh-default { line-height: 1.5 !important; } + +/* Text align to the right */ +.text-right { text-align: right !important; } + +/* Text align to the left */ +.text-left { text-align: left !important; } + +/* Text align to the center */ +.text-center { text-align: center !important; } + +@media (min-width: 544px) { .text-sm-right { text-align: right !important; } + .text-sm-left { text-align: left !important; } + .text-sm-center { text-align: center !important; } } +@media (min-width: 768px) { .text-md-right { text-align: right !important; } + .text-md-left { text-align: left !important; } + .text-md-center { text-align: center !important; } } +@media (min-width: 1012px) { .text-lg-right { text-align: right !important; } + .text-lg-left { text-align: left !important; } + .text-lg-center { text-align: center !important; } } +@media (min-width: 1280px) { .text-xl-right { text-align: right !important; } + .text-xl-left { text-align: left !important; } + .text-xl-center { text-align: center !important; } } +/* Set the font weight to normal */ +.text-normal { font-weight: 400 !important; } + +/* Set the font weight to bold */ +.text-bold { font-weight: 600 !important; } + +/* Set the font to italic */ +.text-italic { font-style: italic !important; } + +/* Make text uppercase */ +.text-uppercase { text-transform: uppercase !important; } + +/* Underline text */ +.no-underline { text-decoration: none !important; } + +/* Don't wrap white space */ +.no-wrap { white-space: nowrap !important; } + +/* Normal white space */ +.ws-normal { white-space: normal !important; } + +/* Allow long lines with no spaces to line break */ +.wb-break-all { word-break: break-all !important; } + +.text-emphasized { font-weight: 600; color: #24292e; } + +.list-style-none { list-style: none !important; } + +/* Add a dark text shadow */ +.text-shadow-dark { text-shadow: 0 1px 1px rgba(27, 31, 35, 0.25), 0 1px 25px rgba(27, 31, 35, 0.75); } + +/* Add a light text shadow */ +.text-shadow-light { text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } + +/* Visibility hidden */ +.v-hidden { visibility: hidden !important; } + +/* Visibility visible */ +.v-visible { visibility: visible !important; } + +/* Set the display to table */ +.d-table { display: table !important; } + +/* Set the display to table-cell */ +.d-table-cell { display: table-cell !important; } + +/* Set the table-layout to fixed */ +.table-fixed { table-layout: fixed !important; } + +/* Set the display to block */ +.d-block { display: block !important; } + +/* Set the display to inline */ +.d-inline { display: inline !important; } + +/* Set the display to inline-block */ +.d-inline-block { display: inline-block !important; } + +/* Set the display to flex */ +.d-flex { display: flex !important; } + +/* Set the display to inline-flex */ +.d-inline-flex { display: inline-flex !important; } + +/* Set the display to none */ +.d-none { display: none !important; } + +@media (min-width: 544px) { /* Set the display to table at the sm breakpoint */ + .d-sm-table { display: table !important; } + /* Set the display to table cell at the sm breakpoint */ + .d-sm-table-cell { display: table-cell !important; } + /* Set the display to block at the sm breakpoint */ + .d-sm-block { display: block !important; } + /* Set the display to inline at the sm breakpoint */ + .d-sm-inline { display: inline !important; } + /* Set the display to inline block at the sm breakpoint */ + .d-sm-inline-block { display: inline-block !important; } + /* Set the display to flex at the sm breakpoint */ + .d-sm-flex { display: flex !important; } + /* Set the display to flex at the sm breakpoint */ + .d-sm-inline-flex { display: inline-flex !important; } + /* Set the display to none at the sm breakpoint */ + .d-sm-none { display: none !important; } } +@media (min-width: 768px) { /* Set the display to table at the md breakpoint */ + .d-md-table { display: table !important; } + /* Set the display to table cell at the md breakpoint */ + .d-md-table-cell { display: table-cell !important; } + /* Set the display to block at the md breakpoint */ + .d-md-block { display: block !important; } + /* Set the display to inline at the md breakpoint */ + .d-md-inline { display: inline !important; } + /* Set the display to inline block at the md breakpoint */ + .d-md-inline-block { display: inline-block !important; } + /* Set the display to flex at the md breakpoint */ + .d-md-flex { display: flex !important; } + /* Set the display to flex at the md breakpoint */ + .d-md-inline-flex { display: inline-flex !important; } + /* Set the display to none at the md breakpoint */ + .d-md-none { display: none !important; } } +@media (min-width: 1012px) { /* Set the display to table at the lg breakpoint */ + .d-lg-table { display: table !important; } + /* Set the display to table cell at the lg breakpoint */ + .d-lg-table-cell { display: table-cell !important; } + /* Set the display to block at the lg breakpoint */ + .d-lg-block { display: block !important; } + /* Set the display to inline at the lg breakpoint */ + .d-lg-inline { display: inline !important; } + /* Set the display to inline block at the lg breakpoint */ + .d-lg-inline-block { display: inline-block !important; } + /* Set the display to flex at the lg breakpoint */ + .d-lg-flex { display: flex !important; } + /* Set the display to flex at the lg breakpoint */ + .d-lg-inline-flex { display: inline-flex !important; } + /* Set the display to none at the lg breakpoint */ + .d-lg-none { display: none !important; } } +@media (min-width: 1280px) { /* Set the display to table at the xl breakpoint */ + .d-xl-table { display: table !important; } + /* Set the display to table cell at the xl breakpoint */ + .d-xl-table-cell { display: table-cell !important; } + /* Set the display to block at the xl breakpoint */ + .d-xl-block { display: block !important; } + /* Set the display to inline at the xl breakpoint */ + .d-xl-inline { display: inline !important; } + /* Set the display to inline block at the xl breakpoint */ + .d-xl-inline-block { display: inline-block !important; } + /* Set the display to flex at the xl breakpoint */ + .d-xl-flex { display: flex !important; } + /* Set the display to flex at the xl breakpoint */ + .d-xl-inline-flex { display: inline-flex !important; } + /* Set the display to none at the xl breakpoint */ + .d-xl-none { display: none !important; } } +@media (max-width: 544px) { .hide-sm { display: none !important; } } +@media (min-width: 544px) and (max-width: 768px) { .hide-md { display: none !important; } } +@media (min-width: 768px) and (max-width: 1012px) { .hide-lg { display: none !important; } } +@media (min-width: 1012px) { .hide-xl { display: none !important; } } +.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); word-wrap: normal; border: 0; } + +.show-on-focus { position: absolute; width: 1px; height: 1px; margin: 0; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); } +.show-on-focus:focus { z-index: 20; width: auto; height: auto; clip: auto; } + +.container { width: 980px; margin-right: auto; margin-left: auto; } +.container::before { display: table; content: ""; } +.container::after { display: table; clear: both; content: ""; } + +.container-md { max-width: 768px; margin-right: auto; margin-left: auto; } + +.container-lg { max-width: 1012px; margin-right: auto; margin-left: auto; } + +.container-xl { max-width: 1280px; margin-right: auto; margin-left: auto; } + +.columns { margin-right: -10px; margin-left: -10px; } +.columns::before { display: table; content: ""; } +.columns::after { display: table; clear: both; content: ""; } + +.column { float: left; padding-right: 10px; padding-left: 10px; } + +.one-third { width: 33.333333%; } + +.two-thirds { width: 66.666667%; } + +.one-fourth { width: 25%; } + +.one-half { width: 50%; } + +.three-fourths { width: 75%; } + +.one-fifth { width: 20%; } + +.four-fifths { width: 80%; } + +.centered { display: block; float: none; margin-right: auto; margin-left: auto; } + +.col-1 { width: 8.3333333333%; } + +.col-2 { width: 16.6666666667%; } + +.col-3 { width: 25%; } + +.col-4 { width: 33.3333333333%; } + +.col-5 { width: 41.6666666667%; } + +.col-6 { width: 50%; } + +.col-7 { width: 58.3333333333%; } + +.col-8 { width: 66.6666666667%; } + +.col-9 { width: 75%; } + +.col-10 { width: 83.3333333333%; } + +.col-11 { width: 91.6666666667%; } + +.col-12 { width: 100%; } + +@media (min-width: 544px) { .col-sm-1 { width: 8.3333333333%; } + .col-sm-2 { width: 16.6666666667%; } + .col-sm-3 { width: 25%; } + .col-sm-4 { width: 33.3333333333%; } + .col-sm-5 { width: 41.6666666667%; } + .col-sm-6 { width: 50%; } + .col-sm-7 { width: 58.3333333333%; } + .col-sm-8 { width: 66.6666666667%; } + .col-sm-9 { width: 75%; } + .col-sm-10 { width: 83.3333333333%; } + .col-sm-11 { width: 91.6666666667%; } + .col-sm-12 { width: 100%; } } +@media (min-width: 768px) { .col-md-1 { width: 8.3333333333%; } + .col-md-2 { width: 16.6666666667%; } + .col-md-3 { width: 25%; } + .col-md-4 { width: 33.3333333333%; } + .col-md-5 { width: 41.6666666667%; } + .col-md-6 { width: 50%; } + .col-md-7 { width: 58.3333333333%; } + .col-md-8 { width: 66.6666666667%; } + .col-md-9 { width: 75%; } + .col-md-10 { width: 83.3333333333%; } + .col-md-11 { width: 91.6666666667%; } + .col-md-12 { width: 100%; } } +@media (min-width: 1012px) { .col-lg-1 { width: 8.3333333333%; } + .col-lg-2 { width: 16.6666666667%; } + .col-lg-3 { width: 25%; } + .col-lg-4 { width: 33.3333333333%; } + .col-lg-5 { width: 41.6666666667%; } + .col-lg-6 { width: 50%; } + .col-lg-7 { width: 58.3333333333%; } + .col-lg-8 { width: 66.6666666667%; } + .col-lg-9 { width: 75%; } + .col-lg-10 { width: 83.3333333333%; } + .col-lg-11 { width: 91.6666666667%; } + .col-lg-12 { width: 100%; } } +@media (min-width: 1280px) { .col-xl-1 { width: 8.3333333333%; } + .col-xl-2 { width: 16.6666666667%; } + .col-xl-3 { width: 25%; } + .col-xl-4 { width: 33.3333333333%; } + .col-xl-5 { width: 41.6666666667%; } + .col-xl-6 { width: 50%; } + .col-xl-7 { width: 58.3333333333%; } + .col-xl-8 { width: 66.6666666667%; } + .col-xl-9 { width: 75%; } + .col-xl-10 { width: 83.3333333333%; } + .col-xl-11 { width: 91.6666666667%; } + .col-xl-12 { width: 100%; } } +.gutter { margin-right: -16px; margin-left: -16px; } +.gutter > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + +.gutter-condensed { margin-right: -8px; margin-left: -8px; } +.gutter-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + +.gutter-spacious { margin-right: -24px; margin-left: -24px; } +.gutter-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } + +@media (min-width: 544px) { .gutter-sm { margin-right: -16px; margin-left: -16px; } + .gutter-sm > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + .gutter-sm-condensed { margin-right: -8px; margin-left: -8px; } + .gutter-sm-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + .gutter-sm-spacious { margin-right: -24px; margin-left: -24px; } + .gutter-sm-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } } +@media (min-width: 768px) { .gutter-md { margin-right: -16px; margin-left: -16px; } + .gutter-md > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + .gutter-md-condensed { margin-right: -8px; margin-left: -8px; } + .gutter-md-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + .gutter-md-spacious { margin-right: -24px; margin-left: -24px; } + .gutter-md-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } } +@media (min-width: 1012px) { .gutter-lg { margin-right: -16px; margin-left: -16px; } + .gutter-lg > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + .gutter-lg-condensed { margin-right: -8px; margin-left: -8px; } + .gutter-lg-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + .gutter-lg-spacious { margin-right: -24px; margin-left: -24px; } + .gutter-lg-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } } +@media (min-width: 1280px) { .gutter-xl { margin-right: -16px; margin-left: -16px; } + .gutter-xl > [class*="col-"] { padding-right: 16px !important; padding-left: 16px !important; } + .gutter-xl-condensed { margin-right: -8px; margin-left: -8px; } + .gutter-xl-condensed > [class*="col-"] { padding-right: 8px !important; padding-left: 8px !important; } + .gutter-xl-spacious { margin-right: -24px; margin-left: -24px; } + .gutter-xl-spacious > [class*="col-"] { padding-right: 24px !important; padding-left: 24px !important; } } +.offset-1 { margin-left: 8.3333333333%; } + +.offset-2 { margin-left: 16.6666666667%; } + +.offset-3 { margin-left: 25%; } + +.offset-4 { margin-left: 33.3333333333%; } + +.offset-5 { margin-left: 41.6666666667%; } + +.offset-6 { margin-left: 50%; } + +.offset-7 { margin-left: 58.3333333333%; } + +.offset-8 { margin-left: 66.6666666667%; } + +.offset-9 { margin-left: 75%; } + +.offset-10 { margin-left: 83.3333333333%; } + +.offset-11 { margin-left: 91.6666666667%; } + +@media (min-width: 544px) { .offset-sm-1 { margin-left: 8.3333333333%; } + .offset-sm-2 { margin-left: 16.6666666667%; } + .offset-sm-3 { margin-left: 25%; } + .offset-sm-4 { margin-left: 33.3333333333%; } + .offset-sm-5 { margin-left: 41.6666666667%; } + .offset-sm-6 { margin-left: 50%; } + .offset-sm-7 { margin-left: 58.3333333333%; } + .offset-sm-8 { margin-left: 66.6666666667%; } + .offset-sm-9 { margin-left: 75%; } + .offset-sm-10 { margin-left: 83.3333333333%; } + .offset-sm-11 { margin-left: 91.6666666667%; } } +@media (min-width: 768px) { .offset-md-1 { margin-left: 8.3333333333%; } + .offset-md-2 { margin-left: 16.6666666667%; } + .offset-md-3 { margin-left: 25%; } + .offset-md-4 { margin-left: 33.3333333333%; } + .offset-md-5 { margin-left: 41.6666666667%; } + .offset-md-6 { margin-left: 50%; } + .offset-md-7 { margin-left: 58.3333333333%; } + .offset-md-8 { margin-left: 66.6666666667%; } + .offset-md-9 { margin-left: 75%; } + .offset-md-10 { margin-left: 83.3333333333%; } + .offset-md-11 { margin-left: 91.6666666667%; } } +@media (min-width: 1012px) { .offset-lg-1 { margin-left: 8.3333333333%; } + .offset-lg-2 { margin-left: 16.6666666667%; } + .offset-lg-3 { margin-left: 25%; } + .offset-lg-4 { margin-left: 33.3333333333%; } + .offset-lg-5 { margin-left: 41.6666666667%; } + .offset-lg-6 { margin-left: 50%; } + .offset-lg-7 { margin-left: 58.3333333333%; } + .offset-lg-8 { margin-left: 66.6666666667%; } + .offset-lg-9 { margin-left: 75%; } + .offset-lg-10 { margin-left: 83.3333333333%; } + .offset-lg-11 { margin-left: 91.6666666667%; } } +@media (min-width: 1280px) { .offset-xl-1 { margin-left: 8.3333333333%; } + .offset-xl-2 { margin-left: 16.6666666667%; } + .offset-xl-3 { margin-left: 25%; } + .offset-xl-4 { margin-left: 33.3333333333%; } + .offset-xl-5 { margin-left: 41.6666666667%; } + .offset-xl-6 { margin-left: 50%; } + .offset-xl-7 { margin-left: 58.3333333333%; } + .offset-xl-8 { margin-left: 66.6666666667%; } + .offset-xl-9 { margin-left: 75%; } + .offset-xl-10 { margin-left: 83.3333333333%; } + .offset-xl-11 { margin-left: 91.6666666667%; } } +.markdown-body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 16px; line-height: 1.5; word-wrap: break-word; } +.markdown-body::before { display: table; content: ""; } +.markdown-body::after { display: table; clear: both; content: ""; } +.markdown-body > *:first-child { margin-top: 0 !important; } +.markdown-body > *:last-child { margin-bottom: 0 !important; } +.markdown-body a:not([href]) { color: inherit; text-decoration: none; } +.markdown-body .absent { color: #cb2431; } +.markdown-body .anchor { float: left; padding-right: 4px; margin-left: -20px; line-height: 1; } +.markdown-body .anchor:focus { outline: none; } +.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre { margin-top: 0; margin-bottom: 16px; } +.markdown-body hr { height: 0.25em; padding: 0; margin: 24px 0; background-color: #e1e4e8; border: 0; } +.markdown-body blockquote { padding: 0 1em; color: #6a737d; border-left: 0.25em solid #dfe2e5; } +.markdown-body blockquote > :first-child { margin-top: 0; } +.markdown-body blockquote > :last-child { margin-bottom: 0; } +.markdown-body kbd { display: inline-block; padding: 3px 5px; font-size: 11px; line-height: 10px; color: #444d56; vertical-align: middle; background-color: #fafbfc; border: solid 1px #c6cbd1; border-bottom-color: #959da5; border-radius: 3px; box-shadow: inset 0 -1px 0 #959da5; } + +.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25; } +.markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link { color: #1b1f23; vertical-align: middle; visibility: hidden; } +.markdown-body h1:hover .anchor, .markdown-body h2:hover .anchor, .markdown-body h3:hover .anchor, .markdown-body h4:hover .anchor, .markdown-body h5:hover .anchor, .markdown-body h6:hover .anchor { text-decoration: none; } +.markdown-body h1:hover .anchor .octicon-link, .markdown-body h2:hover .anchor .octicon-link, .markdown-body h3:hover .anchor .octicon-link, .markdown-body h4:hover .anchor .octicon-link, .markdown-body h5:hover .anchor .octicon-link, .markdown-body h6:hover .anchor .octicon-link { visibility: visible; } +.markdown-body h1 tt, .markdown-body h1 code, .markdown-body h2 tt, .markdown-body h2 code, .markdown-body h3 tt, .markdown-body h3 code, .markdown-body h4 tt, .markdown-body h4 code, .markdown-body h5 tt, .markdown-body h5 code, .markdown-body h6 tt, .markdown-body h6 code { font-size: inherit; } +.markdown-body h1 { padding-bottom: 0.3em; font-size: 2em; border-bottom: 1px solid #eaecef; } +.markdown-body h2 { padding-bottom: 0.3em; font-size: 1.5em; border-bottom: 1px solid #eaecef; } +.markdown-body h3 { font-size: 1.25em; } +.markdown-body h4 { font-size: 1em; } +.markdown-body h5 { font-size: 0.875em; } +.markdown-body h6 { font-size: 0.85em; color: #6a737d; } + +.markdown-body ul, .markdown-body ol { padding-left: 2em; } +.markdown-body ul.no-list, .markdown-body ol.no-list { padding: 0; list-style-type: none; } +.markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul { margin-top: 0; margin-bottom: 0; } +.markdown-body li { word-wrap: break-all; } +.markdown-body li > p { margin-top: 16px; } +.markdown-body li + li { margin-top: 0.25em; } +.markdown-body dl { padding: 0; } +.markdown-body dl dt { padding: 0; margin-top: 16px; font-size: 1em; font-style: italic; font-weight: 600; } +.markdown-body dl dd { padding: 0 16px; margin-bottom: 16px; } + +.markdown-body table { display: block; width: 100%; overflow: auto; } +.markdown-body table th { font-weight: 600; } +.markdown-body table th, .markdown-body table td { padding: 6px 13px; border: 1px solid #dfe2e5; } +.markdown-body table tr { background-color: #fff; border-top: 1px solid #c6cbd1; } +.markdown-body table tr:nth-child(2n) { background-color: #f6f8fa; } +.markdown-body table img { background-color: transparent; } + +.markdown-body img { max-width: 100%; box-sizing: content-box; background-color: #fff; } +.markdown-body img[align=right] { padding-left: 20px; } +.markdown-body img[align=left] { padding-right: 20px; } +.markdown-body .emoji { max-width: none; vertical-align: text-top; background-color: transparent; } +.markdown-body span.frame { display: block; overflow: hidden; } +.markdown-body span.frame > span { display: block; float: left; width: auto; padding: 7px; margin: 13px 0 0; overflow: hidden; border: 1px solid #dfe2e5; } +.markdown-body span.frame span img { display: block; float: left; } +.markdown-body span.frame span span { display: block; padding: 5px 0 0; clear: both; color: #24292e; } +.markdown-body span.align-center { display: block; overflow: hidden; clear: both; } +.markdown-body span.align-center > span { display: block; margin: 13px auto 0; overflow: hidden; text-align: center; } +.markdown-body span.align-center span img { margin: 0 auto; text-align: center; } +.markdown-body span.align-right { display: block; overflow: hidden; clear: both; } +.markdown-body span.align-right > span { display: block; margin: 13px 0 0; overflow: hidden; text-align: right; } +.markdown-body span.align-right span img { margin: 0; text-align: right; } +.markdown-body span.float-left { display: block; float: left; margin-right: 13px; overflow: hidden; } +.markdown-body span.float-left span { margin: 13px 0 0; } +.markdown-body span.float-right { display: block; float: right; margin-left: 13px; overflow: hidden; } +.markdown-body span.float-right > span { display: block; margin: 13px auto 0; overflow: hidden; text-align: right; } + +.markdown-body code, .markdown-body tt { padding: 0.2em 0.4em; margin: 0; font-size: 85%; background-color: rgba(27, 31, 35, 0.05); border-radius: 3px; } +.markdown-body code br, .markdown-body tt br { display: none; } +.markdown-body del code { text-decoration: inherit; } +.markdown-body pre { word-wrap: normal; } +.markdown-body pre > code { padding: 0; margin: 0; font-size: 100%; word-break: normal; white-space: pre; background: transparent; border: 0; } +.markdown-body .highlight { margin-bottom: 16px; } +.markdown-body .highlight pre { margin-bottom: 0; word-break: normal; } +.markdown-body .highlight pre, .markdown-body pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: #f6f8fa; border-radius: 3px; } +.markdown-body pre code, .markdown-body pre tt { display: inline; max-width: auto; padding: 0; margin: 0; overflow: visible; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0; } + +.markdown-body .csv-data td, .markdown-body .csv-data th { padding: 5px; overflow: hidden; font-size: 12px; line-height: 1; text-align: left; white-space: nowrap; } +.markdown-body .csv-data .blob-num { padding: 10px 8px 9px; text-align: right; background: #fff; border: 0; } +.markdown-body .csv-data tr { border-top: 0; } +.markdown-body .csv-data th { font-weight: 600; background: #f6f8fa; border-top: 0; } + +.highlight table td { padding: 5px; } + +.highlight table pre { margin: 0; } + +.highlight .cm { color: #999988; font-style: italic; } + +.highlight .cp { color: #999999; font-weight: bold; } + +.highlight .c1 { color: #999988; font-style: italic; } + +.highlight .cs { color: #999999; font-weight: bold; font-style: italic; } + +.highlight .c, .highlight .cd { color: #999988; font-style: italic; } + +.highlight .err { color: #a61717; background-color: #e3d2d2; } + +.highlight .gd { color: #000000; background-color: #ffdddd; } + +.highlight .ge { color: #000000; font-style: italic; } + +.highlight .gr { color: #aa0000; } + +.highlight .gh { color: #999999; } + +.highlight .gi { color: #000000; background-color: #ddffdd; } + +.highlight .go { color: #888888; } + +.highlight .gp { color: #555555; } + +.highlight .gs { font-weight: bold; } + +.highlight .gu { color: #aaaaaa; } + +.highlight .gt { color: #aa0000; } + +.highlight .kc { color: #000000; font-weight: bold; } + +.highlight .kd { color: #000000; font-weight: bold; } + +.highlight .kn { color: #000000; font-weight: bold; } + +.highlight .kp { color: #000000; font-weight: bold; } + +.highlight .kr { color: #000000; font-weight: bold; } + +.highlight .kt { color: #445588; font-weight: bold; } + +.highlight .k, .highlight .kv { color: #000000; font-weight: bold; } + +.highlight .mf { color: #009999; } + +.highlight .mh { color: #009999; } + +.highlight .il { color: #009999; } + +.highlight .mi { color: #009999; } + +.highlight .mo { color: #009999; } + +.highlight .m, .highlight .mb, .highlight .mx { color: #009999; } + +.highlight .sb { color: #d14; } + +.highlight .sc { color: #d14; } + +.highlight .sd { color: #d14; } + +.highlight .s2 { color: #d14; } + +.highlight .se { color: #d14; } + +.highlight .sh { color: #d14; } + +.highlight .si { color: #d14; } + +.highlight .sx { color: #d14; } + +.highlight .sr { color: #009926; } + +.highlight .s1 { color: #d14; } + +.highlight .ss { color: #990073; } + +.highlight .s { color: #d14; } + +.highlight .na { color: #008080; } + +.highlight .bp { color: #999999; } + +.highlight .nb { color: #0086B3; } + +.highlight .nc { color: #445588; font-weight: bold; } + +.highlight .no { color: #008080; } + +.highlight .nd { color: #3c5d5d; font-weight: bold; } + +.highlight .ni { color: #800080; } + +.highlight .ne { color: #990000; font-weight: bold; } + +.highlight .nf { color: #990000; font-weight: bold; } + +.highlight .nl { color: #990000; font-weight: bold; } + +.highlight .nn { color: #555555; } + +.highlight .nt { color: #000080; } + +.highlight .vc { color: #008080; } + +.highlight .vg { color: #008080; } + +.highlight .vi { color: #008080; } + +.highlight .nv { color: #008080; } + +.highlight .ow { color: #000000; font-weight: bold; } + +.highlight .o { color: #000000; font-weight: bold; } + +.highlight .w { color: #bbbbbb; } + +.highlight { background-color: #f8f8f8; } diff --git a/website/jekyll_site/_site/colorscheme.css b/website/jekyll_site/_site/colorscheme.css new file mode 100644 index 0000000..033fba1 --- /dev/null +++ b/website/jekyll_site/_site/colorscheme.css @@ -0,0 +1,3 @@ +.intro-header .site-heading, .intro-header .post-heading, .intro-header .page-heading { color: white; } + +hr.small { border-color: white; } diff --git a/website/jekyll_site/_site/css/bootstrap.css b/website/jekyll_site/_site/css/bootstrap.css new file mode 100644 index 0000000..c6f3d21 --- /dev/null +++ b/website/jekyll_site/_site/css/bootstrap.css @@ -0,0 +1,6332 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !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^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur: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"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + 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; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + 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"] { + position: absolute; + margin-top: 4px \9; + 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], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm, +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm, +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +textarea.form-group-sm .form-control, +select[multiple].input-sm, +select[multiple].form-group-sm .form-control { + height: auto; +} +.input-lg, +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg, +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +textarea.form-group-lg .form-control, +select[multiple].input-lg, +select[multiple].form-group-lg .form-control { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.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.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: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + 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.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.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: #23527c; + 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: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.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; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + 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: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + visibility: 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; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@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-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +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 { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + 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-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + 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 (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !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: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !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: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/website/jekyll_site/_site/css/bootstrap.min.css b/website/jekyll_site/_site/css/bootstrap.min.css new file mode 100644 index 0000000..b6fe4e0 --- /dev/null +++ b/website/jekyll_site/_site/css/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!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^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur: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"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;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:400;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],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.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.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:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;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.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.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:#23527c;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:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.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;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;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:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility: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}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@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-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}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{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{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-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{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 (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!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:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!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:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/website/jekyll_site/_site/css/clean-blog.css b/website/jekyll_site/_site/css/clean-blog.css new file mode 100644 index 0000000..67c871c --- /dev/null +++ b/website/jekyll_site/_site/css/clean-blog.css @@ -0,0 +1,464 @@ +.intro-header .site-heading, +.intro-header .post-heading, +.intro-header .page-heading { + padding: 100px 0 50px; + color: #FFFFFF; +} +body { + font-family: 'Lora', 'Times New Roman', serif; + font-size: 20px; + color: #404040; +} +p { + line-height: 1.5; + margin: 30px 0; +} +p a { + text-decoration: underline; +} + +p.red { + color: #FF0000; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 800; +} +a { + color: #404040; +} +a:hover, +a:focus { + color: #0085a1; +} +a img:hover, +a img:focus { +} +blockquote { + color: #808080; + font-style: italic; +} +hr.small { + max-width: 100px; + margin: 15px auto; + border-width: 4px; + border-color: #FFFFFF; +} +.navbar-custom { + background: white; + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 3; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} +.navbar-custom .navbar-brand { + font-weight: 800; +} +.navbar-custom .nav li a { + text-transform: uppercase; + font-size: 12px; + font-weight: 800; + letter-spacing: 1px; +} +@media only screen and (min-width: 768px) { + .navbar-custom { + background: transparent; + border-bottom: 1px solid transparent; + } + .navbar-custom .navbar-brand { + color: white; + padding: 20px; + } + .navbar-custom .navbar-brand:hover, + .navbar-custom .navbar-brand:focus { + color: rgba(255, 255, 255, 0.8); + } + .navbar-custom .nav li a { + color: white; + padding: 20px; + } + .navbar-custom .nav li a:hover, + .navbar-custom .nav li a:focus { + color: rgba(255, 255, 255, 0.8); + } +} +@media only screen and (min-width: 1170px) { + .navbar-custom { + -webkit-transition: background-color 0.3s; + -moz-transition: background-color 0.3s; + transition: background-color 0.3s; + /* Force Hardware Acceleration in WebKit */ + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + } + .navbar-custom.is-fixed { + /* when the user scrolls down, we hide the header right above the viewport */ + position: fixed; + top: -61px; + background-color: rgba(255, 255, 255, 0.9); + border-bottom: 1px solid #f2f2f2; + -webkit-transition: -webkit-transform 0.3s; + -moz-transition: -moz-transform 0.3s; + transition: transform 0.3s; + } + .navbar-custom.is-fixed .navbar-brand { + color: #404040; + } + .navbar-custom.is-fixed .navbar-brand:hover, + .navbar-custom.is-fixed .navbar-brand:focus { + color: #0085a1; + } + .navbar-custom.is-fixed .nav li a { + color: #404040; + } + .navbar-custom.is-fixed .nav li a:hover, + .navbar-custom.is-fixed .nav li a:focus { + color: #0085a1; + } + .navbar-custom.is-visible { + /* if the user changes the scrolling direction, we show the header */ + -webkit-transform: translate3d(0, 100%, 0); + -moz-transform: translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0); + -o-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +.intro-header { + background-color: #808080; + background: no-repeat center center; + background-attachment: scroll; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + -o-background-size: cover; + margin-bottom: 20px; +} +@media only screen and (min-width: 768px) { + .intro-header .site-heading, + .intro-header .post-heading, + .intro-header .page-heading { + padding: 150px 0; + } +} +.intro-header .site-heading, +.intro-header .page-heading { + text-align: center; +} +.intro-header .site-heading h1, +.intro-header .page-heading h1 { + margin-top: 0; + font-size: 50px; +} +.intro-header .site-heading .subheading, +.intro-header .page-heading .subheading { + font-size: 24px; + line-height: 1.1; + display: block; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 300; + margin: 10px 0 0; +} +@media only screen and (min-width: 768px) { + .intro-header .site-heading h1, + .intro-header .page-heading h1 { + font-size: 80px; + } +} +.intro-header .post-heading h1 { + font-size: 35px; +} +.intro-header .post-heading .subheading, +.intro-header .post-heading .meta { + line-height: 1.1; + display: block; +} +.intro-header .post-heading .subheading { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 24px; + margin: 10px 0 30px; + font-weight: 600; +} +.intro-header .post-heading .meta { + font-family: 'Lora', 'Times New Roman', serif; + font-style: italic; + font-weight: 300; + font-size: 20px; +} +.intro-header .post-heading .meta a { + color: white; +} +@media only screen and (min-width: 768px) { + .intro-header .post-heading h1 { + font-size: 55px; + } + .intro-header .post-heading .subheading { + font-size: 30px; + } +} +.post-preview > a { + color: #404040; +} +.post-preview > a:hover, +.post-preview > a:focus { + text-decoration: none; + color: #0085a1; +} +.post-preview > a > .post-title { + font-size: 30px; + margin-top: 30px; + margin-bottom: 10px; +} +.post-preview > a > .post-subtitle { + margin: 0; + font-weight: 300; + margin-bottom: 10px; +} +.post-preview > .post-meta { + color: #808080; + font-size: 14px; + font-style: italic; + margin-top: 0; +} +.post-preview > .post-meta > a { + text-decoration: none; + color: #404040; +} +.post-preview > .post-meta > a:hover, +.post-preview > .post-meta > a:focus { + color: #0085a1; + text-decoration: underline; +} +@media only screen and (min-width: 768px) { + .post-preview > a > .post-title { + font-size: 24px; + } +} +.section-heading { + font-size: 36px; + margin-top: 60px; + font-weight: 700; +} +.caption { + text-align: center; + font-size: 14px; + padding: 10px; + font-style: italic; + margin: 0; + display: block; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} +footer { + padding: 50px 0 65px; +} +footer .list-inline { + margin: 0; + padding: 0; +} +footer .copyright { + font-size: 14px; + text-align: center; + margin-bottom: 0; +} +.floating-label-form-group { + font-size: 14px; + position: relative; + margin-bottom: 0; + padding-bottom: 0.5em; + border-bottom: 1px solid #eeeeee; +} +.floating-label-form-group input, +.floating-label-form-group textarea { + z-index: 1; + position: relative; + padding-right: 0; + padding-left: 0; + border: none; + border-radius: 0; + font-size: 1.5em; + background: none; + box-shadow: none !important; + resize: none; +} +.floating-label-form-group label { + display: block; + z-index: 0; + position: relative; + top: 2em; + margin: 0; + font-size: 0.85em; + line-height: 1.764705882em; + vertical-align: middle; + vertical-align: baseline; + opacity: 0; + -webkit-transition: top 0.3s ease,opacity 0.3s ease; + -moz-transition: top 0.3s ease,opacity 0.3s ease; + -ms-transition: top 0.3s ease,opacity 0.3s ease; + transition: top 0.3s ease,opacity 0.3s ease; +} +.floating-label-form-group::not(:first-child) { + padding-left: 14px; + border-left: 1px solid #eeeeee; +} +.floating-label-form-group-with-value label { + top: 0; + opacity: 1; +} +.floating-label-form-group-with-focus label { + color: #0085a1; +} +form .row:first-child .floating-label-form-group { + border-top: 1px solid #eeeeee; +} +.btn { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-transform: uppercase; + font-size: 14px; + font-weight: 800; + letter-spacing: 1px; + border-radius: 0; + padding: 15px 25px; +} +.btn-lg { + font-size: 16px; + padding: 25px 35px; +} +.btn-default:hover, +.btn-default:focus { + background-color: #0085a1; + border: 1px solid #0085a1; + color: white; +} +.pager { + margin: 20px 0 0; +} +.pager li > a, +.pager li > span { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-transform: uppercase; + font-size: 14px; + font-weight: 800; + letter-spacing: 1px; + padding: 10px 5px; + background-color: white; + border-radius: 0; +} +@media only screen and (min-width: 768px) { + .pager li > a, + .pager li > span { + font-size: 14px; + padding: 15px 25px; + } +} +.pager li > a:hover, +.pager li > a:focus { + color: white; + background-color: #0085a1; + border: 1px solid #0085a1; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #808080; + background-color: #404040; + cursor: not-allowed; +} +::-moz-selection { + color: white; + text-shadow: none; + background: #0085a1; +} +::selection { + color: white; + text-shadow: none; + background: #0085a1; +} +img::selection { + color: white; + background: transparent; +} +img::-moz-selection { + color: white; + background: transparent; +} +body { + webkit-tap-highlight-color: #0085a1; +} + +div.notepad-index-post-tags { + font-size: 16px; + float: none; + color: black; + padding-top: 1.25rem; + padding-bottom: 0.625rem; } +.notepad-index-post-tags a { + display: inline-block; + padding: 0.3125rem 0.9375rem; + margin-right: 0.1875rem; + color: black; + border: 0.0625rem solid black; + border-radius: 0.125rem; + margin-bottom: 0.3125rem; } +.notepad-index-post-tags a:hover { + color: #e51843; + border: 0.0625rem solid #e51843; } + +table { + width:100%; +} + +th { + border-bottom-color: black; + border-bottom-style: solid; + border-bottom-width: 1px; + border-collapse: collapse; +} + +div.float-right{ + width:300px; + position:fixed; + right:0; + /* margin-top:50px; */ + margin-right:2%; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +div.float-left{ + width:300px; + position:fixed; + left:0; + /* margin-top:50px; */ + margin-left:2%; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +@media (max-width: 1500px) { + div.float-left{ + display: none !important; + } + div.float-right{ + display: none !important; + } +} + +hr.style-one { + border: 0; + height: 1px; + background: #333; + background-image: linear-gradient(to right, #ccc, #333, #ccc); +} \ No newline at end of file diff --git a/website/jekyll_site/_site/css/clean-blog.min.css b/website/jekyll_site/_site/css/clean-blog.min.css new file mode 100644 index 0000000..93c0968 --- /dev/null +++ b/website/jekyll_site/_site/css/clean-blog.min.css @@ -0,0 +1 @@ +body{font-family:Lora,'Times New Roman',serif;font-size:20px;color:#404040}p{line-height:1.5;margin:30px 0}p a{text-decoration:underline}h1,h2,h3,h4,h5,h6{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:800}a{color:#404040}a:hover,a:focus{color:#0085a1}a img:hover,a img:focus{cursor:zoom-in}blockquote{color:gray;font-style:italic}hr.small{max-width:100px;margin:15px auto;border-width:4px;border-color:#fff}.navbar-custom{background:#fff;position:absolute;top:0;left:0;width:100%;z-index:3;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif}.navbar-custom .navbar-brand{font-weight:800}.navbar-custom .nav li a{text-transform:uppercase;font-size:12px;font-weight:800;letter-spacing:1px}@media only screen and (min-width:768px){.navbar-custom{background:0 0;border-bottom:1px solid transparent}.navbar-custom .navbar-brand{color:#fff;padding:20px}.navbar-custom .navbar-brand:hover,.navbar-custom .navbar-brand:focus{color:rgba(255,255,255,.8)}.navbar-custom .nav li a{color:#fff;padding:20px}.navbar-custom .nav li a:hover,.navbar-custom .nav li a:focus{color:rgba(255,255,255,.8)}}@media only screen and (min-width:1170px){.navbar-custom{-webkit-transition:background-color .3s;-moz-transition:background-color .3s;transition:background-color .3s;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-custom.is-fixed{position:fixed;top:-61px;background-color:rgba(255,255,255,.9);border-bottom:1px solid #f2f2f2;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;transition:transform .3s}.navbar-custom.is-fixed .navbar-brand{color:#404040}.navbar-custom.is-fixed .navbar-brand:hover,.navbar-custom.is-fixed .navbar-brand:focus{color:#0085a1}.navbar-custom.is-fixed .nav li a{color:#404040}.navbar-custom.is-fixed .nav li a:hover,.navbar-custom.is-fixed .nav li a:focus{color:#0085a1}.navbar-custom.is-visible{-webkit-transform:translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);-o-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.intro-header{background-color:gray;background:no-repeat center center;background-attachment:scroll;-webkit-background-size:cover;-moz-background-size:cover;background-size:cover;-o-background-size:cover;margin-bottom:50px}.intro-header .site-heading,.intro-header .post-heading,.intro-header .page-heading{padding:100px 0 50px;color:#fff}@media only screen and (min-width:768px){.intro-header .site-heading,.intro-header .post-heading,.intro-header .page-heading{padding:150px 0}}.intro-header .site-heading,.intro-header .page-heading{text-align:center}.intro-header .site-heading h1,.intro-header .page-heading h1{margin-top:0;font-size:50px}.intro-header .site-heading .subheading,.intro-header .page-heading .subheading{font-size:24px;line-height:1.1,display:block;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:300;margin:10px 0 0}@media only screen and (min-width:768px){.intro-header .site-heading h1,.intro-header .page-heading h1{font-size:80px}}.intro-header .post-heading h1{font-size:35px}.intro-header .post-heading .subheading,.intro-header .post-heading .meta{line-height:1.1;display:block}.intro-header .post-heading .subheading{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:24px;margin:10px 0 30px;font-weight:600}.intro-header .post-heading .meta{font-family:Lora,'Times New Roman',serif;font-style:italic;font-weight:300;font-size:20px}.intro-header .post-heading .meta a{color:#fff}@media only screen and (min-width:768px){.intro-header .post-heading h1{font-size:55px}.intro-header .post-heading .subheading{font-size:30px}}.post-preview>a{color:#404040}.post-preview>a:hover,.post-preview>a:focus{text-decoration:none;color:#0085a1}.post-preview>a>.post-title{font-size:30px;margin-top:30px;margin-bottom:10px}.post-preview>a>.post-subtitle{margin:0;font-weight:300;margin-bottom:10px}.post-preview>.post-meta{color:gray;font-size:18px;font-style:italic;margin-top:0}.post-preview>.post-meta>a{text-decoration:none;color:#404040}.post-preview>.post-meta>a:hover,.post-preview>.post-meta>a:focus{color:#0085a1;text-decoration:underline}@media only screen and (min-width:768px){.post-preview>a>.post-title{font-size:36px}}.section-heading{font-size:36px;margin-top:60px;font-weight:700}.caption{text-align:center;font-size:14px;padding:10px;font-style:italic;margin:0;display:block;border-bottom-right-radius:5px;border-bottom-left-radius:5px}footer{padding:50px 0 65px}footer .list-inline{margin:0;padding:0}footer .copyright{font-size:14px;text-align:center;margin-bottom:0}.floating-label-form-group{font-size:14px;position:relative;margin-bottom:0;padding-bottom:.5em;border-bottom:1px solid #eee}.floating-label-form-group input,.floating-label-form-group textarea{z-index:1;position:relative;padding-right:0;padding-left:0;border:none;border-radius:0;font-size:1.5em;background:0 0;box-shadow:none!important;resize:none}.floating-label-form-group label{display:block;z-index:0;position:relative;top:2em;margin:0;font-size:.85em;line-height:1.764705882em;vertical-align:middle;vertical-align:baseline;opacity:0;-webkit-transition:top .3s ease,opacity .3s ease;-moz-transition:top .3s ease,opacity .3s ease;-ms-transition:top .3s ease,opacity .3s ease;transition:top .3s ease,opacity .3s ease}.floating-label-form-group::not(:first-child){padding-left:14px;border-left:1px solid #eee}.floating-label-form-group-with-value label{top:0;opacity:1}.floating-label-form-group-with-focus label{color:#0085a1}form .row:first-child .floating-label-form-group{border-top:1px solid #eee}.btn{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;text-transform:uppercase;font-size:14px;font-weight:800;letter-spacing:1px;border-radius:0;padding:15px 25px}.btn-lg{font-size:16px;padding:25px 35px}.btn-default:hover,.btn-default:focus{background-color:#0085a1;border:1px solid #0085a1;color:#fff}.pager{margin:20px 0 0}.pager li>a,.pager li>span{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;text-transform:uppercase;font-size:14px;font-weight:800;letter-spacing:1px;padding:10px 5px;background-color:#fff;border-radius:0}@media only screen and (min-width:768px){.pager li>a,.pager li>span{font-size:14px;padding:15px 25px}}.pager li>a:hover,.pager li>a:focus{color:#fff;background-color:#0085a1;border:1px solid #0085a1}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:gray;background-color:#404040;cursor:not-allowed}::-moz-selection{color:#fff;text-shadow:none;background:#0085a1}::selection{color:#fff;text-shadow:none;background:#0085a1}img::selection{color:#fff;background:0 0}img::-moz-selection{color:#fff;background:0 0}body{webkit-tap-highlight-color:#0085a1} \ No newline at end of file diff --git a/website/jekyll_site/_site/css/mermaid.css b/website/jekyll_site/_site/css/mermaid.css new file mode 100644 index 0000000..769933f --- /dev/null +++ b/website/jekyll_site/_site/css/mermaid.css @@ -0,0 +1,273 @@ +/* Flowchart variables */ +/* Sequence Diagram variables */ +/* Gantt chart variables */ +.mermaid .label { + color: #333; +} +.node rect, +.node circle, +.node ellipse, +.node polygon { + fill: #ECECFF; + stroke: #CCCCFF; + stroke-width: 1px; +} +.edgePath .path { + stroke: #333333; +} +.edgeLabel { + background-color: #e8e8e8; +} +.cluster rect { + fill: #ffffde !important; + rx: 4 !important; + stroke: #aaaa33 !important; + stroke-width: 1px !important; +} +.cluster text { + fill: #333; +} +.actor { + stroke: #CCCCFF; + fill: #ECECFF; +} +text.actor { + fill: black; + stroke: none; +} +.actor-line { + stroke: grey; +} +.messageLine0 { + stroke-width: 1.5; + stroke-dasharray: "2 2"; + marker-end: "url(#arrowhead)"; + stroke: #333; +} +.messageLine1 { + stroke-width: 1.5; + stroke-dasharray: "2 2"; + stroke: #333; +} +#arrowhead { + fill: #333; +} +#crosshead path { + fill: #333 !important; + stroke: #333 !important; +} +.messageText { + fill: #333; + stroke: none; +} +.labelBox { + stroke: #CCCCFF; + fill: #ECECFF; +} +.labelText { + fill: black; + stroke: none; +} +.loopText { + fill: black; + stroke: none; +} +.loopLine { + stroke-width: 2; + stroke-dasharray: "2 2"; + marker-end: "url(#arrowhead)"; + stroke: #CCCCFF; +} +.note { + stroke: #aaaa33; + fill: #fff5ad; +} +.noteText { + fill: black; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; + font-size: 14px; +} +/** Section styling */ +.section { + stroke: none; + opacity: 0.2; +} +.section0 { + fill: rgba(102, 102, 255, 0.49); +} +.section2 { + fill: #fff400; +} +.section1, +.section3 { + fill: white; + opacity: 0.2; +} +.sectionTitle0 { + fill: #333; +} +.sectionTitle1 { + fill: #333; +} +.sectionTitle2 { + fill: #333; +} +.sectionTitle3 { + fill: #333; +} +.sectionTitle { + text-anchor: start; + font-size: 11px; + text-height: 14px; +} +/* Grid and axis */ +.grid .tick { + stroke: lightgrey; + opacity: 0.3; + shape-rendering: crispEdges; +} +.grid path { + stroke-width: 0; +} +/* Today line */ +.today { + fill: none; + stroke: red; + stroke-width: 2px; +} +/* Task styling */ +/* Default task */ +.task { + stroke-width: 2; +} +.taskText { + text-anchor: middle; + font-size: 11px; +} +.taskTextOutsideRight { + fill: black; + text-anchor: start; + font-size: 11px; +} +.taskTextOutsideLeft { + fill: black; + text-anchor: end; + font-size: 11px; +} +/* Specific task settings for the sections*/ +.taskText0, +.taskText1, +.taskText2, +.taskText3 { + fill: white; +} +.task0, +.task1, +.task2, +.task3 { + fill: #8a90dd; + stroke: #534fbc; +} +.taskTextOutside0, +.taskTextOutside2 { + fill: black; +} +.taskTextOutside1, +.taskTextOutside3 { + fill: black; +} +/* Active task */ +.active0, +.active1, +.active2, +.active3 { + fill: #bfc7ff; + stroke: #534fbc; +} +.activeText0, +.activeText1, +.activeText2, +.activeText3 { + fill: black !important; +} +/* Completed task */ +.done0, +.done1, +.done2, +.done3 { + stroke: grey; + fill: lightgrey; + stroke-width: 2; +} +.doneText0, +.doneText1, +.doneText2, +.doneText3 { + fill: black !important; +} +/* Tasks on the critical line */ +.crit0, +.crit1, +.crit2, +.crit3 { + stroke: #ff8888; + fill: red; + stroke-width: 2; +} +.activeCrit0, +.activeCrit1, +.activeCrit2, +.activeCrit3 { + stroke: #ff8888; + fill: #bfc7ff; + stroke-width: 2; +} +.doneCrit0, +.doneCrit1, +.doneCrit2, +.doneCrit3 { + stroke: #ff8888; + fill: lightgrey; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; +} +.doneCritText0, +.doneCritText1, +.doneCritText2, +.doneCritText3 { + fill: black !important; +} +.activeCritText0, +.activeCritText1, +.activeCritText2, +.activeCritText3 { + fill: black !important; +} +.titleText { + text-anchor: middle; + font-size: 18px; + fill: black; +} +/* + + +*/ +.node text { + font-family: 'trebuchet ms', verdana, arial; + font-size: 14px; +} +div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial; + font-size: 12px; + background: #ffffde; + border: 1px solid #aaaa33; + border-radius: 2px; + pointer-events: none; + z-index: 100; +} diff --git a/website/jekyll_site/_site/css/mermaid.forest.css b/website/jekyll_site/_site/css/mermaid.forest.css new file mode 100644 index 0000000..ecfbe7f --- /dev/null +++ b/website/jekyll_site/_site/css/mermaid.forest.css @@ -0,0 +1,353 @@ +/* Flowchart variables */ +/* Sequence Diagram variables */ +/* Gantt chart variables */ +.mermaid .label { + font-family: 'trebuchet ms', verdana, arial; + color: #333; +} +.node rect, +.node circle, +.node ellipse, +.node polygon { + fill: #cde498; + stroke: #13540c; + stroke-width: 1px; +} +.edgePath .path { + stroke: green; + stroke-width: 1.5px; +} +.edgeLabel { + background-color: #e8e8e8; +} +.cluster rect { + fill: #cdffb2 !important; + rx: 4 !important; + stroke: #6eaa49 !important; + stroke-width: 1px !important; +} +.cluster text { + fill: #333; +} +.actor { + stroke: #13540c; + fill: #cde498; +} +text.actor { + fill: black; + stroke: none; +} +.actor-line { + stroke: grey; +} +.messageLine0 { + stroke-width: 1.5; + stroke-dasharray: "2 2"; + marker-end: "url(#arrowhead)"; + stroke: #333; +} +.messageLine1 { + stroke-width: 1.5; + stroke-dasharray: "2 2"; + stroke: #333; +} +#arrowhead { + fill: #333; +} +#crosshead path { + fill: #333 !important; + stroke: #333 !important; +} +.messageText { + fill: #333; + stroke: none; +} +.labelBox { + stroke: #326932; + fill: #cde498; +} +.labelText { + fill: black; + stroke: none; +} +.loopText { + fill: black; + stroke: none; +} +.loopLine { + stroke-width: 2; + stroke-dasharray: "2 2"; + marker-end: "url(#arrowhead)"; + stroke: #326932; +} +.note { + stroke: #6eaa49; + fill: #fff5ad; +} +.noteText { + fill: black; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; + font-size: 14px; +} +/** Section styling */ +.section { + stroke: none; + opacity: 0.2; +} +.section0 { + fill: #6eaa49; +} +.section2 { + fill: #6eaa49; +} +.section1, +.section3 { + fill: white; + opacity: 0.2; +} +.sectionTitle0 { + fill: #333; +} +.sectionTitle1 { + fill: #333; +} +.sectionTitle2 { + fill: #333; +} +.sectionTitle3 { + fill: #333; +} +.sectionTitle { + text-anchor: start; + font-size: 11px; + text-height: 14px; +} +/* Grid and axis */ +.grid .tick { + stroke: lightgrey; + opacity: 0.3; + shape-rendering: crispEdges; +} +.grid path { + stroke-width: 0; +} +/* Today line */ +.today { + fill: none; + stroke: red; + stroke-width: 2px; +} +/* Task styling */ +/* Default task */ +.task { + stroke-width: 2; +} +.taskText { + text-anchor: middle; + font-size: 11px; +} +.taskTextOutsideRight { + fill: black; + text-anchor: start; + font-size: 11px; +} +.taskTextOutsideLeft { + fill: black; + text-anchor: end; + font-size: 11px; +} +/* Specific task settings for the sections*/ +.taskText0, +.taskText1, +.taskText2, +.taskText3 { + fill: white; +} +.task0, +.task1, +.task2, +.task3 { + fill: #487e3a; + stroke: #13540c; +} +.taskTextOutside0, +.taskTextOutside2 { + fill: black; +} +.taskTextOutside1, +.taskTextOutside3 { + fill: black; +} +/* Active task */ +.active0, +.active1, +.active2, +.active3 { + fill: #cde498; + stroke: #13540c; +} +.activeText0, +.activeText1, +.activeText2, +.activeText3 { + fill: black !important; +} +/* Completed task */ +.done0, +.done1, +.done2, +.done3 { + stroke: grey; + fill: lightgrey; + stroke-width: 2; +} +.doneText0, +.doneText1, +.doneText2, +.doneText3 { + fill: black !important; +} +/* Tasks on the critical line */ +.crit0, +.crit1, +.crit2, +.crit3 { + stroke: #ff8888; + fill: red; + stroke-width: 2; +} +.activeCrit0, +.activeCrit1, +.activeCrit2, +.activeCrit3 { + stroke: #ff8888; + fill: #cde498; + stroke-width: 2; +} +.doneCrit0, +.doneCrit1, +.doneCrit2, +.doneCrit3 { + stroke: #ff8888; + fill: lightgrey; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; +} +.doneCritText0, +.doneCritText1, +.doneCritText2, +.doneCritText3 { + fill: black !important; +} +.activeCritText0, +.activeCritText1, +.activeCritText2, +.activeCritText3 { + fill: black !important; +} +.titleText { + text-anchor: middle; + font-size: 18px; + fill: black; +} +/* + + +*/ +g.classGroup text { + fill: #13540c; + stroke: none; + font-family: 'trebuchet ms', verdana, arial; + font-size: 14px; +} +g.classGroup rect { + fill: #cde498; + stroke: #13540c; +} +g.classGroup line { + stroke: #13540c; + stroke-width: 1; +} +svg .classLabel .box { + stroke: none; + stroke-width: 0; + fill: #cde498; + opacity: 0.5; +} +svg .classLabel .label { + fill: #13540c; +} +.relation { + stroke: #13540c; + stroke-width: 1; + fill: none; +} +.composition { + fill: #13540c; + stroke: #13540c; + stroke-width: 1; +} +#compositionStart { + fill: #13540c; + stroke: #13540c; + stroke-width: 1; +} +#compositionEnd { + fill: #13540c; + stroke: #13540c; + stroke-width: 1; +} +.aggregation { + fill: #cde498; + stroke: #13540c; + stroke-width: 1; +} +#aggregationStart { + fill: #cde498; + stroke: #13540c; + stroke-width: 1; +} +#aggregationEnd { + fill: #cde498; + stroke: #13540c; + stroke-width: 1; +} +#dependencyStart { + fill: #13540c; + stroke: #13540c; + stroke-width: 1; +} +#dependencyEnd { + fill: #13540c; + stroke: #13540c; + stroke-width: 1; +} +#extensionStart { + fill: #13540c; + stroke: #13540c; + stroke-width: 1; +} +#extensionEnd { + fill: #13540c; + stroke: #13540c; + stroke-width: 1; +} +.node text { + font-family: 'trebuchet ms', verdana, arial; + font-size: 14px; +} +div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial; + font-size: 12px; + background: #cdffb2; + border: 1px solid #6eaa49; + border-radius: 2px; + pointer-events: none; + z-index: 100; +} diff --git a/website/jekyll_site/_site/css/print/paper.css b/website/jekyll_site/_site/css/print/paper.css new file mode 100644 index 0000000..893184d --- /dev/null +++ b/website/jekyll_site/_site/css/print/paper.css @@ -0,0 +1,176 @@ +/* Default Print Stylesheet Template + by Rob Glazebrook of CSSnewbie.com + Last Updated: June 4, 2008 + + Feel free (nay, compelled) to edit, append, and + manipulate this file as you see fit. */ + + +/* SECTION 1: Set default width, margin, float, and + background. This prevents elements from extending + beyond the edge of the printed page, and prevents + unnecessary background images from printing */ +body { + background: #fff; + font-size: 13pt; + width: auto; + height: auto; + border: 0; + margin: 0 5%; + padding: 0; + float: none !important; + overflow: visible; +} +html { + background: #fff; + width: auto; + height: auto; + overflow: visible; +} + +/* SECTION 2: Remove any elements not needed in print. + This would include navigation, ads, sidebars, etc. */ +.nestedarrow, +.controls, +.reveal .progress, +.reveal.overview, +.fork-reveal, +.share-reveal, +.state-background { + display: none !important; +} + +/* SECTION 3: Set body font face, size, and color. + Consider using a serif font for readability. */ +body, p, td, li, div, a { + font-size: 16pt!important; + font-family: Georgia, "Times New Roman", Times, serif !important; + color: #000; +} + +/* SECTION 4: Set heading font face, sizes, and color. + Differentiate your headings from your body text. + Perhaps use a large sans-serif for distinction. */ +h1,h2,h3,h4,h5,h6 { + color: #000!important; + height: auto; + line-height: normal; + font-family: Georgia, "Times New Roman", Times, serif !important; + text-shadow: 0 0 0 #000 !important; + text-align: left; + letter-spacing: normal; +} +/* Need to reduce the size of the fonts for printing */ +h1 { font-size: 26pt !important; } +h2 { font-size: 22pt !important; } +h3 { font-size: 20pt !important; } +h4 { font-size: 20pt !important; font-variant: small-caps; } +h5 { font-size: 19pt !important; } +h6 { font-size: 18pt !important; font-style: italic; } + +/* SECTION 5: Make hyperlinks more usable. + Ensure links are underlined, and consider appending + the URL to the end of the link for usability. */ +a:link, +a:visited { + color: #000 !important; + font-weight: bold; + text-decoration: underline; +} +/* +.reveal a:link:after, +.reveal a:visited:after { + content: " (" attr(href) ") "; + color: #222 !important; + font-size: 90%; +} +*/ + + +/* SECTION 6: more reveal.js specific additions by @skypanther */ +ul, ol, div, p { + visibility: visible; + position: static; + width: auto; + height: auto; + display: block; + overflow: visible; + margin: auto; + text-align: left !important; +} +.reveal .slides { + position: static; + width: auto; + height: auto; + + left: auto; + top: auto; + margin-left: auto; + margin-top: auto; + padding: auto; + + overflow: visible; + display: block; + + text-align: center; + -webkit-perspective: none; + -moz-perspective: none; + -ms-perspective: none; + perspective: none; + + -webkit-perspective-origin: 50% 50%; /* there isn't a none/auto value but 50-50 is the default */ + -moz-perspective-origin: 50% 50%; + -ms-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; +} +.reveal .slides>section, +.reveal .slides>section>section { + + visibility: visible !important; + position: static !important; + width: 90% !important; + height: auto !important; + display: block !important; + overflow: visible !important; + + left: 0% !important; + top: 0% !important; + margin-left: 0px !important; + margin-top: 0px !important; + padding: 20px 0px !important; + + opacity: 1 !important; + + -webkit-transform-style: flat !important; + -moz-transform-style: flat !important; + -ms-transform-style: flat !important; + transform-style: flat !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; +} +.reveal section { + page-break-after: always !important; + display: block !important; +} +.reveal section .fragment { + opacity: 1 !important; + visibility: visible !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; +} +.reveal section:last-of-type { + page-break-after: avoid !important; +} +.reveal section img { + display: block; + margin: 15px 0px; + background: rgba(255,255,255,1); + border: 1px solid #666; + box-shadow: none; +} \ No newline at end of file diff --git a/website/jekyll_site/_site/css/print/pdf.css b/website/jekyll_site/_site/css/print/pdf.css new file mode 100644 index 0000000..41f70c6 --- /dev/null +++ b/website/jekyll_site/_site/css/print/pdf.css @@ -0,0 +1,190 @@ +/* Default Print Stylesheet Template + by Rob Glazebrook of CSSnewbie.com + Last Updated: June 4, 2008 + + Feel free (nay, compelled) to edit, append, and + manipulate this file as you see fit. */ + + +/* SECTION 1: Set default width, margin, float, and + background. This prevents elements from extending + beyond the edge of the printed page, and prevents + unnecessary background images from printing */ + +* { + -webkit-print-color-adjust: exact; +} + +body { + font-size: 18pt; + width: 297mm; + height: 229mm; + margin: 0 auto !important; + border: 0; + padding: 0; + float: none !important; + overflow: visible; +} + +html { + width: 100%; + height: 100%; + overflow: visible; +} + +@page { + size: letter landscape; + margin: 0; +} + +/* SECTION 2: Remove any elements not needed in print. + This would include navigation, ads, sidebars, etc. */ +.nestedarrow, +.controls, +.reveal .progress, +.reveal.overview, +.fork-reveal, +.share-reveal, +.state-background { + display: none !important; +} + +/* SECTION 3: Set body font face, size, and color. + Consider using a serif font for readability. */ +body, p, td, li, div { + font-size: 18pt; +} + +/* SECTION 4: Set heading font face, sizes, and color. + Differentiate your headings from your body text. + Perhaps use a large sans-serif for distinction. */ +h1,h2,h3,h4,h5,h6 { + text-shadow: 0 0 0 #000 !important; +} + +/* SECTION 5: Make hyperlinks more usable. + Ensure links are underlined, and consider appending + the URL to the end of the link for usability. */ +a:link, +a:visited { + font-weight: normal; + text-decoration: underline; +} + +.reveal pre code { + overflow: hidden !important; + font-family: monospace !important; +} + + +/* SECTION 6: more reveal.js specific additions by @skypanther */ +ul, ol, div, p { + visibility: visible; + position: static; + width: auto; + height: auto; + display: block; + overflow: visible; + margin: auto; +} +.reveal { + width: auto !important; + height: auto !important; + overflow: hidden !important; +} +.reveal .slides { + position: static; + width: 100%; + height: auto; + + left: auto; + top: auto; + margin: 0 !important; + padding: 0 !important; + + overflow: visible; + display: block; + + text-align: center; + + -webkit-perspective: none; + -moz-perspective: none; + -ms-perspective: none; + perspective: none; + + -webkit-perspective-origin: 50% 50%; /* there isn't a none/auto value but 50-50 is the default */ + -moz-perspective-origin: 50% 50%; + -ms-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; +} +.reveal .slides section { + + page-break-after: always !important; + + visibility: visible !important; + position: relative !important; + width: 100% !important; + height: 229mm !important; + min-height: 229mm !important; + display: block !important; + overflow: hidden !important; + + left: 0 !important; + top: 0 !important; + margin: 0 !important; + padding: 2cm 2cm 0 2cm !important; + box-sizing: border-box !important; + + opacity: 1 !important; + + -webkit-transform-style: flat !important; + -moz-transform-style: flat !important; + -ms-transform-style: flat !important; + transform-style: flat !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; +} +.reveal section.stack { + margin: 0 !important; + padding: 0 !important; + page-break-after: avoid !important; + height: auto !important; + min-height: auto !important; +} +.reveal .absolute-element { + margin-left: 2.2cm; + margin-top: 1.8cm; +} +.reveal section .fragment { + opacity: 1 !important; + visibility: visible !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; +} +.reveal section .slide-background { + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 0; +} +.reveal section>* { + position: relative; + z-index: 1; +} +.reveal img { + box-shadow: none; +} +.reveal .roll { + overflow: visible; + line-height: 1em; +} +.reveal small a { + font-size: 16pt !important; +} diff --git a/website/jekyll_site/_site/css/reveal.css b/website/jekyll_site/_site/css/reveal.css new file mode 100644 index 0000000..842f67c --- /dev/null +++ b/website/jekyll_site/_site/css/reveal.css @@ -0,0 +1,1880 @@ +@charset "UTF-8"; + +/*! + * reveal.js + * http://lab.hakim.se/reveal-js + * MIT licensed + * + * Copyright (C) 2014 Hakim El Hattab, http://hakim.se + */ + + +/********************************************* + * RESET STYLES + *********************************************/ + +html, body, .reveal div, .reveal span, .reveal applet, .reveal object, .reveal iframe, +.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6, .reveal p, .reveal blockquote, .reveal pre, +.reveal a, .reveal abbr, .reveal acronym, .reveal address, .reveal big, .reveal cite, .reveal code, +.reveal del, .reveal dfn, .reveal em, .reveal img, .reveal ins, .reveal kbd, .reveal q, .reveal s, .reveal samp, +.reveal small, .reveal strike, .reveal strong, .reveal sub, .reveal sup, .reveal tt, .reveal var, +.reveal b, .reveal u, .reveal i, .reveal center, +.reveal dl, .reveal dt, .reveal dd, .reveal ol, .reveal ul, .reveal li, +.reveal fieldset, .reveal form, .reveal label, .reveal legend, +.reveal table, .reveal caption, .reveal tbody, .reveal tfoot, .reveal thead, .reveal tr, .reveal th, .reveal td, +.reveal article, .reveal aside, .reveal canvas, .reveal details, .reveal embed, +.reveal figure, .reveal figcaption, .reveal footer, .reveal header, .reveal hgroup, +.reveal menu, .reveal nav, .reveal output, .reveal ruby, .reveal section, .reveal summary, +.reveal time, .reveal mark, .reveal audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +.reveal article, .reveal aside, .reveal details, .reveal figcaption, .reveal figure, +.reveal footer, .reveal header, .reveal hgroup, .reveal menu, .reveal nav, .reveal section { + display: block; +} + + +/********************************************* + * GLOBAL STYLES + *********************************************/ + +html, +body { + width: 100%; + height: 100%; + overflow: hidden; +} + +body { + position: relative; + line-height: 1; +} + +::selection { + background: #FF5E99; + color: #fff; + text-shadow: none; +} + + +/********************************************* + * HEADERS + *********************************************/ + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; + + word-wrap: break-word; + line-height: 1; +} + +.reveal h1 { font-size: 3.77em; } +.reveal h2 { font-size: 2.11em; } +.reveal h3 { font-size: 1.55em; } +.reveal h4 { font-size: 1em; } + + +/********************************************* + * VIEW FRAGMENTS + *********************************************/ + +.reveal .slides section .fragment { + opacity: 0; + + -webkit-transition: all .2s ease; + -moz-transition: all .2s ease; + -ms-transition: all .2s ease; + -o-transition: all .2s ease; + transition: all .2s ease; +} + .reveal .slides section .fragment.visible { + opacity: 1; + } + +.reveal .slides section .fragment.grow { + opacity: 1; +} + .reveal .slides section .fragment.grow.visible { + -webkit-transform: scale( 1.3 ); + -moz-transform: scale( 1.3 ); + -ms-transform: scale( 1.3 ); + -o-transform: scale( 1.3 ); + transform: scale( 1.3 ); + } + +.reveal .slides section .fragment.shrink { + opacity: 1; +} + .reveal .slides section .fragment.shrink.visible { + -webkit-transform: scale( 0.7 ); + -moz-transform: scale( 0.7 ); + -ms-transform: scale( 0.7 ); + -o-transform: scale( 0.7 ); + transform: scale( 0.7 ); + } + +.reveal .slides section .fragment.zoom-in { + opacity: 0; + + -webkit-transform: scale( 0.1 ); + -moz-transform: scale( 0.1 ); + -ms-transform: scale( 0.1 ); + -o-transform: scale( 0.1 ); + transform: scale( 0.1 ); +} + + .reveal .slides section .fragment.zoom-in.visible { + opacity: 1; + + -webkit-transform: scale( 1 ); + -moz-transform: scale( 1 ); + -ms-transform: scale( 1 ); + -o-transform: scale( 1 ); + transform: scale( 1 ); + } + +.reveal .slides section .fragment.roll-in { + opacity: 0; + + -webkit-transform: rotateX( 90deg ); + -moz-transform: rotateX( 90deg ); + -ms-transform: rotateX( 90deg ); + -o-transform: rotateX( 90deg ); + transform: rotateX( 90deg ); +} + .reveal .slides section .fragment.roll-in.visible { + opacity: 1; + + -webkit-transform: rotateX( 0 ); + -moz-transform: rotateX( 0 ); + -ms-transform: rotateX( 0 ); + -o-transform: rotateX( 0 ); + transform: rotateX( 0 ); + } + +.reveal .slides section .fragment.fade-out { + opacity: 1; +} + .reveal .slides section .fragment.fade-out.visible { + opacity: 0; + } + +.reveal .slides section .fragment.semi-fade-out { + opacity: 1; +} + .reveal .slides section .fragment.semi-fade-out.visible { + opacity: 0.5; + } + +.reveal .slides section .fragment.current-visible { + opacity:0; +} + +.reveal .slides section .fragment.current-visible.current-fragment { + opacity:1; +} + +.reveal .slides section .fragment.highlight-red, +.reveal .slides section .fragment.highlight-current-red, +.reveal .slides section .fragment.highlight-green, +.reveal .slides section .fragment.highlight-current-green, +.reveal .slides section .fragment.highlight-blue, +.reveal .slides section .fragment.highlight-current-blue { + opacity: 1; +} + .reveal .slides section .fragment.highlight-red.visible { + color: #ff2c2d + } + .reveal .slides section .fragment.highlight-green.visible { + color: #17ff2e; + } + .reveal .slides section .fragment.highlight-blue.visible { + color: #1b91ff; + } + +.reveal .slides section .fragment.highlight-current-red.current-fragment { + color: #ff2c2d +} +.reveal .slides section .fragment.highlight-current-green.current-fragment { + color: #17ff2e; +} +.reveal .slides section .fragment.highlight-current-blue.current-fragment { + color: #1b91ff; +} + + +/********************************************* + * DEFAULT ELEMENT STYLES + *********************************************/ + +/* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */ +.reveal:after { + content: ''; + font-style: italic; +} + +.reveal iframe { + z-index: 1; +} + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; +} + +/** Prevents layering issues in certain browser/transition combinations */ +.reveal a { + position: relative; +} + +.reveal strong, +.reveal b { + font-weight: bold; +} + +.reveal em, +.reveal i { + font-style: italic; +} + +.reveal ol, +.reveal ul { + display: inline-block; + + text-align: left; + margin: 0 0 0 1em; +} + +.reveal ol { + list-style-type: decimal; +} + +.reveal ul { + list-style-type: disc; +} + +.reveal ul ul { + list-style-type: square; +} + +.reveal ul ul ul { + list-style-type: circle; +} + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; +} + +.reveal p { + margin-bottom: 10px; + line-height: 1.2em; +} + +.reveal q, +.reveal blockquote { + quotes: none; +} + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 5px auto; + padding: 5px; + + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0,0,0,0.2); +} + .reveal blockquote p:first-child, + .reveal blockquote p:last-child { + display: inline-block; + } + +.reveal q { + font-style: italic; +} + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 15px auto; + + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + + word-wrap: break-word; + + box-shadow: 0px 0px 6px rgba(0,0,0,0.3); +} +.reveal code { + font-family: monospace; +} +.reveal pre code { + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; +} +.reveal pre.stretch code { + height: 100%; + max-height: 100%; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.reveal table th, +.reveal table td { + text-align: left; + padding-right: .3em; +} + +.reveal table th { + font-weight: bold; +} + +.reveal sup { + vertical-align: super; +} +.reveal sub { + vertical-align: sub; +} + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; +} + +.reveal small * { + vertical-align: top; +} + +.reveal .stretch { + max-width: none; + max-height: none; +} + + +/********************************************* + * CONTROLS + *********************************************/ + +.reveal .controls { + display: none; + position: fixed; + width: 110px; + height: 110px; + z-index: 30; + right: 10px; + bottom: 10px; +} + +.reveal .controls div { + position: absolute; + opacity: 0.05; + width: 0; + height: 0; + border: 12px solid transparent; + + -moz-transform: scale(.9999); + + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -ms-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + transition: all 0.2s ease; +} + +.reveal .controls div.enabled { + opacity: 0.7; + cursor: pointer; +} + +.reveal .controls div.enabled:active { + margin-top: 1px; +} + + .reveal .controls div.navigate-left { + top: 42px; + + border-right-width: 22px; + border-right-color: #eee; + } + .reveal .controls div.navigate-left.fragmented { + opacity: 0.3; + } + + .reveal .controls div.navigate-right { + left: 74px; + top: 42px; + + border-left-width: 22px; + border-left-color: #eee; + } + .reveal .controls div.navigate-right.fragmented { + opacity: 0.3; + } + + .reveal .controls div.navigate-up { + left: 42px; + + border-bottom-width: 22px; + border-bottom-color: #eee; + } + .reveal .controls div.navigate-up.fragmented { + opacity: 0.3; + } + + .reveal .controls div.navigate-down { + left: 42px; + top: 74px; + + border-top-width: 22px; + border-top-color: #eee; + } + .reveal .controls div.navigate-down.fragmented { + opacity: 0.3; + } + + +/********************************************* + * PROGRESS BAR + *********************************************/ + +.reveal .progress { + position: fixed; + display: none; + height: 3px; + width: 100%; + bottom: 0; + left: 0; + z-index: 10; +} + .reveal .progress:after { + content: ''; + display: 'block'; + position: absolute; + height: 20px; + width: 100%; + top: -20px; + } + .reveal .progress span { + display: block; + height: 100%; + width: 0px; + + -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + } + +/********************************************* + * SLIDE NUMBER + *********************************************/ + +.reveal .slide-number { + position: fixed; + display: block; + right: 15px; + bottom: 15px; + opacity: 0.5; + z-index: 31; + font-size: 12px; +} + +/********************************************* + * SLIDES + *********************************************/ + +.reveal { + position: relative; + width: 100%; + height: 100%; + + -ms-touch-action: none; +} + +.reveal .slides { + position: absolute; + width: 100%; + height: 100%; + left: 50%; + top: 50%; + + overflow: visible; + z-index: 1; + text-align: center; + + -webkit-transition: -webkit-perspective .4s ease; + -moz-transition: -moz-perspective .4s ease; + -ms-transition: -ms-perspective .4s ease; + -o-transition: -o-perspective .4s ease; + transition: perspective .4s ease; + + -webkit-perspective: 600px; + -moz-perspective: 600px; + -ms-perspective: 600px; + perspective: 600px; + + -webkit-perspective-origin: 0px -100px; + -moz-perspective-origin: 0px -100px; + -ms-perspective-origin: 0px -100px; + perspective-origin: 0px -100px; +} + +.reveal .slides>section { + -ms-perspective: 600px; +} + +.reveal .slides>section, +.reveal .slides>section>section { + display: none; + position: absolute; + width: 100%; + padding: 20px 0px; + + z-index: 10; + line-height: 1.2em; + font-weight: inherit; + + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + -ms-transform-style: preserve-3d; + transform-style: preserve-3d; + + -webkit-transition: -webkit-transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + -webkit-transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -moz-transition: -moz-transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + -moz-transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -ms-transition: -ms-transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + -ms-transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -o-transition: -o-transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + -o-transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); +} + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"] .slides section { + -webkit-transition-duration: 400ms; + -moz-transition-duration: 400ms; + -ms-transition-duration: 400ms; + transition-duration: 400ms; +} +.reveal[data-transition-speed="slow"] .slides section { + -webkit-transition-duration: 1200ms; + -moz-transition-duration: 1200ms; + -ms-transition-duration: 1200ms; + transition-duration: 1200ms; +} + +/* Slide-specific transition speed overrides */ +.reveal .slides section[data-transition-speed="fast"] { + -webkit-transition-duration: 400ms; + -moz-transition-duration: 400ms; + -ms-transition-duration: 400ms; + transition-duration: 400ms; +} +.reveal .slides section[data-transition-speed="slow"] { + -webkit-transition-duration: 1200ms; + -moz-transition-duration: 1200ms; + -ms-transition-duration: 1200ms; + transition-duration: 1200ms; +} + +.reveal .slides>section { + left: -50%; + top: -50%; +} + +.reveal .slides>section.stack { + padding-top: 0; + padding-bottom: 0; +} + +.reveal .slides>section.present, +.reveal .slides>section>section.present { + display: block; + z-index: 11; + opacity: 1; +} + +.reveal.center, +.reveal.center .slides, +.reveal.center .slides section { + min-height: auto !important; +} + +/* Don't allow interaction with invisible slides */ +.reveal .slides>section.future, +.reveal .slides>section>section.future, +.reveal .slides>section.past, +.reveal .slides>section>section.past { + pointer-events: none; +} + +.reveal.overview .slides>section, +.reveal.overview .slides>section>section { + pointer-events: auto; +} + + + +/********************************************* + * DEFAULT TRANSITION + *********************************************/ + +.reveal .slides>section[data-transition=default].past, +.reveal .slides>section.past { + display: block; + opacity: 0; + + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + -moz-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); +} +.reveal .slides>section[data-transition=default].future, +.reveal .slides>section.future { + display: block; + opacity: 0; + + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + -moz-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); +} + +.reveal .slides>section>section[data-transition=default].past, +.reveal .slides>section>section.past { + display: block; + opacity: 0; + + -webkit-transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + -moz-transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + -ms-transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); +} +.reveal .slides>section>section[data-transition=default].future, +.reveal .slides>section>section.future { + display: block; + opacity: 0; + + -webkit-transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + -moz-transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + -ms-transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); +} + + +/********************************************* + * CONCAVE TRANSITION + *********************************************/ + +.reveal .slides>section[data-transition=concave].past, +.reveal.concave .slides>section.past { + -webkit-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + -moz-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); +} +.reveal .slides>section[data-transition=concave].future, +.reveal.concave .slides>section.future { + -webkit-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + -moz-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); +} + +.reveal .slides>section>section[data-transition=concave].past, +.reveal.concave .slides>section>section.past { + -webkit-transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); + -moz-transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); + -ms-transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); + transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); +} +.reveal .slides>section>section[data-transition=concave].future, +.reveal.concave .slides>section>section.future { + -webkit-transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); + -moz-transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); + -ms-transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); + transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); +} + + +/********************************************* + * ZOOM TRANSITION + *********************************************/ + +.reveal .slides>section[data-transition=zoom], +.reveal.zoom .slides>section { + -webkit-transition-timing-function: ease; + -moz-transition-timing-function: ease; + -ms-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; +} + +.reveal .slides>section[data-transition=zoom].past, +.reveal.zoom .slides>section.past { + opacity: 0; + visibility: hidden; + + -webkit-transform: scale(16); + -moz-transform: scale(16); + -ms-transform: scale(16); + -o-transform: scale(16); + transform: scale(16); +} +.reveal .slides>section[data-transition=zoom].future, +.reveal.zoom .slides>section.future { + opacity: 0; + visibility: hidden; + + -webkit-transform: scale(0.2); + -moz-transform: scale(0.2); + -ms-transform: scale(0.2); + -o-transform: scale(0.2); + transform: scale(0.2); +} + +.reveal .slides>section>section[data-transition=zoom].past, +.reveal.zoom .slides>section>section.past { + -webkit-transform: translate(0, -150%); + -moz-transform: translate(0, -150%); + -ms-transform: translate(0, -150%); + -o-transform: translate(0, -150%); + transform: translate(0, -150%); +} +.reveal .slides>section>section[data-transition=zoom].future, +.reveal.zoom .slides>section>section.future { + -webkit-transform: translate(0, 150%); + -moz-transform: translate(0, 150%); + -ms-transform: translate(0, 150%); + -o-transform: translate(0, 150%); + transform: translate(0, 150%); +} + + +/********************************************* + * LINEAR TRANSITION + *********************************************/ + +.reveal.linear section { + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} + +.reveal .slides>section[data-transition=linear].past, +.reveal.linear .slides>section.past { + -webkit-transform: translate(-150%, 0); + -moz-transform: translate(-150%, 0); + -ms-transform: translate(-150%, 0); + -o-transform: translate(-150%, 0); + transform: translate(-150%, 0); +} +.reveal .slides>section[data-transition=linear].future, +.reveal.linear .slides>section.future { + -webkit-transform: translate(150%, 0); + -moz-transform: translate(150%, 0); + -ms-transform: translate(150%, 0); + -o-transform: translate(150%, 0); + transform: translate(150%, 0); +} + +.reveal .slides>section>section[data-transition=linear].past, +.reveal.linear .slides>section>section.past { + -webkit-transform: translate(0, -150%); + -moz-transform: translate(0, -150%); + -ms-transform: translate(0, -150%); + -o-transform: translate(0, -150%); + transform: translate(0, -150%); +} +.reveal .slides>section>section[data-transition=linear].future, +.reveal.linear .slides>section>section.future { + -webkit-transform: translate(0, 150%); + -moz-transform: translate(0, 150%); + -ms-transform: translate(0, 150%); + -o-transform: translate(0, 150%); + transform: translate(0, 150%); +} + + +/********************************************* + * CUBE TRANSITION + *********************************************/ + +.reveal.cube .slides { + -webkit-perspective: 1300px; + -moz-perspective: 1300px; + -ms-perspective: 1300px; + perspective: 1300px; +} + +.reveal.cube .slides section { + padding: 30px; + min-height: 700px; + + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + .reveal.center.cube .slides section { + min-height: auto; + } + .reveal.cube .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0,0,0,0.1); + border-radius: 4px; + + -webkit-transform: translateZ( -20px ); + -moz-transform: translateZ( -20px ); + -ms-transform: translateZ( -20px ); + -o-transform: translateZ( -20px ); + transform: translateZ( -20px ); + } + .reveal.cube .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0,0,0,0.2); + + -webkit-transform: translateZ(-90px) rotateX( 65deg ); + -moz-transform: translateZ(-90px) rotateX( 65deg ); + -ms-transform: translateZ(-90px) rotateX( 65deg ); + -o-transform: translateZ(-90px) rotateX( 65deg ); + transform: translateZ(-90px) rotateX( 65deg ); + } + +.reveal.cube .slides>section.stack { + padding: 0; + background: none; +} + +.reveal.cube .slides>section.past { + -webkit-transform-origin: 100% 0%; + -moz-transform-origin: 100% 0%; + -ms-transform-origin: 100% 0%; + transform-origin: 100% 0%; + + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg); + -moz-transform: translate3d(-100%, 0, 0) rotateY(-90deg); + -ms-transform: translate3d(-100%, 0, 0) rotateY(-90deg); + transform: translate3d(-100%, 0, 0) rotateY(-90deg); +} + +.reveal.cube .slides>section.future { + -webkit-transform-origin: 0% 0%; + -moz-transform-origin: 0% 0%; + -ms-transform-origin: 0% 0%; + transform-origin: 0% 0%; + + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg); + -moz-transform: translate3d(100%, 0, 0) rotateY(90deg); + -ms-transform: translate3d(100%, 0, 0) rotateY(90deg); + transform: translate3d(100%, 0, 0) rotateY(90deg); +} + +.reveal.cube .slides>section>section.past { + -webkit-transform-origin: 0% 100%; + -moz-transform-origin: 0% 100%; + -ms-transform-origin: 0% 100%; + transform-origin: 0% 100%; + + -webkit-transform: translate3d(0, -100%, 0) rotateX(90deg); + -moz-transform: translate3d(0, -100%, 0) rotateX(90deg); + -ms-transform: translate3d(0, -100%, 0) rotateX(90deg); + transform: translate3d(0, -100%, 0) rotateX(90deg); +} + +.reveal.cube .slides>section>section.future { + -webkit-transform-origin: 0% 0%; + -moz-transform-origin: 0% 0%; + -ms-transform-origin: 0% 0%; + transform-origin: 0% 0%; + + -webkit-transform: translate3d(0, 100%, 0) rotateX(-90deg); + -moz-transform: translate3d(0, 100%, 0) rotateX(-90deg); + -ms-transform: translate3d(0, 100%, 0) rotateX(-90deg); + transform: translate3d(0, 100%, 0) rotateX(-90deg); +} + + +/********************************************* + * PAGE TRANSITION + *********************************************/ + +.reveal.page .slides { + -webkit-perspective-origin: 0% 50%; + -moz-perspective-origin: 0% 50%; + -ms-perspective-origin: 0% 50%; + perspective-origin: 0% 50%; + + -webkit-perspective: 3000px; + -moz-perspective: 3000px; + -ms-perspective: 3000px; + perspective: 3000px; +} + +.reveal.page .slides section { + padding: 30px; + min-height: 700px; + + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + .reveal.page .slides section.past { + z-index: 12; + } + .reveal.page .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0,0,0,0.1); + + -webkit-transform: translateZ( -20px ); + -moz-transform: translateZ( -20px ); + -ms-transform: translateZ( -20px ); + -o-transform: translateZ( -20px ); + transform: translateZ( -20px ); + } + .reveal.page .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0,0,0,0.2); + + -webkit-transform: translateZ(-90px) rotateX( 65deg ); + } + +.reveal.page .slides>section.stack { + padding: 0; + background: none; +} + +.reveal.page .slides>section.past { + -webkit-transform-origin: 0% 0%; + -moz-transform-origin: 0% 0%; + -ms-transform-origin: 0% 0%; + transform-origin: 0% 0%; + + -webkit-transform: translate3d(-40%, 0, 0) rotateY(-80deg); + -moz-transform: translate3d(-40%, 0, 0) rotateY(-80deg); + -ms-transform: translate3d(-40%, 0, 0) rotateY(-80deg); + transform: translate3d(-40%, 0, 0) rotateY(-80deg); +} + +.reveal.page .slides>section.future { + -webkit-transform-origin: 100% 0%; + -moz-transform-origin: 100% 0%; + -ms-transform-origin: 100% 0%; + transform-origin: 100% 0%; + + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.reveal.page .slides>section>section.past { + -webkit-transform-origin: 0% 0%; + -moz-transform-origin: 0% 0%; + -ms-transform-origin: 0% 0%; + transform-origin: 0% 0%; + + -webkit-transform: translate3d(0, -40%, 0) rotateX(80deg); + -moz-transform: translate3d(0, -40%, 0) rotateX(80deg); + -ms-transform: translate3d(0, -40%, 0) rotateX(80deg); + transform: translate3d(0, -40%, 0) rotateX(80deg); +} + +.reveal.page .slides>section>section.future { + -webkit-transform-origin: 0% 100%; + -moz-transform-origin: 0% 100%; + -ms-transform-origin: 0% 100%; + transform-origin: 0% 100%; + + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + + +/********************************************* + * FADE TRANSITION + *********************************************/ + +.reveal .slides section[data-transition=fade], +.reveal.fade .slides section, +.reveal.fade .slides>section>section { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + -o-transform: none; + transform: none; + + -webkit-transition: opacity 0.5s; + -moz-transition: opacity 0.5s; + -ms-transition: opacity 0.5s; + -o-transition: opacity 0.5s; + transition: opacity 0.5s; +} + + +.reveal.fade.overview .slides section, +.reveal.fade.overview .slides>section>section, +.reveal.fade.overview-deactivating .slides section, +.reveal.fade.overview-deactivating .slides>section>section { + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} + + +/********************************************* + * NO TRANSITION + *********************************************/ + +.reveal .slides section[data-transition=none], +.reveal.none .slides section { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + -o-transform: none; + transform: none; + + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} + + +/********************************************* + * OVERVIEW + *********************************************/ + +.reveal.overview .slides { + -webkit-perspective-origin: 0% 0%; + -moz-perspective-origin: 0% 0%; + -ms-perspective-origin: 0% 0%; + perspective-origin: 0% 0%; + + -webkit-perspective: 700px; + -moz-perspective: 700px; + -ms-perspective: 700px; + perspective: 700px; +} + +.reveal.overview .slides section { + height: 600px; + top: -300px !important; + overflow: hidden; + opacity: 1 !important; + visibility: visible !important; + cursor: pointer; + background: rgba(0,0,0,0.1); +} +.reveal.overview .slides section .fragment { + opacity: 1; +} +.reveal.overview .slides section:after, +.reveal.overview .slides section:before { + display: none !important; +} +.reveal.overview .slides section>section { + opacity: 1; + cursor: pointer; +} + .reveal.overview .slides section:hover { + background: rgba(0,0,0,0.3); + } + .reveal.overview .slides section.present { + background: rgba(0,0,0,0.3); + } +.reveal.overview .slides>section.stack { + padding: 0; + top: 0 !important; + background: none; + overflow: visible; +} + + +/********************************************* + * PAUSED MODE + *********************************************/ + +.reveal .pause-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: black; + visibility: hidden; + opacity: 0; + z-index: 100; + + -webkit-transition: all 1s ease; + -moz-transition: all 1s ease; + -ms-transition: all 1s ease; + -o-transition: all 1s ease; + transition: all 1s ease; +} +.reveal.paused .pause-overlay { + visibility: visible; + opacity: 1; +} + + +/********************************************* + * FALLBACK + *********************************************/ + +.no-transforms { + overflow-y: auto; +} + +.no-transforms .reveal .slides { + position: relative; + width: 80%; + height: auto !important; + top: 0; + left: 50%; + margin: 0; + text-align: center; +} + +.no-transforms .reveal .controls, +.no-transforms .reveal .progress { + display: none !important; +} + +.no-transforms .reveal .slides section { + display: block !important; + opacity: 1 !important; + position: relative !important; + height: auto; + min-height: auto; + top: 0; + left: -50%; + margin: 70px 0; + + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + -o-transform: none; + transform: none; +} + +.no-transforms .reveal .slides section section { + left: 0; +} + +.reveal .no-transition, +.reveal .no-transition * { + -webkit-transition: none !important; + -moz-transition: none !important; + -ms-transition: none !important; + -o-transition: none !important; + transition: none !important; +} + + +/********************************************* + * BACKGROUND STATES [DEPRECATED] + *********************************************/ + +.reveal .state-background { + position: absolute; + width: 100%; + height: 100%; + background: rgba( 0, 0, 0, 0 ); + + -webkit-transition: background 800ms ease; + -moz-transition: background 800ms ease; + -ms-transition: background 800ms ease; + -o-transition: background 800ms ease; + transition: background 800ms ease; +} +.alert .reveal .state-background { + background: rgba( 200, 50, 30, 0.6 ); +} +.soothe .reveal .state-background { + background: rgba( 50, 200, 90, 0.4 ); +} +.blackout .reveal .state-background { + background: rgba( 0, 0, 0, 0.6 ); +} +.whiteout .reveal .state-background { + background: rgba( 255, 255, 255, 0.6 ); +} +.cobalt .reveal .state-background { + background: rgba( 22, 152, 213, 0.6 ); +} +.mint .reveal .state-background { + background: rgba( 22, 213, 75, 0.6 ); +} +.submerge .reveal .state-background { + background: rgba( 12, 25, 77, 0.6); +} +.lila .reveal .state-background { + background: rgba( 180, 50, 140, 0.6 ); +} +.sunset .reveal .state-background { + background: rgba( 255, 122, 0, 0.6 ); +} + + +/********************************************* + * PER-SLIDE BACKGROUNDS + *********************************************/ + +.reveal>.backgrounds { + position: absolute; + width: 100%; + height: 100%; + + -webkit-perspective: 600px; + -moz-perspective: 600px; + -ms-perspective: 600px; + perspective: 600px; +} + .reveal .slide-background { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + visibility: hidden; + + background-color: rgba( 0, 0, 0, 0 ); + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: cover; + + -webkit-transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -moz-transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -ms-transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -o-transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + } + .reveal .slide-background.present { + opacity: 1; + visibility: visible; + } + + .print-pdf .reveal .slide-background { + opacity: 1 !important; + visibility: visible !important; + } + +/* Immediate transition style */ +.reveal[data-background-transition=none]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=none] { + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} + +/* 2D slide */ +.reveal[data-background-transition=slide]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=slide] { + opacity: 1; + + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; +} + .reveal[data-background-transition=slide]>.backgrounds .slide-background.past, + .reveal>.backgrounds .slide-background.past[data-background-transition=slide] { + -webkit-transform: translate(-100%, 0); + -moz-transform: translate(-100%, 0); + -ms-transform: translate(-100%, 0); + -o-transform: translate(-100%, 0); + transform: translate(-100%, 0); + } + .reveal[data-background-transition=slide]>.backgrounds .slide-background.future, + .reveal>.backgrounds .slide-background.future[data-background-transition=slide] { + -webkit-transform: translate(100%, 0); + -moz-transform: translate(100%, 0); + -ms-transform: translate(100%, 0); + -o-transform: translate(100%, 0); + transform: translate(100%, 0); + } + + .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past, + .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide] { + -webkit-transform: translate(0, -100%); + -moz-transform: translate(0, -100%); + -ms-transform: translate(0, -100%); + -o-transform: translate(0, -100%); + transform: translate(0, -100%); + } + .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future, + .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide] { + -webkit-transform: translate(0, 100%); + -moz-transform: translate(0, 100%); + -ms-transform: translate(0, 100%); + -o-transform: translate(0, 100%); + transform: translate(0, 100%); + } + + +/* Convex */ +.reveal[data-background-transition=convex]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=convex] { + opacity: 0; + + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + -moz-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); +} +.reveal[data-background-transition=convex]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=convex] { + opacity: 0; + + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + -moz-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); +} + +.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex] { + opacity: 0; + + -webkit-transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); + -moz-transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); + -ms-transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); +} +.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex] { + opacity: 0; + + -webkit-transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); + -moz-transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); +} + + +/* Concave */ +.reveal[data-background-transition=concave]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=concave] { + opacity: 0; + + -webkit-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + -moz-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); +} +.reveal[data-background-transition=concave]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=concave] { + opacity: 0; + + -webkit-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + -moz-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); +} + +.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave] { + opacity: 0; + + -webkit-transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); + -moz-transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); + -ms-transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); +} +.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave] { + opacity: 0; + + -webkit-transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); + -moz-transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); +} + +/* Zoom */ +.reveal[data-background-transition=zoom]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=zoom] { + -webkit-transition-timing-function: ease; + -moz-transition-timing-function: ease; + -ms-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; +} + +.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + + -webkit-transform: scale(16); + -moz-transform: scale(16); + -ms-transform: scale(16); + -o-transform: scale(16); + transform: scale(16); +} +.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + + -webkit-transform: scale(0.2); + -moz-transform: scale(0.2); + -ms-transform: scale(0.2); + -o-transform: scale(0.2); + transform: scale(0.2); +} + +.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + + -webkit-transform: scale(16); + -moz-transform: scale(16); + -ms-transform: scale(16); + -o-transform: scale(16); + transform: scale(16); +} +.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + + -webkit-transform: scale(0.2); + -moz-transform: scale(0.2); + -ms-transform: scale(0.2); + -o-transform: scale(0.2); + transform: scale(0.2); +} + + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"]>.backgrounds .slide-background { + -webkit-transition-duration: 400ms; + -moz-transition-duration: 400ms; + -ms-transition-duration: 400ms; + transition-duration: 400ms; +} +.reveal[data-transition-speed="slow"]>.backgrounds .slide-background { + -webkit-transition-duration: 1200ms; + -moz-transition-duration: 1200ms; + -ms-transition-duration: 1200ms; + transition-duration: 1200ms; +} + + +/********************************************* + * RTL SUPPORT + *********************************************/ + +.reveal.rtl .slides, +.reveal.rtl .slides h1, +.reveal.rtl .slides h2, +.reveal.rtl .slides h3, +.reveal.rtl .slides h4, +.reveal.rtl .slides h5, +.reveal.rtl .slides h6 { + direction: rtl; + font-family: sans-serif; +} + +.reveal.rtl pre, +.reveal.rtl code { + direction: ltr; +} + +.reveal.rtl ol, +.reveal.rtl ul { + text-align: right; +} + +.reveal.rtl .progress span { + float: right +} + +/********************************************* + * PARALLAX BACKGROUND + *********************************************/ + +.reveal.has-parallax-background .backgrounds { + -webkit-transition: all 0.8s ease; + -moz-transition: all 0.8s ease; + -ms-transition: all 0.8s ease; + transition: all 0.8s ease; +} + +/* Global transition speed settings */ +.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds { + -webkit-transition-duration: 400ms; + -moz-transition-duration: 400ms; + -ms-transition-duration: 400ms; + transition-duration: 400ms; +} +.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds { + -webkit-transition-duration: 1200ms; + -moz-transition-duration: 1200ms; + -ms-transition-duration: 1200ms; + transition-duration: 1200ms; +} + + +/********************************************* + * LINK PREVIEW OVERLAY + *********************************************/ + + .reveal .preview-link-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000; + background: rgba( 0, 0, 0, 0.9 ); + opacity: 0; + visibility: hidden; + + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + transition: all 0.3s ease; + } + .reveal .preview-link-overlay.visible { + opacity: 1; + visibility: visible; + } + + .reveal .preview-link-overlay .spinner { + position: absolute; + display: block; + top: 50%; + left: 50%; + width: 32px; + height: 32px; + margin: -16px 0 0 -16px; + z-index: 10; + background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D); + + visibility: visible; + opacity: 0.6; + + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + transition: all 0.3s ease; + } + + .reveal .preview-link-overlay header { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 40px; + z-index: 2; + border-bottom: 1px solid #222; + } + .reveal .preview-link-overlay header a { + display: inline-block; + width: 40px; + height: 40px; + padding: 0 10px; + float: right; + opacity: 0.6; + + box-sizing: border-box; + } + .reveal .preview-link-overlay header a:hover { + opacity: 1; + } + .reveal .preview-link-overlay header a .icon { + display: inline-block; + width: 20px; + height: 20px; + + background-position: 50% 50%; + background-size: 100%; + background-repeat: no-repeat; + } + .reveal .preview-link-overlay header a.close .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC); + } + .reveal .preview-link-overlay header a.external .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==); + } + + .reveal .preview-link-overlay .viewport { + position: absolute; + top: 40px; + right: 0; + bottom: 0; + left: 0; + } + + .reveal .preview-link-overlay .viewport iframe { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + border: 0; + + opacity: 0; + visibility: hidden; + + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -ms-transition: all 0.3s ease; + transition: all 0.3s ease; + } + + .reveal .preview-link-overlay.loaded .viewport iframe { + opacity: 1; + visibility: visible; + } + + .reveal .preview-link-overlay.loaded .spinner { + opacity: 0; + visibility: hidden; + + -webkit-transform: scale(0.2); + -moz-transform: scale(0.2); + -ms-transform: scale(0.2); + transform: scale(0.2); + } + + + +/********************************************* + * PLAYBACK COMPONENT + *********************************************/ + +.reveal .playback { + position: fixed; + left: 15px; + bottom: 15px; + z-index: 30; + cursor: pointer; + + -webkit-transition: all 400ms ease; + -moz-transition: all 400ms ease; + -ms-transition: all 400ms ease; + transition: all 400ms ease; +} + +.reveal.overview .playback { + opacity: 0; + visibility: hidden; +} + + +/********************************************* + * ROLLING LINKS + *********************************************/ + +.reveal .roll { + display: inline-block; + line-height: 1.2; + overflow: hidden; + + vertical-align: top; + + -webkit-perspective: 400px; + -moz-perspective: 400px; + -ms-perspective: 400px; + perspective: 400px; + + -webkit-perspective-origin: 50% 50%; + -moz-perspective-origin: 50% 50%; + -ms-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; +} + .reveal .roll:hover { + background: none; + text-shadow: none; + } +.reveal .roll span { + display: block; + position: relative; + padding: 0 2px; + + pointer-events: none; + + -webkit-transition: all 400ms ease; + -moz-transition: all 400ms ease; + -ms-transition: all 400ms ease; + transition: all 400ms ease; + + -webkit-transform-origin: 50% 0%; + -moz-transform-origin: 50% 0%; + -ms-transform-origin: 50% 0%; + transform-origin: 50% 0%; + + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + -ms-transform-style: preserve-3d; + transform-style: preserve-3d; + + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; +} + .reveal .roll:hover span { + background: rgba(0,0,0,0.5); + + -webkit-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg ); + -moz-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg ); + -ms-transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg ); + transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg ); + } +.reveal .roll span:after { + content: attr(data-title); + + display: block; + position: absolute; + left: 0; + top: 0; + padding: 0 2px; + + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; + + -webkit-transform-origin: 50% 0%; + -moz-transform-origin: 50% 0%; + -ms-transform-origin: 50% 0%; + transform-origin: 50% 0%; + + -webkit-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg ); + -moz-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg ); + -ms-transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg ); + transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg ); +} + + +/********************************************* + * SPEAKER NOTES + *********************************************/ + +.reveal aside.notes { + display: none; +} + + +/********************************************* + * ZOOM PLUGIN + *********************************************/ + +.zoomed .reveal *, +.zoomed .reveal *:before, +.zoomed .reveal *:after { + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; + + -webkit-backface-visibility: visible !important; + -moz-backface-visibility: visible !important; + -ms-backface-visibility: visible !important; + backface-visibility: visible !important; +} + +.zoomed .reveal .progress, +.zoomed .reveal .controls { + opacity: 0; +} + +.zoomed .reveal .roll span { + background: none; +} + +.zoomed .reveal .roll span:after { + visibility: hidden; +} + + diff --git a/website/jekyll_site/_site/css/reveal.min.css b/website/jekyll_site/_site/css/reveal.min.css new file mode 100644 index 0000000..6808992 --- /dev/null +++ b/website/jekyll_site/_site/css/reveal.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * reveal.js + * http://lab.hakim.se/reveal-js + * MIT licensed + * + * Copyright (C) 2014 Hakim El Hattab, http://hakim.se + */ html,body,.reveal div,.reveal span,.reveal applet,.reveal object,.reveal iframe,.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6,.reveal p,.reveal blockquote,.reveal pre,.reveal a,.reveal abbr,.reveal acronym,.reveal address,.reveal big,.reveal cite,.reveal code,.reveal del,.reveal dfn,.reveal em,.reveal img,.reveal ins,.reveal kbd,.reveal q,.reveal s,.reveal samp,.reveal small,.reveal strike,.reveal strong,.reveal sub,.reveal sup,.reveal tt,.reveal var,.reveal b,.reveal u,.reveal i,.reveal center,.reveal dl,.reveal dt,.reveal dd,.reveal ol,.reveal ul,.reveal li,.reveal fieldset,.reveal form,.reveal label,.reveal legend,.reveal table,.reveal caption,.reveal tbody,.reveal tfoot,.reveal thead,.reveal tr,.reveal th,.reveal td,.reveal article,.reveal aside,.reveal canvas,.reveal details,.reveal embed,.reveal figure,.reveal figcaption,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal output,.reveal ruby,.reveal section,.reveal summary,.reveal time,.reveal mark,.reveal audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.reveal article,.reveal aside,.reveal details,.reveal figcaption,.reveal figure,.reveal footer,.reveal header,.reveal hgroup,.reveal menu,.reveal nav,.reveal section{display:block}html,body{width:100%;height:100%;overflow:hidden}body{position:relative;line-height:1}::selection{background:#FF5E99;color:#fff;text-shadow:none}.reveal h1,.reveal h2,.reveal h3,.reveal h4,.reveal h5,.reveal h6{-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto;word-wrap:break-word;line-height:1}.reveal h1{font-size:3.77em}.reveal h2{font-size:2.11em}.reveal h3{font-size:1.55em}.reveal h4{font-size:1em}.reveal .slides section .fragment{opacity:0;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.reveal .slides section .fragment.visible{opacity:1}.reveal .slides section .fragment.grow{opacity:1}.reveal .slides section .fragment.grow.visible{-webkit-transform:scale(1.3);-moz-transform:scale(1.3);-ms-transform:scale(1.3);-o-transform:scale(1.3);transform:scale(1.3)}.reveal .slides section .fragment.shrink{opacity:1}.reveal .slides section .fragment.shrink.visible{-webkit-transform:scale(0.7);-moz-transform:scale(0.7);-ms-transform:scale(0.7);-o-transform:scale(0.7);transform:scale(0.7)}.reveal .slides section .fragment.zoom-in{opacity:0;-webkit-transform:scale(0.1);-moz-transform:scale(0.1);-ms-transform:scale(0.1);-o-transform:scale(0.1);transform:scale(0.1)}.reveal .slides section .fragment.zoom-in.visible{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.reveal .slides section .fragment.roll-in{opacity:0;-webkit-transform:rotateX(90deg);-moz-transform:rotateX(90deg);-ms-transform:rotateX(90deg);-o-transform:rotateX(90deg);transform:rotateX(90deg)}.reveal .slides section .fragment.roll-in.visible{opacity:1;-webkit-transform:rotateX(0);-moz-transform:rotateX(0);-ms-transform:rotateX(0);-o-transform:rotateX(0);transform:rotateX(0)}.reveal .slides section .fragment.fade-out{opacity:1}.reveal .slides section .fragment.fade-out.visible{opacity:0}.reveal .slides section .fragment.semi-fade-out{opacity:1}.reveal .slides section .fragment.semi-fade-out.visible{opacity:.5}.reveal .slides section .fragment.current-visible{opacity:0}.reveal .slides section .fragment.current-visible.current-fragment{opacity:1}.reveal .slides section .fragment.highlight-red,.reveal .slides section .fragment.highlight-current-red,.reveal .slides section .fragment.highlight-green,.reveal .slides section .fragment.highlight-current-green,.reveal .slides section .fragment.highlight-blue,.reveal .slides section .fragment.highlight-current-blue{opacity:1}.reveal .slides section .fragment.highlight-red.visible{color:#ff2c2d}.reveal .slides section .fragment.highlight-green.visible{color:#17ff2e}.reveal .slides section .fragment.highlight-blue.visible{color:#1b91ff}.reveal .slides section .fragment.highlight-current-red.current-fragment{color:#ff2c2d}.reveal .slides section .fragment.highlight-current-green.current-fragment{color:#17ff2e}.reveal .slides section .fragment.highlight-current-blue.current-fragment{color:#1b91ff}.reveal:after{content:'';font-style:italic}.reveal iframe{z-index:1}.reveal img,.reveal video,.reveal iframe{max-width:95%;max-height:95%}.reveal a{position:relative}.reveal strong,.reveal b{font-weight:700}.reveal em,.reveal i{font-style:italic}.reveal ol,.reveal ul{display:inline-block;text-align:left;margin:0 0 0 1em}.reveal ol{list-style-type:decimal}.reveal ul{list-style-type:disc}.reveal ul ul{list-style-type:square}.reveal ul ul ul{list-style-type:circle}.reveal ul ul,.reveal ul ol,.reveal ol ol,.reveal ol ul{display:block;margin-left:40px}.reveal p{margin-bottom:10px;line-height:1.2em}.reveal q,.reveal blockquote{quotes:none}.reveal blockquote{display:block;position:relative;width:70%;margin:5px auto;padding:5px;font-style:italic;background:rgba(255,255,255,.05);box-shadow:0 0 2px rgba(0,0,0,.2)}.reveal blockquote p:first-child,.reveal blockquote p:last-child{display:inline-block}.reveal q{font-style:italic}.reveal pre{display:block;position:relative;width:90%;margin:15px auto;text-align:left;font-size:.55em;font-family:monospace;line-height:1.2em;word-wrap:break-word;box-shadow:0 0 6px rgba(0,0,0,.3)}.reveal code{font-family:monospace}.reveal pre code{padding:5px;overflow:auto;max-height:400px;word-wrap:normal}.reveal pre.stretch code{height:100%;max-height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal table th,.reveal table td{text-align:left;padding-right:.3em}.reveal table th{font-weight:700}.reveal sup{vertical-align:super}.reveal sub{vertical-align:sub}.reveal small{display:inline-block;font-size:.6em;line-height:1.2em;vertical-align:top}.reveal small *{vertical-align:top}.reveal .stretch{max-width:none;max-height:none}.reveal .controls{display:none;position:fixed;width:110px;height:110px;z-index:30;right:10px;bottom:10px}.reveal .controls div{position:absolute;opacity:.05;width:0;height:0;border:12px solid transparent;-moz-transform:scale(.9999);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.reveal .controls div.enabled{opacity:.7;cursor:pointer}.reveal .controls div.enabled:active{margin-top:1px}.reveal .controls div.navigate-left{top:42px;border-right-width:22px;border-right-color:#eee}.reveal .controls div.navigate-left.fragmented{opacity:.3}.reveal .controls div.navigate-right{left:74px;top:42px;border-left-width:22px;border-left-color:#eee}.reveal .controls div.navigate-right.fragmented{opacity:.3}.reveal .controls div.navigate-up{left:42px;border-bottom-width:22px;border-bottom-color:#eee}.reveal .controls div.navigate-up.fragmented{opacity:.3}.reveal .controls div.navigate-down{left:42px;top:74px;border-top-width:22px;border-top-color:#eee}.reveal .controls div.navigate-down.fragmented{opacity:.3}.reveal .progress{position:fixed;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10}.reveal .progress:after{content:'';display:'block';position:absolute;height:20px;width:100%;top:-20px}.reveal .progress span{display:block;height:100%;width:0;-webkit-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);-o-transition:width 800ms cubic-bezier(0.26,.86,.44,.985);transition:width 800ms cubic-bezier(0.26,.86,.44,.985)}.reveal .slide-number{position:fixed;display:block;right:15px;bottom:15px;opacity:.5;z-index:31;font-size:12px}.reveal{position:relative;width:100%;height:100%;-ms-touch-action:none}.reveal .slides{position:absolute;width:100%;height:100%;left:50%;top:50%;overflow:visible;z-index:1;text-align:center;-webkit-transition:-webkit-perspective .4s ease;-moz-transition:-moz-perspective .4s ease;-ms-transition:-ms-perspective .4s ease;-o-transition:-o-perspective .4s ease;transition:perspective .4s ease;-webkit-perspective:600px;-moz-perspective:600px;-ms-perspective:600px;perspective:600px;-webkit-perspective-origin:0 -100px;-moz-perspective-origin:0 -100px;-ms-perspective-origin:0 -100px;perspective-origin:0 -100px}.reveal .slides>section{-ms-perspective:600px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;padding:20px 0;z-index:10;line-height:1.2em;font-weight:inherit;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition:-webkit-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-webkit-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:-moz-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-moz-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:-ms-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-ms-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);-o-transition:-o-transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),-o-transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985);transition:transform-origin 800ms cubic-bezier(0.26,.86,.44,.985),transform 800ms cubic-bezier(0.26,.86,.44,.985),visibility 800ms cubic-bezier(0.26,.86,.44,.985),opacity 800ms cubic-bezier(0.26,.86,.44,.985)}.reveal[data-transition-speed=fast] .slides section{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal[data-transition-speed=slow] .slides section{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal .slides section[data-transition-speed=fast]{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal .slides section[data-transition-speed=slow]{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal .slides>section{left:-50%;top:-50%}.reveal .slides>section.stack{padding-top:0;padding-bottom:0}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:auto!important}.reveal .slides>section.future,.reveal .slides>section>section.future,.reveal .slides>section.past,.reveal .slides>section>section.past{pointer-events:none}.reveal.overview .slides>section,.reveal.overview .slides>section>section{pointer-events:auto}.reveal .slides>section[data-transition=default].past,.reveal .slides>section.past{display:block;opacity:0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=default].future,.reveal .slides>section.future{display:block;opacity:0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=default].past,.reveal .slides>section>section.past{display:block;opacity:0;-webkit-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-moz-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);-ms-transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0);transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=default].future,.reveal .slides>section>section.future{display:block;opacity:0;-webkit-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-moz-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);-ms-transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0);transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides>section[data-transition=concave].past,.reveal.concave .slides>section.past{-webkit-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=concave].future,.reveal.concave .slides>section.future{-webkit-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=concave].past,.reveal.concave .slides>section>section.past{-webkit-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-moz-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);-ms-transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0);transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal .slides>section>section[data-transition=concave].future,.reveal.concave .slides>section>section.future{-webkit-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-moz-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);-ms-transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0);transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal .slides>section[data-transition=zoom],.reveal.zoom .slides>section{-webkit-transition-timing-function:ease;-moz-transition-timing-function:ease;-ms-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.reveal .slides>section[data-transition=zoom].past,.reveal.zoom .slides>section.past{opacity:0;visibility:hidden;-webkit-transform:scale(16);-moz-transform:scale(16);-ms-transform:scale(16);-o-transform:scale(16);transform:scale(16)}.reveal .slides>section[data-transition=zoom].future,.reveal.zoom .slides>section.future{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);-o-transform:scale(0.2);transform:scale(0.2)}.reveal .slides>section>section[data-transition=zoom].past,.reveal.zoom .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal .slides>section>section[data-transition=zoom].future,.reveal.zoom .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.linear section{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.reveal .slides>section[data-transition=linear].past,.reveal.linear .slides>section.past{-webkit-transform:translate(-150%,0);-moz-transform:translate(-150%,0);-ms-transform:translate(-150%,0);-o-transform:translate(-150%,0);transform:translate(-150%,0)}.reveal .slides>section[data-transition=linear].future,.reveal.linear .slides>section.future{-webkit-transform:translate(150%,0);-moz-transform:translate(150%,0);-ms-transform:translate(150%,0);-o-transform:translate(150%,0);transform:translate(150%,0)}.reveal .slides>section>section[data-transition=linear].past,.reveal.linear .slides>section>section.past{-webkit-transform:translate(0,-150%);-moz-transform:translate(0,-150%);-ms-transform:translate(0,-150%);-o-transform:translate(0,-150%);transform:translate(0,-150%)}.reveal .slides>section>section[data-transition=linear].future,.reveal.linear .slides>section>section.future{-webkit-transform:translate(0,150%);-moz-transform:translate(0,150%);-ms-transform:translate(0,150%);-o-transform:translate(0,150%);transform:translate(0,150%)}.reveal.cube .slides{-webkit-perspective:1300px;-moz-perspective:1300px;-ms-perspective:1300px;perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:700px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.center.cube .slides section{min-height:auto}.reveal.cube .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);border-radius:4px;-webkit-transform:translateZ(-20px);-moz-transform:translateZ(-20px);-ms-transform:translateZ(-20px);-o-transform:translateZ(-20px);transform:translateZ(-20px)}.reveal.cube .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX(65deg);-moz-transform:translateZ(-90px) rotateX(65deg);-ms-transform:translateZ(-90px) rotateX(65deg);-o-transform:translateZ(-90px) rotateX(65deg);transform:translateZ(-90px) rotateX(65deg)}.reveal.cube .slides>section.stack{padding:0;background:0}.reveal.cube .slides>section.past{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg);transform:translate3d(-100%,0,0) rotateY(-90deg)}.reveal.cube .slides>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg);-moz-transform:translate3d(100%,0,0) rotateY(90deg);-ms-transform:translate3d(100%,0,0) rotateY(90deg);transform:translate3d(100%,0,0) rotateY(90deg)}.reveal.cube .slides>section>section.past{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,-100%,0) rotateX(90deg);-moz-transform:translate3d(0,-100%,0) rotateX(90deg);-ms-transform:translate3d(0,-100%,0) rotateX(90deg);transform:translate3d(0,-100%,0) rotateX(90deg)}.reveal.cube .slides>section>section.future{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,100%,0) rotateX(-90deg);-moz-transform:translate3d(0,100%,0) rotateX(-90deg);-ms-transform:translate3d(0,100%,0) rotateX(-90deg);transform:translate3d(0,100%,0) rotateX(-90deg)}.reveal.page .slides{-webkit-perspective-origin:0 50%;-moz-perspective-origin:0 50%;-ms-perspective-origin:0 50%;perspective-origin:0 50%;-webkit-perspective:3000px;-moz-perspective:3000px;-ms-perspective:3000px;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:700px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{content:'';position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:rgba(0,0,0,.1);-webkit-transform:translateZ(-20px);-moz-transform:translateZ(-20px);-ms-transform:translateZ(-20px);-o-transform:translateZ(-20px);transform:translateZ(-20px)}.reveal.page .slides section:not(.stack):after{content:'';position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:0;z-index:1;border-radius:4px;box-shadow:0 95px 25px rgba(0,0,0,.2);-webkit-transform:translateZ(-90px) rotateX(65deg)}.reveal.page .slides>section.stack{padding:0;background:0}.reveal.page .slides>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(-40%,0,0) rotateY(-80deg);-moz-transform:translate3d(-40%,0,0) rotateY(-80deg);-ms-transform:translate3d(-40%,0,0) rotateY(-80deg);transform:translate3d(-40%,0,0) rotateY(-80deg)}.reveal.page .slides>section.future{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal.page .slides>section>section.past{-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translate3d(0,-40%,0) rotateX(80deg);-moz-transform:translate3d(0,-40%,0) rotateX(80deg);-ms-transform:translate3d(0,-40%,0) rotateX(80deg);transform:translate3d(0,-40%,0) rotateX(80deg)}.reveal.page .slides>section>section.future{-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.reveal .slides section[data-transition=fade],.reveal.fade .slides section,.reveal.fade .slides>section>section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-ms-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section,.reveal.fade.overview-deactivating .slides section,.reveal.fade.overview-deactivating .slides>section>section{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section{-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none;-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal.overview .slides{-webkit-perspective-origin:0 0;-moz-perspective-origin:0 0;-ms-perspective-origin:0 0;perspective-origin:0 0;-webkit-perspective:700px;-moz-perspective:700px;-ms-perspective:700px;perspective:700px}.reveal.overview .slides section{height:600px;top:-300px!important;overflow:hidden;opacity:1!important;visibility:visible!important;cursor:pointer;background:rgba(0,0,0,.1)}.reveal.overview .slides section .fragment{opacity:1}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides section>section{opacity:1;cursor:pointer}.reveal.overview .slides section:hover{background:rgba(0,0,0,.3)}.reveal.overview .slides section.present{background:rgba(0,0,0,.3)}.reveal.overview .slides>section.stack{padding:0;top:0!important;background:0;overflow:visible}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;visibility:hidden;opacity:0;z-index:100;-webkit-transition:all 1s ease;-moz-transition:all 1s ease;-ms-transition:all 1s ease;-o-transition:all 1s ease;transition:all 1s ease}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.no-transforms{overflow-y:auto}.no-transforms .reveal .slides{position:relative;width:80%;height:auto!important;top:0;left:50%;margin:0;text-align:center}.no-transforms .reveal .controls,.no-transforms .reveal .progress{display:none!important}.no-transforms .reveal .slides section{display:block!important;opacity:1!important;position:relative!important;height:auto;min-height:auto;top:0;left:-50%;margin:70px 0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}.no-transforms .reveal .slides section section{left:0}.reveal .no-transition,.reveal .no-transition *{-webkit-transition:none!important;-moz-transition:none!important;-ms-transition:none!important;-o-transition:none!important;transition:none!important}.reveal .state-background{position:absolute;width:100%;height:100%;background:rgba(0,0,0,0);-webkit-transition:background 800ms ease;-moz-transition:background 800ms ease;-ms-transition:background 800ms ease;-o-transition:background 800ms ease;transition:background 800ms ease}.alert .reveal .state-background{background:rgba(200,50,30,.6)}.soothe .reveal .state-background{background:rgba(50,200,90,.4)}.blackout .reveal .state-background{background:rgba(0,0,0,.6)}.whiteout .reveal .state-background{background:rgba(255,255,255,.6)}.cobalt .reveal .state-background{background:rgba(22,152,213,.6)}.mint .reveal .state-background{background:rgba(22,213,75,.6)}.submerge .reveal .state-background{background:rgba(12,25,77,.6)}.lila .reveal .state-background{background:rgba(180,50,140,.6)}.sunset .reveal .state-background{background:rgba(255,122,0,.6)}.reveal>.backgrounds{position:absolute;width:100%;height:100%;-webkit-perspective:600px;-moz-perspective:600px;-ms-perspective:600px;perspective:600px}.reveal .slide-background{position:absolute;width:100%;height:100%;opacity:0;visibility:hidden;background-color:rgba(0,0,0,0);background-position:50% 50%;background-repeat:no-repeat;background-size:cover;-webkit-transition:all 800ms cubic-bezier(0.26,.86,.44,.985);-moz-transition:all 800ms cubic-bezier(0.26,.86,.44,.985);-ms-transition:all 800ms cubic-bezier(0.26,.86,.44,.985);-o-transition:all 800ms cubic-bezier(0.26,.86,.44,.985);transition:all 800ms cubic-bezier(0.26,.86,.44,.985)}.reveal .slide-background.present{opacity:1;visibility:visible}.print-pdf .reveal .slide-background{opacity:1!important;visibility:visible!important}.reveal[data-background-transition=none]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=none]{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.reveal[data-background-transition=slide]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=slide]{opacity:1;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.reveal[data-background-transition=slide]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=slide]{-webkit-transform:translate(-100%,0);-moz-transform:translate(-100%,0);-ms-transform:translate(-100%,0);-o-transform:translate(-100%,0);transform:translate(-100%,0)}.reveal[data-background-transition=slide]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=slide]{-webkit-transform:translate(100%,0);-moz-transform:translate(100%,0);-ms-transform:translate(100%,0);-o-transform:translate(100%,0);transform:translate(100%,0)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide]{-webkit-transform:translate(0,-100%);-moz-transform:translate(0,-100%);-ms-transform:translate(0,-100%);-o-transform:translate(0,-100%);transform:translate(0,-100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide]{-webkit-transform:translate(0,100%);-moz-transform:translate(0,100%);-ms-transform:translate(0,100%);-o-transform:translate(0,100%);transform:translate(0,100%)}.reveal[data-background-transition=convex]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=convex]{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=convex]{opacity:0;-webkit-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex]{opacity:0;-webkit-transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0);-moz-transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0);transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex]{opacity:0;-webkit-transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0);transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=concave]{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0);transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=concave]{opacity:0;-webkit-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0);transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave]{opacity:0;-webkit-transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0);-moz-transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0);transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave]{opacity:0;-webkit-transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0);transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background,.reveal>.backgrounds .slide-background[data-background-transition=zoom]{-webkit-transition-timing-function:ease;-moz-transition-timing-function:ease;-ms-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past,.reveal>.backgrounds .slide-background.past[data-background-transition=zoom]{opacity:0;visibility:hidden;-webkit-transform:scale(16);-moz-transform:scale(16);-ms-transform:scale(16);-o-transform:scale(16);transform:scale(16)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future,.reveal>.backgrounds .slide-background.future[data-background-transition=zoom]{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);-o-transform:scale(0.2);transform:scale(0.2)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past,.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom]{opacity:0;visibility:hidden;-webkit-transform:scale(16);-moz-transform:scale(16);-ms-transform:scale(16);-o-transform:scale(16);transform:scale(16)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future,.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom]{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);-o-transform:scale(0.2);transform:scale(0.2)}.reveal[data-transition-speed=fast]>.backgrounds .slide-background{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal[data-transition-speed=slow]>.backgrounds .slide-background{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl pre,.reveal.rtl code{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{float:right}.reveal.has-parallax-background .backgrounds{-webkit-transition:all .8s ease;-moz-transition:all .8s ease;-ms-transition:all .8s ease;transition:all .8s ease}.reveal.has-parallax-background[data-transition-speed=fast] .backgrounds{-webkit-transition-duration:400ms;-moz-transition-duration:400ms;-ms-transition-duration:400ms;transition-duration:400ms}.reveal.has-parallax-background[data-transition-speed=slow] .backgrounds{-webkit-transition-duration:1200ms;-moz-transition-duration:1200ms;-ms-transition-duration:1200ms;transition-duration:1200ms}.reveal .preview-link-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1000;background:rgba(0,0,0,.9);opacity:0;visibility:hidden;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay.visible{opacity:1;visibility:visible}.reveal .preview-link-overlay .spinner{position:absolute;display:block;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;z-index:10;background-image:url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);visibility:visible;opacity:.6;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay header{position:absolute;left:0;top:0;width:100%;height:40px;z-index:2;border-bottom:1px solid #222}.reveal .preview-link-overlay header a{display:inline-block;width:40px;height:40px;padding:0 10px;float:right;opacity:.6;box-sizing:border-box}.reveal .preview-link-overlay header a:hover{opacity:1}.reveal .preview-link-overlay header a .icon{display:inline-block;width:20px;height:20px;background-position:50% 50%;background-size:100%;background-repeat:no-repeat}.reveal .preview-link-overlay header a.close .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC)}.reveal .preview-link-overlay header a.external .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==)}.reveal .preview-link-overlay .viewport{position:absolute;top:40px;right:0;bottom:0;left:0}.reveal .preview-link-overlay .viewport iframe{width:100%;height:100%;max-width:100%;max-height:100%;border:0;opacity:0;visibility:hidden;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;transition:all .3s ease}.reveal .preview-link-overlay.loaded .viewport iframe{opacity:1;visibility:visible}.reveal .preview-link-overlay.loaded .spinner{opacity:0;visibility:hidden;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);transform:scale(0.2)}.reveal .playback{position:fixed;left:15px;bottom:15px;z-index:30;cursor:pointer;-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;-ms-transition:all 400ms ease;transition:all 400ms ease}.reveal.overview .playback{opacity:0;visibility:hidden}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;-webkit-perspective:400px;-moz-perspective:400px;-ms-perspective:400px;perspective:400px;-webkit-perspective-origin:50% 50%;-moz-perspective-origin:50% 50%;-ms-perspective-origin:50% 50%;perspective-origin:50% 50%}.reveal .roll:hover{background:0;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;-webkit-transition:all 400ms ease;-moz-transition:all 400ms ease;-ms-transition:all 400ms ease;transition:all 400ms ease;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.reveal .roll:hover span{background:rgba(0,0,0,.5);-webkit-transform:translate3d(0px,0,-45px) rotateX(90deg);-moz-transform:translate3d(0px,0,-45px) rotateX(90deg);-ms-transform:translate3d(0px,0,-45px) rotateX(90deg);transform:translate3d(0px,0,-45px) rotateX(90deg)}.reveal .roll span:after{content:attr(data-title);display:block;position:absolute;left:0;top:0;padding:0 2px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:translate3d(0px,110%,0) rotateX(-90deg);-moz-transform:translate3d(0px,110%,0) rotateX(-90deg);-ms-transform:translate3d(0px,110%,0) rotateX(-90deg);transform:translate3d(0px,110%,0) rotateX(-90deg)}.reveal aside.notes{display:none}.zoomed .reveal *,.zoomed .reveal :before,.zoomed .reveal :after{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;transform:none!important;-webkit-backface-visibility:visible!important;-moz-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}.zoomed .reveal .progress,.zoomed .reveal .controls{opacity:0}.zoomed .reveal .roll span{background:0}.zoomed .reveal .roll span:after{visibility:hidden} \ No newline at end of file diff --git a/website/jekyll_site/_site/css/styles-v2.css b/website/jekyll_site/_site/css/styles-v2.css new file mode 100644 index 0000000..2f27394 --- /dev/null +++ b/website/jekyll_site/_site/css/styles-v2.css @@ -0,0 +1,231 @@ +@font-face { + font-family: 'Proxima Nova Light'; + src: url('../fonts/ProximaNova-Light.eot'); + src: url('../fonts/ProximaNova-Light.eot?#iefix') format('embedded-opentype'), + url('../fonts/ProximaNova-Light.woff2') format('woff2'), + url('../fonts/ProximaNova-Light.woff') format('woff'), + url('../fonts/ProximaNova-Light.ttf') format('truetype'); + font-weight: 300; + font-style: normal; +} + +@font-face { + font-family: 'Proxima Nova Regular'; + src: url('../fonts/ProximaNova-Regular.eot'); + src: url('../fonts/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'), + url('../fonts/ProximaNova-Regular.woff2') format('woff2'), + url('../fonts/ProximaNova-Regular.woff') format('woff'), + url('../fonts/ProximaNova-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Proxima Nova Bold'; + src: url('../fonts/ProximaNova-Bold.eot'); + src: url('../fonts/ProximaNova-Bold.eot?#iefix') format('embedded-opentype'), + url('../fonts/ProximaNova-Bold.woff2') format('woff2'), + url('../fonts/ProximaNova-Bold.woff') format('woff'), + url('../fonts/ProximaNova-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +body { + font-family: 'Proxima Nova Regular', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +h1, h2, h5, h6, .intro-header .site-heading .subheading, .intro-header .page-heading .subheading { + font-family: 'Proxima Nova Light', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + color: #ffe0ab; + font-weight: normal; +} + +h4 { + font-family: 'Proxima Nova Regular', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: normal; +} + +h3 { + font-family: 'Proxima Nova Bold', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: normal; +} + +.navbar-custom .nav li a, .navbar-custom.is-fixed .nav li a { + font-family: 'Proxima Nova Regular', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + color: #ffe0ab; + font-size: 14px; +} + +.navbar-custom.is-fixed .nav li a:hover { + color: #fff; +} + +.navbar-custom.is-fixed { + top: 0; + position: fixed; +} + +.navbar-custom.is-fixed { + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + -o-transform: none; + transform: none; +} + +.github { + font-family: 'Proxima Nova Bold', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + color: #ffe0ab; +} + +.github-download, .github-download:hover, .github-download:focus, .github-download:active { + border: 2px solid #ffe0ab; + border-radius: 5px; + padding: 10px 30px; + text-transform: uppercase; + color: #ffe0ab; + margin-top: 30px; + display: inline-block; + margin-bottom: 5px; + font-family: 'Proxima Nova Bold', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: initial; +} + +.intro-header .site-heading .subheading, .intro-header .page-heading .subheading { + font-size: 26px; +} + +.bcm-hr { + border-top: 10px solid #ffe0ab; + padding: 0px; + margin: 0px; +} + +.home-background { + background: url(../img/background_gradient.png) no-repeat center center; + background-attachment: scroll; + background-size: cover; + color: #ffe0ab; +} + +.home-background ul { + padding-left: 15px; +} + +.home-background ul li { + font-size: 18px; +} + +.home-background h2 { + margin-bottom: 20px; +} + +.navbar-custom.is-fixed { + background-color: rgba(0, 0, 0, 1); + border-bottom: 1px solid #ffe0ab; + padding-bottom: 10px; +} + +.navbar-default { + padding-bottom: 10px; +} + +.navbar-default .navbar-collapse, .navbar-default .navbar-form { + border-color: #ffe0ab; +} + +.navbar-header img { + margin-left: 0; + margin-right: 0; +} + +@media only screen and (max-width: 767px) { + .navbar-custom { + position: fixed; + } + + .navbar-default { + border-color: #ffe0ab; + } + + .navbar-fixed-top { + background-color: rgba(0, 0, 0, 1); + padding-bottom: 0px; + } + + .navbar-fixed-top .navbar-header img { + margin-top: 0px !important; + } +} + +.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { + background-color: transparent; +} + +.container-custom { + padding: 50px 15px 100px 15px; +} + +.latest-from-blog h2 { + color: #000; +} + +.post-preview>.post-meta { + color: #000000; + font-style: normal; + font-family: 'Proxima Nova Bold', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +footer { + background-color: #000; + font-family: 'Proxima Nova Bold', 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +.copyright, .copyright a { + color: #ffe0ab; + text-decoration: none; +} + +.copyright a:hover { + color: #fff; +} + +footer .fa { + color: #bfbfbf; +} + +footer .fa-inverse { + color: #000; +} + +#content, #content h2, .recentpost, .recentpost h4, .recentpost h2 { + color: #000; +} + +.member-name { + color: #000; +} + +@media only screen and (min-width: 768px) { + .intro-header .post-heading h1 { + font-size: 40px; + } + + .intro-header .post-heading h2 { + font-size: 24px; + } +} + +/* @media only screen and (min-width: 1170px) */ +.navbar-custom { + position: fixed; + -webkit-transition: none; + -moz-transition: none; + transition: none; + -webkit-transform: none; + -moz-transform: none; + -ms-transform: none; + -o-transform: none; + transform: none; +} diff --git a/website/jekyll_site/_site/css/syntax.css b/website/jekyll_site/_site/css/syntax.css new file mode 100644 index 0000000..4919ebd --- /dev/null +++ b/website/jekyll_site/_site/css/syntax.css @@ -0,0 +1,84 @@ +/* to make lines scroll instead of wrap */ +/* from http://stackoverflow.com/a/23393920 */ + +.highlight pre code * { + white-space: nowrap; // this sets all children inside to nowrap +} + +.highlight pre { + overflow-x: auto; // this sets the scrolling in x +} + +.highlight pre code { + white-space: pre; // forces to respect
 formatting
+}
+
+
+/*
+ * GitHub style for Pygments syntax highlighter, for use with Jekyll
+ * Courtesy of GitHub.com
+ */
+
+.highlight pre, pre, .highlight .hll { background-color: #f8f8f8; border: 1px solid #ccc; padding: 6px 10px; border-radius: 3px; }
+.highlight .c { color: #999988; font-style: italic; }
+.highlight .err { color: #a61717; background-color: #e3d2d2; }
+.highlight .k { font-weight: bold; }
+.highlight .o { font-weight: bold; }
+.highlight .cm { color: #999988; font-style: italic; }
+.highlight .cp { color: #999999; font-weight: bold; }
+.highlight .c1 { color: #999988; font-style: italic; }
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic; }
+.highlight .gd { color: #000000; background-color: #ffdddd; }
+.highlight .gd .x { color: #000000; background-color: #ffaaaa; }
+.highlight .ge { font-style: italic; }
+.highlight .gr { color: #aa0000; }
+.highlight .gh { color: #999999; }
+.highlight .gi { color: #000000; background-color: #ddffdd; }
+.highlight .gi .x { color: #000000; background-color: #aaffaa; }
+.highlight .go { color: #888888; }
+.highlight .gp { color: #555555; }
+.highlight .gs { font-weight: bold; }
+.highlight .gu { color: #800080; font-weight: bold; }
+.highlight .gt { color: #aa0000; }
+.highlight .kc { font-weight: bold; }
+.highlight .kd { font-weight: bold; }
+.highlight .kn { font-weight: bold; }
+.highlight .kp { font-weight: bold; }
+.highlight .kr { font-weight: bold; }
+.highlight .kt { color: #445588; font-weight: bold; }
+.highlight .m { color: #009999; }
+.highlight .s { color: #dd1144; }
+.highlight .n { color: #333333; }
+.highlight .na { color: teal; }
+.highlight .nb { color: #0086b3; }
+.highlight .nc { color: #445588; font-weight: bold; }
+.highlight .no { color: teal; }
+.highlight .ni { color: purple; }
+.highlight .ne { color: #990000; font-weight: bold; }
+.highlight .nf { color: #990000; font-weight: bold; }
+.highlight .nn { color: #555555; }
+.highlight .nt { color: navy; }
+.highlight .nv { color: teal; }
+.highlight .ow { font-weight: bold; }
+.highlight .w { color: #bbbbbb; }
+.highlight .mf { color: #009999; }
+.highlight .mh { color: #009999; }
+.highlight .mi { color: #009999; }
+.highlight .mo { color: #009999; }
+.highlight .sb { color: #dd1144; }
+.highlight .sc { color: #dd1144; }
+.highlight .sd { color: #dd1144; }
+.highlight .s2 { color: #dd1144; }
+.highlight .se { color: #dd1144; }
+.highlight .sh { color: #dd1144; }
+.highlight .si { color: #dd1144; }
+.highlight .sx { color: #dd1144; }
+.highlight .sr { color: #009926; }
+.highlight .s1 { color: #dd1144; }
+.highlight .ss { color: #990073; }
+.highlight .bp { color: #999999; }
+.highlight .vc { color: teal; }
+.highlight .vg { color: teal; }
+.highlight .vi { color: teal; }
+.highlight .il { color: #009999; }
+.highlight .gc { color: #999; background-color: #EAF2F5; }
diff --git a/website/jekyll_site/_site/css/theme/beige.css b/website/jekyll_site/_site/css/theme/beige.css
new file mode 100644
index 0000000..089cb7b
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/beige.css
@@ -0,0 +1,148 @@
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * Beige theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+@font-face {
+  font-family: 'League Gothic';
+  src: url("../../lib/font/league_gothic-webfont.eot");
+  src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
+  font-weight: normal;
+  font-style: normal; }
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #f7f2d3;
+  background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+  background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3));
+  background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+  background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+  background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+  background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+  background-color: #f7f3de; }
+
+.reveal {
+  font-family: "Lato", sans-serif;
+  font-size: 36px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: #333333; }
+
+::selection {
+  color: white;
+  background: rgba(79, 64, 28, 0.99);
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #333333;
+  font-family: "League Gothic", Impact, sans-serif;
+  line-height: 0.9em;
+  letter-spacing: 0.02em;
+  text-transform: uppercase;
+  text-shadow: none; }
+
+.reveal h1 {
+  text-shadow: 0 1px 0 #cccccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbbbbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaaaaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #8b743d;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #c0a86e;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #564826; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid #333333;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: #8b743d;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #8b743d; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #8b743d; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #8b743d; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #8b743d; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #c0a86e; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #c0a86e; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #c0a86e; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #c0a86e; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: #8b743d;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #8b743d; }
diff --git a/website/jekyll_site/_site/css/theme/blood.css b/website/jekyll_site/_site/css/theme/blood.css
new file mode 100644
index 0000000..0aefdd9
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/blood.css
@@ -0,0 +1,175 @@
+@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
+/**
+ * Blood theme for reveal.js
+ * Author: Walther http://github.com/Walther
+ *
+ * Designed to be used with highlight.js theme
+ * "monokai_sublime.css" available from
+ * https://github.com/isagalaev/highlight.js/
+ *
+ * For other themes, change $codeBackground accordingly.
+ *
+ */
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #222222;
+  background: -moz-radial-gradient(center, circle cover, #626262 0%, #222222 100%);
+  background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #626262), color-stop(100%, #222222));
+  background: -webkit-radial-gradient(center, circle cover, #626262 0%, #222222 100%);
+  background: -o-radial-gradient(center, circle cover, #626262 0%, #222222 100%);
+  background: -ms-radial-gradient(center, circle cover, #626262 0%, #222222 100%);
+  background: radial-gradient(center, circle cover, #626262 0%, #222222 100%);
+  background-color: #2b2b2b; }
+
+.reveal {
+  font-family: Ubuntu, "sans-serif";
+  font-size: 36px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: #eeeeee; }
+
+::selection {
+  color: white;
+  background: #aa2233;
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #eeeeee;
+  font-family: Ubuntu, "sans-serif";
+  line-height: 0.9em;
+  letter-spacing: 0.02em;
+  text-transform: uppercase;
+  text-shadow: 2px 2px 2px #222222; }
+
+.reveal h1 {
+  text-shadow: 0 1px 0 #cccccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbbbbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaaaaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #aa2233;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #dd5566;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #6a1520; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid #eeeeee;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: #aa2233;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #aa2233; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #aa2233; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #aa2233; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #aa2233; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #dd5566; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #dd5566; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #dd5566; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #dd5566; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: #aa2233;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #aa2233; }
+
+.reveal p {
+  font-weight: 300;
+  text-shadow: 1px 1px #222222; }
+
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  font-weight: 700; }
+
+.reveal a:not(.image),
+.reveal a:not(.image):hover {
+  text-shadow: 2px 2px 2px #000; }
+
+.reveal small a:not(.image),
+.reveal small a:not(.image):hover {
+  text-shadow: 1px 1px 1px #000; }
+
+.reveal p code {
+  background-color: #23241f;
+  display: inline-block;
+  border-radius: 7px; }
+
+.reveal small code {
+  vertical-align: baseline; }
diff --git a/website/jekyll_site/_site/css/theme/default.css b/website/jekyll_site/_site/css/theme/default.css
new file mode 100644
index 0000000..a234861
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/default.css
@@ -0,0 +1,148 @@
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * Default theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+@font-face {
+  font-family: 'League Gothic';
+  src: url("../../lib/font/league_gothic-webfont.eot");
+  src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
+  font-weight: normal;
+  font-style: normal; }
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #1c1e20;
+  background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+  background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
+  background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+  background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+  background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+  background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+  background-color: #2b2b2b; }
+
+.reveal {
+  font-family: "Lato", sans-serif;
+  font-size: 36px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: #eeeeee; }
+
+::selection {
+  color: white;
+  background: #ff5e99;
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #eeeeee;
+  font-family: "League Gothic", Impact, sans-serif;
+  line-height: 0.9em;
+  letter-spacing: 0.02em;
+  text-transform: uppercase;
+  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+.reveal h1 {
+  text-shadow: 0 1px 0 #cccccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbbbbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaaaaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #13daec;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #71e9f4;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #0d99a5; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid #eeeeee;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: #13daec;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #13daec; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #13daec; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #13daec; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #13daec; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #71e9f4; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #71e9f4; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #71e9f4; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #71e9f4; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: #13daec;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #13daec; }
diff --git a/website/jekyll_site/_site/css/theme/moon.css b/website/jekyll_site/_site/css/theme/moon.css
new file mode 100644
index 0000000..3c15b00
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/moon.css
@@ -0,0 +1,148 @@
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * Solarized Dark theme for reveal.js.
+ * Author: Achim Staebler
+ */
+@font-face {
+  font-family: 'League Gothic';
+  src: url("../../lib/font/league_gothic-webfont.eot");
+  src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
+  font-weight: normal;
+  font-style: normal; }
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+  color-profile: sRGB;
+  rendering-intent: auto; }
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #002b36;
+  background-color: #002b36; }
+
+.reveal {
+  font-family: "Lato", sans-serif;
+  font-size: 36px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: #93a1a1; }
+
+::selection {
+  color: white;
+  background: #d33682;
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #eee8d5;
+  font-family: "League Gothic", Impact, sans-serif;
+  line-height: 0.9em;
+  letter-spacing: 0.02em;
+  text-transform: uppercase;
+  text-shadow: none; }
+
+.reveal h1 {
+  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #268bd2;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #78b9e6;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #1a6091; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid #93a1a1;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: #268bd2;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #268bd2; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #268bd2; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #268bd2; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #268bd2; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #78b9e6; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #78b9e6; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #78b9e6; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #78b9e6; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: #268bd2;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #268bd2; }
diff --git a/website/jekyll_site/_site/css/theme/night.css b/website/jekyll_site/_site/css/theme/night.css
new file mode 100644
index 0000000..e8703a5
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/night.css
@@ -0,0 +1,136 @@
+@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
+/**
+ * Black theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #111111;
+  background-color: #111111; }
+
+.reveal {
+  font-family: "Open Sans", sans-serif;
+  font-size: 30px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: #eeeeee; }
+
+::selection {
+  color: white;
+  background: #e7ad52;
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #eeeeee;
+  font-family: "Montserrat", Impact, sans-serif;
+  line-height: 0.9em;
+  letter-spacing: -0.03em;
+  text-transform: none;
+  text-shadow: none; }
+
+.reveal h1 {
+  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #e7ad52;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #f3d7ac;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #d08a1d; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid #eeeeee;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: #e7ad52;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #e7ad52; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #e7ad52; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #e7ad52; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #e7ad52; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #f3d7ac; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #f3d7ac; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #f3d7ac; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #f3d7ac; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: #e7ad52;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #e7ad52; }
diff --git a/website/jekyll_site/_site/css/theme/serif.css b/website/jekyll_site/_site/css/theme/serif.css
new file mode 100644
index 0000000..d5f0ad8
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/serif.css
@@ -0,0 +1,138 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is brown.
+ *
+ * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed.
+ */
+.reveal a:not(.image) {
+  line-height: 1.3em; }
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #f0f1eb;
+  background-color: #f0f1eb; }
+
+.reveal {
+  font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
+  font-size: 36px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: black; }
+
+::selection {
+  color: white;
+  background: #26351c;
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #383d3d;
+  font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif;
+  line-height: 0.9em;
+  letter-spacing: 0.02em;
+  text-transform: none;
+  text-shadow: none; }
+
+.reveal h1 {
+  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #51483d;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #8b7c69;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #25211c; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid black;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: #51483d;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #51483d; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #51483d; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #51483d; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #51483d; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #8b7c69; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #8b7c69; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #8b7c69; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #8b7c69; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: #51483d;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #51483d; }
diff --git a/website/jekyll_site/_site/css/theme/simple.css b/website/jekyll_site/_site/css/theme/simple.css
new file mode 100644
index 0000000..504606c
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/simple.css
@@ -0,0 +1,138 @@
+@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is darkblue.
+ *
+ * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
+ * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: white;
+  background-color: white; }
+
+.reveal {
+  font-family: "Lato", sans-serif;
+  font-size: 36px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: black; }
+
+::selection {
+  color: white;
+  background: rgba(0, 0, 0, 0.99);
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: black;
+  font-family: "News Cycle", Impact, sans-serif;
+  line-height: 0.9em;
+  letter-spacing: 0.02em;
+  text-transform: none;
+  text-shadow: none; }
+
+.reveal h1 {
+  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: darkblue;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #0000f1;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #00003f; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid black;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: darkblue;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: darkblue; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: darkblue; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: darkblue; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: darkblue; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #0000f1; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #0000f1; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #0000f1; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #0000f1; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: darkblue;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: darkblue; }
diff --git a/website/jekyll_site/_site/css/theme/sky.css b/website/jekyll_site/_site/css/theme/sky.css
new file mode 100644
index 0000000..1a44760
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/sky.css
@@ -0,0 +1,145 @@
+@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
+/**
+ * Sky theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+.reveal a:not(.image) {
+  line-height: 1.3em; }
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #add9e4;
+  background: -moz-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+  background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #f7fbfc), color-stop(100%, #add9e4));
+  background: -webkit-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+  background: -o-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+  background: -ms-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+  background: radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+  background-color: #f7fbfc; }
+
+.reveal {
+  font-family: "Open Sans", sans-serif;
+  font-size: 36px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: #333333; }
+
+::selection {
+  color: white;
+  background: #134674;
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #333333;
+  font-family: "Quicksand", sans-serif;
+  line-height: 0.9em;
+  letter-spacing: -0.08em;
+  text-transform: uppercase;
+  text-shadow: none; }
+
+.reveal h1 {
+  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #3b759e;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #74a7cb;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #264c66; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid #333333;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: #3b759e;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #3b759e; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #3b759e; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #3b759e; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #3b759e; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #74a7cb; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #74a7cb; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #74a7cb; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #74a7cb; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: #3b759e;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #3b759e; }
diff --git a/website/jekyll_site/_site/css/theme/solarized.css b/website/jekyll_site/_site/css/theme/solarized.css
new file mode 100644
index 0000000..c8bff7c
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/solarized.css
@@ -0,0 +1,148 @@
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * Solarized Light theme for reveal.js.
+ * Author: Achim Staebler
+ */
+@font-face {
+  font-family: 'League Gothic';
+  src: url("../../lib/font/league_gothic-webfont.eot");
+  src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg");
+  font-weight: normal;
+  font-style: normal; }
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+  color-profile: sRGB;
+  rendering-intent: auto; }
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background: #fdf6e3;
+  background-color: #fdf6e3; }
+
+.reveal {
+  font-family: "Lato", sans-serif;
+  font-size: 36px;
+  font-weight: normal;
+  letter-spacing: -0.02em;
+  color: #657b83; }
+
+::selection {
+  color: white;
+  background: #d33682;
+  text-shadow: none; }
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #586e75;
+  font-family: "League Gothic", Impact, sans-serif;
+  line-height: 0.9em;
+  letter-spacing: 0.02em;
+  text-transform: uppercase;
+  text-shadow: none; }
+
+.reveal h1 {
+  text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); }
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a:not(.image) {
+  color: #268bd2;
+  text-decoration: none;
+  -webkit-transition: color .15s ease;
+  -moz-transition: color .15s ease;
+  -ms-transition: color .15s ease;
+  -o-transition: color .15s ease;
+  transition: color .15s ease; }
+
+.reveal a:not(.image):hover {
+  color: #78b9e6;
+  text-shadow: none;
+  border: none; }
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #1a6091; }
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0px;
+  background: rgba(255, 255, 255, 0.12);
+  border: 4px solid #657b83;
+  box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+  -webkit-transition: all .2s linear;
+  -moz-transition: all .2s linear;
+  -ms-transition: all .2s linear;
+  -o-transition: all .2s linear;
+  transition: all .2s linear; }
+
+.reveal a:hover img {
+  background: rgba(255, 255, 255, 0.2);
+  border-color: #268bd2;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #268bd2; }
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #268bd2; }
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #268bd2; }
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #268bd2; }
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #78b9e6; }
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #78b9e6; }
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #78b9e6; }
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #78b9e6; }
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(0, 0, 0, 0.2); }
+
+.reveal .progress span {
+  background: #268bd2;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -ms-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #268bd2; }
diff --git a/website/jekyll_site/_site/css/theme/source/beige.scss b/website/jekyll_site/_site/css/theme/source/beige.scss
new file mode 100644
index 0000000..c31956c
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/beige.scss
@@ -0,0 +1,50 @@
+/**
+ * Beige theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@font-face {
+	font-family: 'League Gothic';
+	src: url('../../lib/font/league_gothic-webfont.eot');
+	src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('../../lib/font/league_gothic-webfont.woff') format('woff'),
+		 url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
+		 url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
+
+	font-weight: normal;
+	font-style: normal;
+}
+
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: #333;
+$headingColor: #333;
+$headingTextShadow: none;
+$backgroundColor: #f7f3de;
+$linkColor: #8b743d;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: rgba(79, 64, 28, 0.99);
+$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
+
+// Background generator
+@mixin bodyBackground() {
+	@include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) );
+}
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
\ No newline at end of file
diff --git a/website/jekyll_site/_site/css/theme/source/blood.scss b/website/jekyll_site/_site/css/theme/source/blood.scss
new file mode 100644
index 0000000..a9925a1
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/blood.scss
@@ -0,0 +1,91 @@
+/**
+ * Blood theme for reveal.js
+ * Author: Walther http://github.com/Walther
+ *
+ * Designed to be used with highlight.js theme
+ * "monokai_sublime.css" available from
+ * https://github.com/isagalaev/highlight.js/
+ *
+ * For other themes, change $codeBackground accordingly.
+ *
+ */
+
+ // Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+// Include theme-specific fonts
+
+@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
+
+// Colors used in the theme
+$blood: #a23;
+$coal: #222;
+$codeBackground: #23241f;
+
+// Main text
+$mainFont: Ubuntu, 'sans-serif';
+$mainFontSize: 36px;
+$mainColor: #eee;
+
+// Headings
+$headingFont: Ubuntu, 'sans-serif';
+$headingTextShadow: 2px 2px 2px $coal;
+
+// h1 shadow, borrowed humbly from 
+// (c) Default theme by Hakim El Hattab
+$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
+
+// Links
+$linkColor: $blood;
+$linkColorHover: lighten( $linkColor, 20% );
+
+// Text selection
+$selectionBackgroundColor: $blood;
+$selectionColor: #fff;
+
+// Background generator
+@mixin bodyBackground() {
+    @include radial-gradient( $coal, lighten( $coal, 25% ) );
+}
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
+
+// some overrides after theme template import
+
+.reveal p {
+    font-weight: 300;
+    text-shadow: 1px 1px $coal;
+}
+
+.reveal h1, 
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+    font-weight: 700;
+}
+
+.reveal a:not(.image),
+.reveal a:not(.image):hover {
+    text-shadow: 2px 2px 2px #000;
+}
+
+.reveal small a:not(.image),
+.reveal small a:not(.image):hover {
+    text-shadow: 1px 1px 1px #000;
+}
+
+.reveal p code {
+    background-color: $codeBackground;
+    display: inline-block;
+    border-radius: 7px;
+}
+
+.reveal small code {
+    vertical-align: baseline;
+}
\ No newline at end of file
diff --git a/website/jekyll_site/_site/css/theme/source/default.scss b/website/jekyll_site/_site/css/theme/source/default.scss
new file mode 100644
index 0000000..1117b65
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/default.scss
@@ -0,0 +1,42 @@
+/**
+ * Default theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@font-face {
+	font-family: 'League Gothic';
+	src: url('../../lib/font/league_gothic-webfont.eot');
+	src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('../../lib/font/league_gothic-webfont.woff') format('woff'),
+		 url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
+		 url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
+
+	font-weight: normal;
+	font-style: normal;
+}
+
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+// Override theme settings (see ../template/settings.scss)
+$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15);
+
+// Background generator
+@mixin bodyBackground() {
+	@include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) );
+}
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
\ No newline at end of file
diff --git a/website/jekyll_site/_site/css/theme/source/moon.scss b/website/jekyll_site/_site/css/theme/source/moon.scss
new file mode 100644
index 0000000..a722adc
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/moon.scss
@@ -0,0 +1,68 @@
+/**
+ * Solarized Dark theme for reveal.js.
+ * Author: Achim Staebler
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@font-face {
+	font-family: 'League Gothic';
+	src: url('../../lib/font/league_gothic-webfont.eot');
+	src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('../../lib/font/league_gothic-webfont.woff') format('woff'),
+		 url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
+		 url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
+
+	font-weight: normal;
+	font-style: normal;
+}
+
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+	color-profile: sRGB;
+	rendering-intent: auto;
+}
+
+// Solarized colors
+$base03:    #002b36;
+$base02:    #073642;
+$base01:    #586e75;
+$base00:    #657b83;
+$base0:     #839496;
+$base1:     #93a1a1;
+$base2:     #eee8d5;
+$base3:     #fdf6e3;
+$yellow:    #b58900;
+$orange:    #cb4b16;
+$red:       #dc322f;
+$magenta:   #d33682;
+$violet:    #6c71c4;
+$blue:      #268bd2;
+$cyan:      #2aa198;
+$green:     #859900;
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: $base1;
+$headingColor: $base2;
+$headingTextShadow: none;
+$backgroundColor: $base03;
+$linkColor: $blue;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: $magenta;
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/website/jekyll_site/_site/css/theme/source/night.scss b/website/jekyll_site/_site/css/theme/source/night.scss
new file mode 100644
index 0000000..b0cb57f
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/night.scss
@@ -0,0 +1,35 @@
+/**
+ * Black theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+// Include theme-specific fonts
+@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
+
+
+// Override theme settings (see ../template/settings.scss)
+$backgroundColor: #111;
+
+$mainFont: 'Open Sans', sans-serif;
+$linkColor: #e7ad52;
+$linkColorHover: lighten( $linkColor, 20% );
+$headingFont: 'Montserrat', Impact, sans-serif;
+$headingTextShadow: none;
+$headingLetterSpacing: -0.03em;
+$headingTextTransform: none;
+$selectionBackgroundColor: #e7ad52;
+$mainFontSize: 30px;
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
\ No newline at end of file
diff --git a/website/jekyll_site/_site/css/theme/source/serif.scss b/website/jekyll_site/_site/css/theme/source/serif.scss
new file mode 100644
index 0000000..404b8bf
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/serif.scss
@@ -0,0 +1,35 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is brown.
+ *
+ * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed.
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
+$mainColor: #000;
+$headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
+$headingColor: #383D3D;
+$headingTextShadow: none;
+$headingTextTransform: none;
+$backgroundColor: #F0F1EB;
+$linkColor: #51483D;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: #26351C;
+
+.reveal a:not(.image) {
+  line-height: 1.3em;
+}
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/website/jekyll_site/_site/css/theme/source/simple.scss b/website/jekyll_site/_site/css/theme/source/simple.scss
new file mode 100644
index 0000000..84c7d9b
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/simple.scss
@@ -0,0 +1,38 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is darkblue.
+ *
+ * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
+ * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Lato', sans-serif;
+$mainColor: #000;
+$headingFont: 'News Cycle', Impact, sans-serif;
+$headingColor: #000;
+$headingTextShadow: none;
+$headingTextTransform: none;
+$backgroundColor: #fff;
+$linkColor: #00008B;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: rgba(0, 0, 0, 0.99);
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
\ No newline at end of file
diff --git a/website/jekyll_site/_site/css/theme/source/sky.scss b/website/jekyll_site/_site/css/theme/source/sky.scss
new file mode 100644
index 0000000..72a3a90
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/sky.scss
@@ -0,0 +1,46 @@
+/**
+ * Sky theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
+
+
+// Override theme settings (see ../template/settings.scss)
+$mainFont: 'Open Sans', sans-serif;
+$mainColor: #333;
+$headingFont: 'Quicksand', sans-serif;
+$headingColor: #333;
+$headingLetterSpacing: -0.08em;
+$headingTextShadow: none;
+$backgroundColor: #f7fbfc;
+$linkColor: #3b759e;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: #134674;
+
+// Fix links so they are not cut off
+.reveal a:not(.image) {
+	line-height: 1.3em;
+}
+
+// Background generator
+@mixin bodyBackground() {
+	@include radial-gradient( #add9e4, #f7fbfc );
+}
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/website/jekyll_site/_site/css/theme/source/solarized.scss b/website/jekyll_site/_site/css/theme/source/solarized.scss
new file mode 100644
index 0000000..8217b8f
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/source/solarized.scss
@@ -0,0 +1,74 @@
+/**
+ * Solarized Light theme for reveal.js.
+ * Author: Achim Staebler
+ */
+
+
+// Default mixins and settings -----------------
+@import "../template/mixins";
+@import "../template/settings";
+// ---------------------------------------------
+
+
+
+// Include theme-specific fonts
+@font-face {
+	font-family: 'League Gothic';
+	src: url('../../lib/font/league_gothic-webfont.eot');
+	src: url('../../lib/font/league_gothic-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('../../lib/font/league_gothic-webfont.woff') format('woff'),
+		 url('../../lib/font/league_gothic-webfont.ttf') format('truetype'),
+		 url('../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular') format('svg');
+
+	font-weight: normal;
+	font-style: normal;
+}
+
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+
+
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+	color-profile: sRGB;
+	rendering-intent: auto;
+}
+
+// Solarized colors
+$base03:    #002b36;
+$base02:    #073642;
+$base01:    #586e75;
+$base00:    #657b83;
+$base0:     #839496;
+$base1:     #93a1a1;
+$base2:     #eee8d5;
+$base3:     #fdf6e3;
+$yellow:    #b58900;
+$orange:    #cb4b16;
+$red:       #dc322f;
+$magenta:   #d33682;
+$violet:    #6c71c4;
+$blue:      #268bd2;
+$cyan:      #2aa198;
+$green:     #859900;
+
+// Override theme settings (see ../template/settings.scss)
+$mainColor: $base00;
+$headingColor: $base01;
+$headingTextShadow: none;
+$backgroundColor: $base3;
+$linkColor: $blue;
+$linkColorHover: lighten( $linkColor, 20% );
+$selectionBackgroundColor: $magenta;
+
+// Background generator
+// @mixin bodyBackground() {
+// 	@include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) );
+// }
+
+
+
+// Theme template ------------------------------
+@import "../template/theme";
+// ---------------------------------------------
diff --git a/website/jekyll_site/_site/css/theme/template/mixins.scss b/website/jekyll_site/_site/css/theme/template/mixins.scss
new file mode 100644
index 0000000..e0c5606
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/template/mixins.scss
@@ -0,0 +1,29 @@
+@mixin vertical-gradient( $top, $bottom ) {
+	background: $top;
+	background: -moz-linear-gradient( top, $top 0%, $bottom 100% );
+	background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) );
+	background: -webkit-linear-gradient( top, $top 0%, $bottom 100% );
+	background: -o-linear-gradient( top, $top 0%, $bottom 100% );
+	background: -ms-linear-gradient( top, $top 0%, $bottom 100% );
+	background: linear-gradient( top, $top 0%, $bottom 100% );
+}
+
+@mixin horizontal-gradient( $top, $bottom ) {
+	background: $top;
+	background: -moz-linear-gradient( left, $top 0%, $bottom 100% );
+	background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) );
+	background: -webkit-linear-gradient( left, $top 0%, $bottom 100% );
+	background: -o-linear-gradient( left, $top 0%, $bottom 100% );
+	background: -ms-linear-gradient( left, $top 0%, $bottom 100% );
+	background: linear-gradient( left, $top 0%, $bottom 100% );
+}
+
+@mixin radial-gradient( $outer, $inner, $type: circle ) {
+	background: $outer;
+	background: -moz-radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+	background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) );
+	background: -webkit-radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+	background: -o-radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+	background: -ms-radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+	background: radial-gradient( center, $type cover,  $inner 0%, $outer 100% );
+}
\ No newline at end of file
diff --git a/website/jekyll_site/_site/css/theme/template/settings.scss b/website/jekyll_site/_site/css/theme/template/settings.scss
new file mode 100644
index 0000000..739a609
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/template/settings.scss
@@ -0,0 +1,34 @@
+// Base settings for all themes that can optionally be
+// overridden by the super-theme
+
+// Background of the presentation
+$backgroundColor: #2b2b2b;
+
+// Primary/body text
+$mainFont: 'Lato', sans-serif;
+$mainFontSize: 36px;
+$mainColor: #eee;
+
+// Headings
+$headingMargin: 0 0 20px 0;
+$headingFont: 'League Gothic', Impact, sans-serif;
+$headingColor: #eee;
+$headingLineHeight: 0.9em;
+$headingLetterSpacing: 0.02em;
+$headingTextTransform: uppercase;
+$headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2);
+$heading1TextShadow: $headingTextShadow;
+
+// Links and actions
+$linkColor: #13DAEC;
+$linkColorHover: lighten( $linkColor, 20% );
+
+// Text selection
+$selectionBackgroundColor: #FF5E99;
+$selectionColor: #fff;
+
+// Generates the presentation background, can be overridden
+// to return a background image or gradient
+@mixin bodyBackground() {
+	background: $backgroundColor;
+}
\ No newline at end of file
diff --git a/website/jekyll_site/_site/css/theme/template/theme.scss b/website/jekyll_site/_site/css/theme/template/theme.scss
new file mode 100644
index 0000000..1562b54
--- /dev/null
+++ b/website/jekyll_site/_site/css/theme/template/theme.scss
@@ -0,0 +1,170 @@
+// Base theme template for reveal.js
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+
+body {
+	@include bodyBackground();
+	background-color: $backgroundColor;
+}
+
+.reveal {
+	font-family: $mainFont;
+	font-size: $mainFontSize;
+	font-weight: normal;
+	letter-spacing: -0.02em;
+	color: $mainColor;
+}
+
+::selection {
+	color: $selectionColor;
+	background: $selectionBackgroundColor;
+	text-shadow: none;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+	margin: $headingMargin;
+	color: $headingColor;
+
+	font-family: $headingFont;
+	line-height: $headingLineHeight;
+	letter-spacing: $headingLetterSpacing;
+
+	text-transform: $headingTextTransform;
+	text-shadow: $headingTextShadow;
+}
+
+.reveal h1 {
+	text-shadow: $heading1TextShadow;
+}
+
+
+/*********************************************
+ * LINKS
+ *********************************************/
+
+.reveal a:not(.image) {
+	color: $linkColor;
+	text-decoration: none;
+
+	-webkit-transition: color .15s ease;
+	   -moz-transition: color .15s ease;
+	    -ms-transition: color .15s ease;
+	     -o-transition: color .15s ease;
+	        transition: color .15s ease;
+}
+	.reveal a:not(.image):hover {
+		color: $linkColorHover;
+
+		text-shadow: none;
+		border: none;
+	}
+
+.reveal .roll span:after {
+	color: #fff;
+	background: darken( $linkColor, 15% );
+}
+
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+
+.reveal section img {
+	margin: 15px 0px;
+	background: rgba(255,255,255,0.12);
+	border: 4px solid $mainColor;
+
+	box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+
+	-webkit-transition: all .2s linear;
+	   -moz-transition: all .2s linear;
+	    -ms-transition: all .2s linear;
+	     -o-transition: all .2s linear;
+	        transition: all .2s linear;
+}
+
+	.reveal a:hover img {
+		background: rgba(255,255,255,0.2);
+		border-color: $linkColor;
+
+		box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+	}
+
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+	border-right-color: $linkColor;
+}
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+	border-left-color: $linkColor;
+}
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+	border-bottom-color: $linkColor;
+}
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+	border-top-color: $linkColor;
+}
+
+.reveal .controls div.navigate-left.enabled:hover {
+	border-right-color: $linkColorHover;
+}
+
+.reveal .controls div.navigate-right.enabled:hover {
+	border-left-color: $linkColorHover;
+}
+
+.reveal .controls div.navigate-up.enabled:hover {
+	border-bottom-color: $linkColorHover;
+}
+
+.reveal .controls div.navigate-down.enabled:hover {
+	border-top-color: $linkColorHover;
+}
+
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+
+.reveal .progress {
+	background: rgba(0,0,0,0.2);
+}
+	.reveal .progress span {
+		background: $linkColor;
+
+		-webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+		   -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+		    -ms-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+		     -o-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+		        transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
+	}
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: $linkColor;
+}
+
+
diff --git a/website/jekyll_site/_site/docs/bcm_basics/index.html b/website/jekyll_site/_site/docs/bcm_basics/index.html
new file mode 100644
index 0000000..b1c7da9
--- /dev/null
+++ b/website/jekyll_site/_site/docs/bcm_basics/index.html
@@ -0,0 +1,199 @@
+
+
+
+
+
+	
+	
+	
+	
+	
+
+
+
+
+
+	
+
+	
+
+	bcm info - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center
+
+	
+
+	
+	
+
+	
+	
+
+	
+	
+
+	
+	
+
+	
+	
+	
+
+	
+
+	
+	
+	
+	
+	
+	
+	
+
+	
+
+	
+	
+
+	
+	
+
+	
+	
+
+	
+
+
+
+
+
+
+    
+
+
+
+    
+
+
+
+
+
+ +

bcm info

+ + bcm info + +
+
+
+
+
+
+ + + +
+
+
+

1.3.1 client_version

+ +

1.3.2 runtime_dir

+ +

1.3.3 cert_dir

+ +

1.3.3.1 default_key_id

+ +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/docs/bcm_on_zeronet/index.html b/website/jekyll_site/_site/docs/bcm_on_zeronet/index.html new file mode 100644 index 0000000..8bb102f --- /dev/null +++ b/website/jekyll_site/_site/docs/bcm_on_zeronet/index.html @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + BCM is developed using Zeronet.io - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +

BCM is developed using Zeronet.io

+ + How does hosting the BCM website and source code on Zeronet solves many problems + +
+
+
+
+
+
+ + + +
+
+
+ + +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/docs/index.html b/website/jekyll_site/_site/docs/index.html new file mode 100644 index 0000000..916a962 --- /dev/null +++ b/website/jekyll_site/_site/docs/index.html @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + Docs - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +

Docs

+ + BCM Documentation + +
+
+
+
+
+
+ + + +
+
+
+ 1. Getting Started +1.1 Clone BCM repo (source code) to your SDN Controller. +1.2 Updatating BCM source on your SDN Controller. +#1.3 ['bcm info'](./1-3-bcm-info.md) + +2.0 Concept of Operations +2.1 +3.0 Technical Architecture + +4.0 Backup and Restoration + +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/download/download/index.html b/website/jekyll_site/_site/download/download/index.html new file mode 100644 index 0000000..7640784 --- /dev/null +++ b/website/jekyll_site/_site/download/download/index.html @@ -0,0 +1,2 @@ +

1.3.1 client_version

+ diff --git a/website/jekyll_site/_site/download/index.html b/website/jekyll_site/_site/download/index.html new file mode 100644 index 0000000..5f391a1 --- /dev/null +++ b/website/jekyll_site/_site/download/index.html @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + BCM Releases - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +

BCM Releases

+ + Release Notes and zipped git archives available for download. + +
+
+
+
+
+
+ + + +
+
+
+ Assumption: you're already running zeronet locally and thus receiving automatic updates that are digitally signed by the +publisher of the bcm zeronet page. As always, YOU ARE RESPONSIBLE FOR REVIEWING THE CODE YOU RUN ON YOUR COMPUTER. + +BCM_GIT_DIR is available as a published ZIP file with the following naming convention 'bcm_YEAR_MONTH_DAY.tar.gz'. +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/download/release_notes/index.html b/website/jekyll_site/_site/download/release_notes/index.html new file mode 100644 index 0000000..3982bbc --- /dev/null +++ b/website/jekyll_site/_site/download/release_notes/index.html @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + BCM is developed using Zeronet.io - Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +

BCM is developed using Zeronet.io

+ + How does hosting the BCM website and source code on Zeronet solves many problems + +
+
+
+
+
+
+ + + +
+
+
+ + +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/feed.xml b/website/jekyll_site/_site/feed.xml new file mode 100644 index 0000000..bd99da6 --- /dev/null +++ b/website/jekyll_site/_site/feed.xml @@ -0,0 +1,171 @@ + + + + Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + Privacy-preserving Bitcoin Payment infrastructure for home and office. + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch// + + Fri, 27 Mar 2020 16:02:28 -0500 + Fri, 27 Mar 2020 16:02:28 -0500 + Jekyll v3.7.4 + + + Using BCM to deploy fully-integrated Bitcoin-related software + + + Sat, 20 Jul 2019 17:00:00 -0500 + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2019/07/20/deploy-your-bitcoin-stacks/ + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2019/07/20/deploy-your-bitcoin-stacks/ + + documentation + + learning + + slides + + + + + + Use BCM with your Trezor + How BCM uses your Trezor + +Most cryptographic operations in BCM use Trezor-backed GPG certificates. We recommend you buy a dedicated Trezor-T device for your BCM activities. + +Use ‘bcm init’ to create new GPG certificates and Password Store + +When you first start using BCM, it will detect whether your have initilzed your GPG and password stores. If ~/.gnupg/trezor doesn’t yet exist, you will be prompted to create new GPG certificates. Be sure you have your Trezor handy! Of course, you can always generate them manually by running bcm init at the CLI. + +When generating new certificates, you will be asked for the Certificate Title, username, and domain name. This defines the title of your certificate. For example, if your name is Satoshi Natamoto, username is satoshi, and your domain is bitcoin.org, your certificate will look like. + +Satoshi Nakamoto &lt;satoshi@bitcoin.org&gt; + + +After the prompts, BCM scripts communicate with your Trezor to generate them. You can generate the certificates at the BIP32 root of the device, or you’re welcom + +Use ‘bcm git’ command to create signed git commit and git tags + +Use ‘bcm ssh’ to perform SSH authentication with remote machines + +Use ‘bcm file’ commands to encrypt and decrypt files + +Use ‘bcm file’ commands to create and verify file signatures + +Use ‘bcm pass’ commands to create and manage passwords locally + + Sat, 20 Jul 2019 17:00:00 -0500 + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2019/07/20/initialize-your-gpg-certs/ + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2019/07/20/initialize-your-gpg-certs/ + + documentation + + learning + + slides + + + + + + Getting Started with Bitcoin Cache Machine + It’s been a while since I added any posts to this website! To make up for my slack, I’m making a commitment to produce a blog post every couple weeks to demonstrate some of the neat things Bitcoin Cache Machine is capable of! Stay tuned to this website and Twitter. + +In this article, I describe some of the basics of Bitcoin Cache Machine (BCM). This includes how to get it, how and when to use it, and what some of the basic functionalities are. I’ll go into greater detail in later posts and show you how you can use all the features provided by BCM. + +BCM is just a bunch of Bash scripts you download to your workstation (laptop/desktop). BCM allows you to deploy Bitcoin-related software to your local computer or to one or more remote machines.BCM integrates all software components so you can work in a trust-minimized manner! You no longer need to rely on untrusted third parties! Ditch those custodial services that can steal or censor your Bitcoin transaction. Say goodbye to third-party block explorers that surveil and log your every query! It’s the way Bitcoin was meant to be used–without reliance on anybody but yourself! + +All BCM components are deployed such that services (e.g., bitcoin RPC, bitcoind P2P, clightning RPC, etc) can be securly accessed from your local network secured using a Wireguard VPN. All services are also exposed over Tor onion services when operating from the Internet. Because BCM uses TOR, there’s never any need to open firewall ports! + +The scripts provided in the BCM repository provide everything you need to deploy BCM components, whether it’s a Bitcoin Core full node, clightning node, Spark web application to manage that node, or a desktop application like Electrum wallet. All components are configured to consult your full node in a trust minimized manner. BCM also includes scripts that allow you to perform manual backup backup and restoration of critical data. BCM is built for privacy: all components are configured to use TOR for outbound communication when possible. You need to have a Trezor-T hardware wallet in order to use BCM. + +Download BCM to your computer + +INSERT GETTING STARTED INSTRUCTIONS + +Initialize BCM; download necessary software + +BCM scripts download and install pre-requisites. Software that BCM installs include + +## + + Sat, 20 Jul 2019 17:00:00 -0500 + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2019/07/20/getting-started-with-bcm/ + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2019/07/20/getting-started-with-bcm/ + + documentation + + learning + + slides + + + + + + Greenville ACM presentation on Bitcoin Cache Machine + Here’s the link to the presentation slides.. + + Sat, 12 Jan 2019 16:00:00 -0600 + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2019/01/12/presentation-slides/ + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2019/01/12/presentation-slides/ + + documentation + + learning + + slides + + + + + + Introducing Bitcoin Cache Machine + Bitcoin Cache Machine is open-source software that implements a self-hosted, privacy-preserving, software-defined network. BCM is built entirely with free and open-source software and is meant primarily for home and small office use in line with the spirit of decentralization. Its broad purpose is to software-define your home or office network with resilient privacy-preserving Bitcoin-related payment and operating IT infrastructure. + +Status + +Bitcoin Cache Machine is still very new and recommended for testing purposes only. It is far from feature complete and has NOT undergone a formal security evaluation. We’re hoping to increase the community of open-source developers that work on Bitcoin Cache Machine. If you would like to participate in the development of Bitcoin Cache Machine, take a look at the project on Github or consider coordinating with the existing developers in the Keybase Team. + +Why is Bitcoin Cache Machine is needed + +Before we get into the weeds of what Bitcoin Cache Machine is and what it does, let’s step back and understand WHY Bitcoin Cache Machine is needed. + +Over time, our personal information—our address, family members, favorite childhood pet, elementary school, our Socialist Security Numbers—all the informational tidbits that online services have asked us for over the years, gets hacked. It’s easy to see why. Companies like Experian work each day to collect our sensitive personal information and store it in centralized databases–veritable honeypots for would-be hackers. A single successful hack makes it far more likely that financial fraud will be committed in your name. Fundamentally, this is because the existing (legacy) financial system depends on personal information to establish trust relationships. + +The answer to this craziness is to not disclose our personal information to untrusted third parties in the first place. This is unavoidable to an extent when operating in the legacy financial system. Fortunately we have Bitcoin–a monetary system that operates outside of the existing broken system. In Bitcoin, trust is (partially) established by proving knowledge of private information; it simply doesn’t rely on readily-available personal information. By using Bitcoin, we can reduce the impact of financial fraud being committed in our name. + +Using Bitcoin is a great first step, but there are a myriad of other ways your personal information—or metadata—can be disclosed to third parties. Many web wallets, for example, consult hosted Bitcoin nodes or link to public block explorers, or download transaction history and price data from public servers. Without adequate protection, those hosting these public services can glean and store informational tid-bits, and given enough information, e.g., your public IP address, bitcoin transactions, XPUBs, etc., third parties can determine who you are or how much or WHICH bitcoins are yours! Not great for your privacy! And what about your communication services? Services like Signal help by protecting the content of your messages, but do little to prevent adversaries from compromising your communication metadata. + +To prevent our personal data from being disclosed, we MUST run our own IT infrastructure. Not an easy task for most people. + +Introducing Bitcoin Cache Machine + +Bitcoin Cache Machine is a software-defined data center capable of automating the deployment and operation of your own privacy-preserving IT infrastructure. It allows you to run a fully-operational data center in your home or office. It’s a platform for bitcoin and lightning-related development. If you have an old computer, you can install BCM on it and software-define your network while simultaneously on-boarding yourself onto the Bitcoin and Lightning economy. + +BCM deploys the latest Bitcoin Core full node so you can start participating in the Bitcoin economy and have full assurance of the underlying financial system. You can deploy BCM with one or more Lightning daemons, web wallet interfaces, databases, etc., or you can package up your own custom software to run against a BCM software stack! BCM is designed to be composable, so you can piece together the components you need like legos! All deployed components are pre-configured to emit logging information to nearby Apache Kafka-based messaging stacks. Kafka provides distributed messaging and event and source logging. Event processing is expected to Kafka Streams 5.0 KSQL API and toolset. One of the development goals of BCM is to provide event schema classification and evolution (via Apache Avro) for all supported components (e.g., bitcoind, lightningd, etc.) which will allow workflow developers to program against a common and structured data model. + +BCM isn’t just about using Bitcoin, it’s about protecting your overall privacy. Whenever possible, BCM uses TOR for outbound client/server and peer-to-peer (e.g., bitcoind, lightningd, etc.) communication. You have the option of exposing various RPC interfaces as authenticated onion sites which is great for mobile apps requiring access to your hosted RPC interfaces. BCM thus requires outbound TCP 9050 to host services on the Internet; fiddling with external firewalls is often unnecessary. + +You can deploy as many BCM instances as you want, you just will need to bring disk, memory, compute, and an internet connection! Key management for your software-defined data center will use hardware wallets for secure cryptographic operations; hardware wallets will function as the trusted Root CA for all client and server certificates deployed within your data center. Each data center/trust boundary you create is operated by a distinct BIP32 path! + +BCM is deployed entirely against the LXD REST API. This means you can run BCM or any of its components on ANY networked computer (or your local machine) capable of running LXD. As it happens, getting a modern Linux distribution ready to host BCM is a snap. The BCM github repo includes shell scripts and cloud-init files that prepare your computer for LXD commands. Getting started with BCM is quick and simple and free since it’s built entirely using open source! + +Conclusion + +BCM dramatically lowers the barriers to deploying and operating your own privacy-preserving bitcoin payment infrastructure. This network and its components deploy in a fully automated way and run on commodity x86_64, so it’s likely you can start testing it today! You just need to provide CPU, memory, disk, a modern Linux kernel with LXD installed, and an Internet connection! Deploy any combination of BCM components to create the data center that suits your particular needs! + + Tue, 27 Nov 2018 00:00:00 -0600 + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2018/11/27/introducing-bitcoin-cache-machine/ + http://127.0.0.1:43110/1KqjsEPJ9cmbnHop5VneDG4ws9i9ufYbch//2018/11/27/introducing-bitcoin-cache-machine/ + + bitcoin + + lightning + + software-defined-network + + + + + + diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Bold.eot b/website/jekyll_site/_site/fonts/ProximaNova-Bold.eot new file mode 100644 index 0000000..617ac7d Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Bold.eot differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Bold.ttf b/website/jekyll_site/_site/fonts/ProximaNova-Bold.ttf new file mode 100644 index 0000000..0cc21c7 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Bold.ttf differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Bold.woff b/website/jekyll_site/_site/fonts/ProximaNova-Bold.woff new file mode 100644 index 0000000..466cf84 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Bold.woff differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Bold.woff2 b/website/jekyll_site/_site/fonts/ProximaNova-Bold.woff2 new file mode 100644 index 0000000..ee760d2 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Bold.woff2 differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Light.eot b/website/jekyll_site/_site/fonts/ProximaNova-Light.eot new file mode 100644 index 0000000..11ec791 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Light.eot differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Light.ttf b/website/jekyll_site/_site/fonts/ProximaNova-Light.ttf new file mode 100644 index 0000000..d6143b6 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Light.ttf differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Light.woff b/website/jekyll_site/_site/fonts/ProximaNova-Light.woff new file mode 100644 index 0000000..3a3f304 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Light.woff differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Light.woff2 b/website/jekyll_site/_site/fonts/ProximaNova-Light.woff2 new file mode 100644 index 0000000..5b07033 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Light.woff2 differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Regular.eot b/website/jekyll_site/_site/fonts/ProximaNova-Regular.eot new file mode 100644 index 0000000..5f32ec4 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Regular.eot differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Regular.ttf b/website/jekyll_site/_site/fonts/ProximaNova-Regular.ttf new file mode 100644 index 0000000..6811618 Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Regular.ttf differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Regular.woff b/website/jekyll_site/_site/fonts/ProximaNova-Regular.woff new file mode 100644 index 0000000..1f982dc Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Regular.woff differ diff --git a/website/jekyll_site/_site/fonts/ProximaNova-Regular.woff2 b/website/jekyll_site/_site/fonts/ProximaNova-Regular.woff2 new file mode 100644 index 0000000..3ffea6a Binary files /dev/null and b/website/jekyll_site/_site/fonts/ProximaNova-Regular.woff2 differ diff --git a/website/jekyll_site/_site/img/android-chrome-72x72.png b/website/jekyll_site/_site/img/android-chrome-72x72.png new file mode 100644 index 0000000..b6f21f0 Binary files /dev/null and b/website/jekyll_site/_site/img/android-chrome-72x72.png differ diff --git a/website/jekyll_site/_site/img/background_gradient.png b/website/jekyll_site/_site/img/background_gradient.png new file mode 100644 index 0000000..1394753 Binary files /dev/null and b/website/jekyll_site/_site/img/background_gradient.png differ diff --git a/website/jekyll_site/_site/img/bcm_icon.png b/website/jekyll_site/_site/img/bcm_icon.png new file mode 100644 index 0000000..ec36311 Binary files /dev/null and b/website/jekyll_site/_site/img/bcm_icon.png differ diff --git a/website/jekyll_site/_site/img/bcm_icon_v2.png b/website/jekyll_site/_site/img/bcm_icon_v2.png new file mode 100644 index 0000000..95bd0e5 Binary files /dev/null and b/website/jekyll_site/_site/img/bcm_icon_v2.png differ diff --git a/website/jekyll_site/_site/img/bcm_logo.png b/website/jekyll_site/_site/img/bcm_logo.png new file mode 100644 index 0000000..671f595 Binary files /dev/null and b/website/jekyll_site/_site/img/bcm_logo.png differ diff --git a/website/jekyll_site/_site/img/bcm_logo_v2.png b/website/jekyll_site/_site/img/bcm_logo_v2.png new file mode 100644 index 0000000..babded6 Binary files /dev/null and b/website/jekyll_site/_site/img/bcm_logo_v2.png differ diff --git a/website/jekyll_site/_site/img/favicon.png b/website/jekyll_site/_site/img/favicon.png new file mode 100644 index 0000000..50cf79b Binary files /dev/null and b/website/jekyll_site/_site/img/favicon.png differ diff --git a/website/jekyll_site/_site/img/git-2.png b/website/jekyll_site/_site/img/git-2.png new file mode 100644 index 0000000..bbd4a8e Binary files /dev/null and b/website/jekyll_site/_site/img/git-2.png differ diff --git a/website/jekyll_site/_site/img/github-icon.png b/website/jekyll_site/_site/img/github-icon.png new file mode 100644 index 0000000..4da00ba Binary files /dev/null and b/website/jekyll_site/_site/img/github-icon.png differ diff --git a/website/jekyll_site/_site/img/github.png b/website/jekyll_site/_site/img/github.png new file mode 100644 index 0000000..c299e5a Binary files /dev/null and b/website/jekyll_site/_site/img/github.png differ diff --git a/website/jekyll_site/_site/img/header.jpg b/website/jekyll_site/_site/img/header.jpg new file mode 100644 index 0000000..43435cd Binary files /dev/null and b/website/jekyll_site/_site/img/header.jpg differ diff --git a/website/jekyll_site/_site/img/header_v2.png b/website/jekyll_site/_site/img/header_v2.png new file mode 100644 index 0000000..ea374ed Binary files /dev/null and b/website/jekyll_site/_site/img/header_v2.png differ diff --git a/website/jekyll_site/_site/img/keybase_icon.png b/website/jekyll_site/_site/img/keybase_icon.png new file mode 100644 index 0000000..a5c94c1 Binary files /dev/null and b/website/jekyll_site/_site/img/keybase_icon.png differ diff --git a/website/jekyll_site/_site/index.html b/website/jekyll_site/_site/index.html new file mode 100644 index 0000000..68a13af --- /dev/null +++ b/website/jekyll_site/_site/index.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + Bitcoin Cache Machine - A Secure, Privacy-Preserving, Software-Defined Data Center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + + + +

+ + A Secure, Privacy-Preserving, Software-Defined Data Center + + Download Source Files +
+ + +
+
+
+
+
+
+ + + +
+ +
+
+
+

Streamlined BTC Development On a Flexible
and Sturdy Foundation

+
    +
  • Choose your entire bitcoin software stack, have a fully integrated environment provisioned automatically.
  • +
  • Choose Bitcoin Cache Machine as a platform to develop your line-of-business idea.
  • +
  • Let Bitcoin Cache Machine handle the infrastructure and operations management for your application: password + and certificate management, automated backups of user data, key rotation, vulnerability and change management, + etc.
  • +
  • Use the same code for testing, staging, and production workloads.
  • +
  • Rapidly iterate on your Bitcoin business ideas. Deploy a new configuration in minutes.
  • +
+
+
+
+ +
+ +
+ + + + + + + + + + \ No newline at end of file diff --git a/website/jekyll_site/_site/js/bootstrap.js b/website/jekyll_site/_site/js/bootstrap.js new file mode 100644 index 0000000..b6ac8d9 --- /dev/null +++ b/website/jekyll_site/_site/js/bootstrap.js @@ -0,0 +1,2320 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.1 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.1 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.1' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.1 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.1' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.1 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.1' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var delta = direction == 'prev' ? -1 : 1 + var activeIndex = this.getItemIndex(active) + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.1 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.1' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true, + trigger: '[data-toggle="collapse"]' + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.1 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.1' + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(' +{% endif %} +
+
+
+
+

The Latest From The Blog

+ {% for post in paginator.posts %} +
+ +

{{ post.title }}

+ {% if post.subtitle %} +

+ {{ post.subtitle }} +

+ {% endif %} +
+ + +
+ {% endfor %} + + + {% if paginator.total_pages > 1 %} + + {% endif %} diff --git a/website/jekyll_site/js/bootstrap.js b/website/jekyll_site/js/bootstrap.js new file mode 100644 index 0000000..b6ac8d9 --- /dev/null +++ b/website/jekyll_site/js/bootstrap.js @@ -0,0 +1,2320 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.1 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.1 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.1' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.1 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.1' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.1 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.1' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var delta = direction == 'prev' ? -1 : 1 + var activeIndex = this.getItemIndex(active) + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.1 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.1' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true, + trigger: '[data-toggle="collapse"]' + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.1 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.1' + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('