diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..eb372fc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+logs
+target
+/.idea
+/.idea_modules
+/.classpath
+/.project
+/.settings
+/RUNNING_PID
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..4baedcb
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,8 @@
+This software is licensed under the Apache 2 license, quoted below.
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with
+the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
+language governing permissions and limitations under the License.
\ No newline at end of file
diff --git a/README b/README
new file mode 100644
index 0000000..8dfa632
--- /dev/null
+++ b/README
@@ -0,0 +1,49 @@
+This is your new Play application
+=================================
+
+This file will be packaged with your application when using `activator dist`.
+
+There are several demonstration files available in this template.
+
+Controllers
+===========
+
+- HomeController.scala:
+
+ Shows how to handle simple HTTP requests.
+
+- AsyncController.scala:
+
+ Shows how to do asynchronous programming when handling a request.
+
+- CountController.scala:
+
+ Shows how to inject a component into a controller and use the component when
+ handling requests.
+
+Components
+==========
+
+- Module.scala:
+
+ Shows how to use Guice to bind all the components needed by your application.
+
+- Counter.scala:
+
+ An example of a component that contains state, in this case a simple counter.
+
+- ApplicationTimer.scala:
+
+ An example of a component that starts when the application starts and stops
+ when the application stops.
+
+Filters
+=======
+
+- Filters.scala:
+
+ Creates the list of HTTP filters used by your application.
+
+- ExampleFilter.scala
+
+ A simple filter that adds a header to every response.
\ No newline at end of file
diff --git a/activatorStart.sh b/activatorStart.sh
new file mode 100644
index 0000000..4ecb59d
--- /dev/null
+++ b/activatorStart.sh
@@ -0,0 +1 @@
+activator -Dhttp.proxyHost="192.168.16.1" -Dhttp.proxyPort="128" -Dhttps.proxyHost="192.168.16.1" -Dhttps.proxyPort="128" -Dhttp.nonProxyHosts="localhost|127.0.0.1" -Dhttps.nonProxyHosts="localhost|127.0.0.1" ~run
diff --git a/app/Filters.scala b/app/Filters.scala
new file mode 100644
index 0000000..a72db50
--- /dev/null
+++ b/app/Filters.scala
@@ -0,0 +1,33 @@
+import javax.inject._
+import play.api._
+import play.api.http.HttpFilters
+import play.api.mvc._
+
+import filters.ExampleFilter
+
+/**
+ * This class configures filters that run on every request. This
+ * class is queried by Play to get a list of filters.
+ *
+ * Play will automatically use filters from any class called
+ * `Filters` that is placed the root package. You can load filters
+ * from a different class by adding a `play.http.filters` setting to
+ * the `application.conf` configuration file.
+ *
+ * @param env Basic environment settings for the current application.
+ * @param exampleFilter A demonstration filter that adds a header to
+ * each response.
+ */
+@Singleton
+class Filters @Inject() (
+ env: Environment,
+ exampleFilter: ExampleFilter) extends HttpFilters {
+
+ override val filters = {
+ // Use the example filter if we're running development mode. If
+ // we're running in production or test mode then don't use any
+ // filters at all.
+ if (env.mode == Mode.Dev) Seq(exampleFilter) else Seq.empty
+ }
+
+}
diff --git a/app/Module.scala b/app/Module.scala
new file mode 100644
index 0000000..ca0e39f
--- /dev/null
+++ b/app/Module.scala
@@ -0,0 +1,28 @@
+import com.google.inject.AbstractModule
+import java.time.Clock
+
+import services.{ApplicationTimer, AtomicCounter, Counter}
+
+/**
+ * This class is a Guice module that tells Guice how to bind several
+ * different types. This Guice module is created when the Play
+ * application starts.
+
+ * Play will automatically use any class called `Module` that is in
+ * the root package. You can create modules in other locations by
+ * adding `play.modules.enabled` settings to the `application.conf`
+ * configuration file.
+ */
+class Module extends AbstractModule {
+
+ override def configure() = {
+ // Use the system clock as the default implementation of Clock
+ bind(classOf[Clock]).toInstance(Clock.systemDefaultZone)
+ // Ask Guice to create an instance of ApplicationTimer when the
+ // application starts.
+ bind(classOf[ApplicationTimer]).asEagerSingleton()
+ // Set AtomicCounter as the implementation for Counter.
+ bind(classOf[Counter]).to(classOf[AtomicCounter])
+ }
+
+}
diff --git a/app/controllers/AsyncController.scala b/app/controllers/AsyncController.scala
new file mode 100644
index 0000000..f1f6ff0
--- /dev/null
+++ b/app/controllers/AsyncController.scala
@@ -0,0 +1,41 @@
+package controllers
+
+import akka.actor.ActorSystem
+import javax.inject._
+import play.api._
+import play.api.mvc._
+import scala.concurrent.{ExecutionContext, Future, Promise}
+import scala.concurrent.duration._
+
+/**
+ * This controller creates an `Action` that demonstrates how to write
+ * simple asynchronous code in a controller. It uses a timer to
+ * asynchronously delay sending a response for 1 second.
+ *
+ * @param actorSystem We need the `ActorSystem`'s `Scheduler` to
+ * run code after a delay.
+ * @param exec We need an `ExecutionContext` to execute our
+ * asynchronous code.
+ */
+@Singleton
+class AsyncController @Inject() (actorSystem: ActorSystem)(implicit exec: ExecutionContext) extends Controller {
+
+ /**
+ * Create an Action that returns a plain text message after a delay
+ * of 1 second.
+ *
+ * The configuration in the `routes` file means that this method
+ * will be called when the application receives a `GET` request with
+ * a path of `/message`.
+ */
+ def message = Action.async {
+ getFutureMessage(1.second).map { msg => Ok(msg) }
+ }
+
+ private def getFutureMessage(delayTime: FiniteDuration): Future[String] = {
+ val promise: Promise[String] = Promise[String]()
+ actorSystem.scheduler.scheduleOnce(delayTime) { promise.success("Hi!") }
+ promise.future
+ }
+
+}
diff --git a/app/controllers/Barcodes.scala b/app/controllers/Barcodes.scala
new file mode 100644
index 0000000..7ea8a7c
--- /dev/null
+++ b/app/controllers/Barcodes.scala
@@ -0,0 +1,39 @@
+package controllers
+
+import javax.inject._
+import play.api._
+import play.api.mvc._
+import play.api.i18n.{Messages, I18nSupport, MessagesApi}
+
+class Barcodes @Inject() extends Controller {
+ val imageResolution = 144
+
+ def barcode(ean: Long) = Action{
+ import java.lang.IllegalArgumentException
+ val MimeType = "image/png"
+ try {
+ val imageData = ean13BarCode(ean, MimeType)
+ Ok(imageData).as(MimeType)
+ }
+ catch {
+ case e: IllegalArgumentException =>
+ BadRequest("Couldn’t generate bar code. Error: " + e.getMessage)
+ }
+ }
+ def ean13BarCode(ean: Long, mimeType: String): Array[Byte] = {
+ import java.io.ByteArrayOutputStream
+ import java.awt.image.BufferedImage
+ import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider
+ import org.krysalis.barcode4j.impl.upcean.EAN13Bean
+
+ val output: ByteArrayOutputStream = new ByteArrayOutputStream
+ val canvas: BitmapCanvasProvider =
+ new BitmapCanvasProvider(output, mimeType, imageResolution,
+ BufferedImage.TYPE_BYTE_BINARY, false, 0)
+ val barcode = new EAN13Bean()
+ barcode.generateBarcode(canvas, String valueOf ean)
+ canvas.finish
+ output.toByteArray
+ }
+
+}
\ No newline at end of file
diff --git a/app/controllers/CountController.scala b/app/controllers/CountController.scala
new file mode 100644
index 0000000..51bd50e
--- /dev/null
+++ b/app/controllers/CountController.scala
@@ -0,0 +1,25 @@
+package controllers
+
+import javax.inject._
+import play.api._
+import play.api.mvc._
+
+import services.Counter
+
+/**
+ * This controller demonstrates how to use dependency injection to
+ * bind a component into a controller class. The class creates an
+ * `Action` that shows an incrementing count to users. The [[Counter]]
+ * object is injected by the Guice dependency injection system.
+ */
+@Singleton
+class CountController @Inject() (counter: Counter) extends Controller {
+
+ /**
+ * Create an action that responds with the [[Counter]]'s current
+ * count. The result is plain text. This `Action` is mapped to
+ * `GET /count` requests by an entry in the `routes` config file.
+ */
+ def count = Action { Ok(counter.nextCount().toString) }
+
+}
diff --git a/app/controllers/HomeController.scala b/app/controllers/HomeController.scala
new file mode 100644
index 0000000..d0af774
--- /dev/null
+++ b/app/controllers/HomeController.scala
@@ -0,0 +1,24 @@
+package controllers
+
+import javax.inject._
+import play.api._
+import play.api.mvc._
+
+/**
+ * This controller creates an `Action` to handle HTTP requests to the
+ * application's home page.
+ */
+@Singleton
+class HomeController @Inject() extends Controller {
+
+ /**
+ * Create an Action to render an HTML page with a welcome message.
+ * The configuration in the `routes` file means that this method
+ * will be called when the application receives a `GET` request with
+ * a path of `/`.
+ */
+ def index = Action {
+ Redirect(routes.Products.list)
+ }
+
+}
diff --git a/app/controllers/Products.scala b/app/controllers/Products.scala
new file mode 100644
index 0000000..fb7ee47
--- /dev/null
+++ b/app/controllers/Products.scala
@@ -0,0 +1,57 @@
+package controllers
+
+import javax.inject._
+import play.api._
+import play.api.mvc._
+import play.api.i18n.{Messages, I18nSupport, MessagesApi}
+import play.api.data.Form
+import play.api.data.Forms.{mapping, longNumber, nonEmptyText}
+import models.Product
+
+class Products @Inject()(val messagesApi: MessagesApi) extends Controller with I18nSupport{
+
+ def list = Action{ implicit request =>
+ val products = Product.findAll
+
+ Ok(views.html.products.list(products))
+ }
+
+ def show(ean: Long) = Action{ implicit request =>
+ Product.findByEan(ean).map{ product =>
+ Ok(views.html.products.details(product))
+ }.getOrElse(NotFound)
+ }
+
+ def newProduct = Action{ implicit request =>
+ val form = if(request.flash.get("error").isDefined)
+ productForm.bind(request.flash.data)
+ else
+ productForm
+ Ok(views.html.products.editProduct(form))
+ }
+
+ private val productForm: Form[Product] = Form(
+ mapping(
+ "ean" -> longNumber.verifying(
+ "validation.ean.duplicate", Product.findByEan(_).isEmpty),
+ "name" -> nonEmptyText,
+ "description" -> nonEmptyText
+ )(Product.apply)(Product.unapply)
+ )
+
+ def save = Action { implicit request =>
+ val newProductForm = productForm.bindFromRequest()
+
+ newProductForm.fold(
+ hasErrors = {form =>
+ Redirect(routes.Products.newProduct()).flashing(Flash(form.data) +
+ ("error" -> Messages("validation.errors")))
+ },
+ success = {newProduct =>
+ Product.add(newProduct)
+ val message = Messages("products.new.success", newProduct.name)
+ Redirect.routes(routes.Products.show(newProduct.ean)).flashing("success" -> message)
+ }
+ )
+ }
+}
\ No newline at end of file
diff --git a/app/filters/ExampleFilter.scala b/app/filters/ExampleFilter.scala
new file mode 100644
index 0000000..ec394f6
--- /dev/null
+++ b/app/filters/ExampleFilter.scala
@@ -0,0 +1,33 @@
+package filters
+
+import akka.stream.Materializer
+import javax.inject._
+import play.api.mvc._
+import scala.concurrent.{ExecutionContext, Future}
+
+/**
+ * This is a simple filter that adds a header to all requests. It's
+ * added to the application's list of filters by the
+ * [[Filters]] class.
+ *
+ * @param mat This object is needed to handle streaming of requests
+ * and responses.
+ * @param exec This class is needed to execute code asynchronously.
+ * It is used below by the `map` method.
+ */
+@Singleton
+class ExampleFilter @Inject()(
+ implicit override val mat: Materializer,
+ exec: ExecutionContext) extends Filter {
+
+ override def apply(nextFilter: RequestHeader => Future[Result])
+ (requestHeader: RequestHeader): Future[Result] = {
+ // Run the next filter in the chain. This will call other filters
+ // and eventually call the action. Take the result and modify it
+ // by adding a new header.
+ nextFilter(requestHeader).map { result =>
+ result.withHeaders("X-ExampleFilter" -> "foo")
+ }
+ }
+
+}
diff --git a/app/models/Product.scala b/app/models/Product.scala
new file mode 100644
index 0000000..39bd713
--- /dev/null
+++ b/app/models/Product.scala
@@ -0,0 +1,31 @@
+package models
+
+case class Product(
+ ean: Long, name: String, description: String
+)
+
+object Product {
+ var products = Set(
+ Product(5010255079763L, "Paperclips Large",
+ "Large Plain Pack of 1000"),
+
+ Product(5018206244666L, "Giant Paperclips",
+ "Giant Plain 51mm 100 pack"),
+
+ Product(5018306332812L, "Paperclip Giant Plain",
+ "Giant Plain Pack of 10000"),
+
+ Product(5018306312913L, "No Tear Paper Clip",
+ "No Tear Extra Large Pack of 1000"),
+
+ Product(5018206244611L, "Zebra Paperclips",
+ "Zebra Length 28mm Assorted 150 Pack")
+ )
+ def findAll = products.toList.sortBy(_.ean)
+
+ def findByEan(ean: Long) = products.find(_.ean == ean)
+
+ def add(product: Product){
+ products = products + product
+ }
+}
\ No newline at end of file
diff --git a/app/services/ApplicationTimer.scala b/app/services/ApplicationTimer.scala
new file mode 100644
index 0000000..7ace764
--- /dev/null
+++ b/app/services/ApplicationTimer.scala
@@ -0,0 +1,39 @@
+package services
+
+import java.time.{Clock, Instant}
+import javax.inject._
+import play.api.Logger
+import play.api.inject.ApplicationLifecycle
+import scala.concurrent.Future
+
+/**
+ * This class demonstrates how to run code when the
+ * application starts and stops. It starts a timer when the
+ * application starts. When the application stops it prints out how
+ * long the application was running for.
+ *
+ * This class is registered for Guice dependency injection in the
+ * [[Module]] class. We want the class to start when the application
+ * starts, so it is registered as an "eager singleton". See the code
+ * in the [[Module]] class to see how this happens.
+ *
+ * This class needs to run code when the server stops. It uses the
+ * application's [[ApplicationLifecycle]] to register a stop hook.
+ */
+@Singleton
+class ApplicationTimer @Inject() (clock: Clock, appLifecycle: ApplicationLifecycle) {
+
+ // This code is called when the application starts.
+ private val start: Instant = clock.instant
+ Logger.info(s"ApplicationTimer demo: Starting application at $start.")
+
+ // When the application starts, register a stop hook with the
+ // ApplicationLifecycle object. The code inside the stop hook will
+ // be run when the application stops.
+ appLifecycle.addStopHook { () =>
+ val stop: Instant = clock.instant
+ val runningTime: Long = stop.getEpochSecond - start.getEpochSecond
+ Logger.info(s"ApplicationTimer demo: Stopping application at ${clock.instant} after ${runningTime}s.")
+ Future.successful(())
+ }
+}
diff --git a/app/services/Counter.scala b/app/services/Counter.scala
new file mode 100644
index 0000000..fe19334
--- /dev/null
+++ b/app/services/Counter.scala
@@ -0,0 +1,29 @@
+package services
+
+import java.util.concurrent.atomic.AtomicInteger
+import javax.inject._
+
+/**
+ * This trait demonstrates how to create a component that is injected
+ * into a controller. The trait represents a counter that returns a
+ * incremented number each time it is called.
+ */
+trait Counter {
+ def nextCount(): Int
+}
+
+/**
+ * This class is a concrete implementation of the [[Counter]] trait.
+ * It is configured for Guice dependency injection in the [[Module]]
+ * class.
+ *
+ * This class has a `Singleton` annotation because we need to make
+ * sure we only use one counter per application. Without this
+ * annotation we would get a new instance every time a [[Counter]] is
+ * injected.
+ */
+@Singleton
+class AtomicCounter extends Counter {
+ private val atomicCounter = new AtomicInteger()
+ override def nextCount(): Int = atomicCounter.getAndIncrement()
+}
diff --git a/app/views/debug.scala.html b/app/views/debug.scala.html
new file mode 100644
index 0000000..96d0884
--- /dev/null
+++ b/app/views/debug.scala.html
@@ -0,0 +1,8 @@
+@()(implicit lang: Lang)
+@import play.api.Play.current
+
+
+ lang = @lang.code,
+ user = @current.configuration.getString("environment.user"),
+ date = @(new java.util.Date().format("yyyy-MM-dd HH:mm"))
+
\ No newline at end of file
diff --git a/app/views/main.scala.html b/app/views/main.scala.html
new file mode 100644
index 0000000..204f34d
--- /dev/null
+++ b/app/views/main.scala.html
@@ -0,0 +1,55 @@
+@import play.api.i18n._
+@(title: String)(content: Html)(implicit flash: Flash, messages: Messages)
+
+
+
+
+ @title
+
+
+
+
+
+
+
+ @if(flash.get("success").isDefined){
+
+ @flash.get("success")
+
+ }
+
+ @if(flash.get("error").isDefined){
+
+ @flash.get("error")
+
+ }
+
+ @content
+ @debug()
+
+
+
+
\ No newline at end of file
diff --git a/app/views/products/details.scala.html b/app/views/products/details.scala.html
new file mode 100644
index 0000000..a1bb79a
--- /dev/null
+++ b/app/views/products/details.scala.html
@@ -0,0 +1,16 @@
+@(product: Product)(implicit flash: Flash, messages: Messages)
+
+@main(Messages("products.details", product.name)){
+
+ @tags.barcode(product.ean)
+ @Messages("products.details", product.name)
+
+
+ @Messages("ean"):
+ @product.ean
+ @Messages("name"):
+ @product.name
+ @Messages("description"):
+ @product.description
+
+}
\ No newline at end of file
diff --git a/app/views/products/editProduct.scala.html b/app/views/products/editProduct.scala.html
new file mode 100644
index 0000000..5fd2fb2
--- /dev/null
+++ b/app/views/products/editProduct.scala.html
@@ -0,0 +1,20 @@
+@(productForm: Form[Product])(implicit flash: Flash, lang: Lang)
+@import helper._
+@import helper.twitterBootstrap._
+
+@main(Messages("products.form")) {
+ @Messages("products.form")
+ @helper.form(action = routes.Products.save()) {
+
+
+ @Messages("products.details", Messages("products.new"))
+
+ @helper.inputText(productForm("ean"))
+ @helper.inputText(productForm("name"))
+ @helper.textarea(productForm("description"))
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/app/views/products/list.scala.html b/app/views/products/list.scala.html
new file mode 100644
index 0000000..064d46a
--- /dev/null
+++ b/app/views/products/list.scala.html
@@ -0,0 +1,16 @@
+@import play.api.i18n._
+@(products: List[Product])(implicit flash: Flash, messages: Messages)
+
+@main(Messages("application.name")){
+
+ @for(product <- products){
+ @product.name
+ @product.description
+ }
+
+
+
+ @Messages("products.new.command")
+
+
+}
\ No newline at end of file
diff --git a/app/views/tags/barcode.scala.html b/app/views/tags/barcode.scala.html
new file mode 100644
index 0000000..c6a99b5
--- /dev/null
+++ b/app/views/tags/barcode.scala.html
@@ -0,0 +1,2 @@
+@(ean: Long)
+
\ No newline at end of file
diff --git a/bin/activator b/bin/activator
new file mode 100755
index 0000000..1ad728f
--- /dev/null
+++ b/bin/activator
@@ -0,0 +1,404 @@
+#!/usr/bin/env bash
+
+### ------------------------------- ###
+### Helper methods for BASH scripts ###
+### ------------------------------- ###
+
+realpath () {
+(
+ TARGET_FILE="$1"
+ FIX_CYGPATH="$2"
+
+ cd "$(dirname "$TARGET_FILE")"
+ TARGET_FILE=$(basename "$TARGET_FILE")
+
+ COUNT=0
+ while [ -L "$TARGET_FILE" -a $COUNT -lt 100 ]
+ do
+ TARGET_FILE=$(readlink "$TARGET_FILE")
+ cd "$(dirname "$TARGET_FILE")"
+ TARGET_FILE=$(basename "$TARGET_FILE")
+ COUNT=$(($COUNT + 1))
+ done
+
+ # make sure we grab the actual windows path, instead of cygwin's path.
+ if [[ "x$FIX_CYGPATH" != "x" ]]; then
+ echo "$(cygwinpath "$(pwd -P)/$TARGET_FILE")"
+ else
+ echo "$(pwd -P)/$TARGET_FILE"
+ fi
+)
+}
+
+
+# Uses uname to detect if we're in the odd cygwin environment.
+is_cygwin() {
+ local os=$(uname -s)
+ case "$os" in
+ CYGWIN*) return 0 ;;
+ *) return 1 ;;
+ esac
+}
+
+# TODO - Use nicer bash-isms here.
+CYGWIN_FLAG=$(if is_cygwin; then echo true; else echo false; fi)
+
+
+# This can fix cygwin style /cygdrive paths so we get the
+# windows style paths.
+cygwinpath() {
+ local file="$1"
+ if [[ "$CYGWIN_FLAG" == "true" ]]; then
+ echo $(cygpath -w $file)
+ else
+ echo $file
+ fi
+}
+
+# Make something URI friendly
+make_url() {
+ url="$1"
+ local nospaces=${url// /%20}
+ if is_cygwin; then
+ echo "/${nospaces//\\//}"
+ else
+ echo "$nospaces"
+ fi
+}
+
+declare -a residual_args
+declare -a java_args
+declare -a scalac_args
+declare -a sbt_commands
+declare java_cmd=java
+declare java_version
+declare -r real_script_path="$(realpath "$0")"
+declare -r sbt_home="$(realpath "$(dirname "$(dirname "$real_script_path")")")"
+declare -r sbt_bin_dir="$(dirname "$real_script_path")"
+declare -r app_version="1.3.12"
+
+declare -r script_name=activator
+declare -r java_opts=( "${ACTIVATOR_OPTS[@]}" "${SBT_OPTS[@]}" "${JAVA_OPTS[@]}" "${java_opts[@]}" )
+userhome="$HOME"
+if is_cygwin; then
+ # cygwin sets home to something f-d up, set to real windows homedir
+ userhome="$USERPROFILE"
+fi
+declare -r activator_user_home_dir="${userhome}/.activator"
+declare -r java_opts_config_home="${activator_user_home_dir}/activatorconfig.txt"
+declare -r java_opts_config_version="${activator_user_home_dir}/${app_version}/activatorconfig.txt"
+
+echoerr () {
+ echo 1>&2 "$@"
+}
+vlog () {
+ [[ $verbose || $debug ]] && echoerr "$@"
+}
+dlog () {
+ [[ $debug ]] && echoerr "$@"
+}
+
+jar_file () {
+ echo "$(cygwinpath "${sbt_home}/libexec/activator-launch-${app_version}.jar")"
+}
+
+acquire_sbt_jar () {
+ sbt_jar="$(jar_file)"
+
+ if [[ ! -f "$sbt_jar" ]]; then
+ echoerr "Could not find launcher jar: $sbt_jar"
+ exit 2
+ fi
+}
+
+execRunner () {
+ # print the arguments one to a line, quoting any containing spaces
+ [[ $verbose || $debug ]] && echo "# Executing command line:" && {
+ for arg; do
+ if printf "%s\n" "$arg" | grep -q ' '; then
+ printf "\"%s\"\n" "$arg"
+ else
+ printf "%s\n" "$arg"
+ fi
+ done
+ echo ""
+ }
+
+ # THis used to be exec, but we loose the ability to re-hook stty then
+ # for cygwin... Maybe we should flag the feature here...
+ "$@"
+}
+
+addJava () {
+ dlog "[addJava] arg = '$1'"
+ java_args=( "${java_args[@]}" "$1" )
+}
+addSbt () {
+ dlog "[addSbt] arg = '$1'"
+ sbt_commands=( "${sbt_commands[@]}" "$1" )
+}
+addResidual () {
+ dlog "[residual] arg = '$1'"
+ residual_args=( "${residual_args[@]}" "$1" )
+}
+addDebugger () {
+ addJava "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$1"
+}
+addConfigOpts () {
+ dlog "[addConfigOpts] arg = '$*'"
+ for item in $*
+ do
+ addJava "$item"
+ done
+}
+
+get_mem_opts () {
+ # if we detect any of these settings in ${JAVA_OPTS} we need to NOT output our settings.
+ # The reason is the Xms/Xmx, if they don't line up, cause errors.
+ if [[ "${JAVA_OPTS}" == *-Xmx* ]] || [[ "${JAVA_OPTS}" == *-Xms* ]] || [[ "${JAVA_OPTS}" == *-XX:MaxPermSize* ]] || [[ "${JAVA_OPTS}" == *-XX:MaxMetaspaceSize* ]] || [[ "${JAVA_OPTS}" == *-XX:ReservedCodeCacheSize* ]]; then
+ echo ""
+ else
+ # a ham-fisted attempt to move some memory settings in concert
+ # so they need not be messed around with individually.
+ local mem=${1:-1024}
+ local codecache=$(( $mem / 8 ))
+ (( $codecache > 128 )) || codecache=128
+ (( $codecache < 512 )) || codecache=512
+ local class_metadata_size=$(( $codecache * 2 ))
+ local class_metadata_opt=$([[ "$java_version" < "1.8" ]] && echo "MaxPermSize" || echo "MaxMetaspaceSize")
+
+ echo "-Xms${mem}m -Xmx${mem}m -XX:ReservedCodeCacheSize=${codecache}m -XX:${class_metadata_opt}=${class_metadata_size}m"
+ fi
+}
+
+require_arg () {
+ local type="$1"
+ local opt="$2"
+ local arg="$3"
+ if [[ -z "$arg" ]] || [[ "${arg:0:1}" == "-" ]]; then
+ echo "$opt requires <$type> argument"
+ exit 1
+ fi
+}
+
+is_function_defined() {
+ declare -f "$1" > /dev/null
+}
+
+# If we're *not* running in a terminal, and we don't have any arguments, then we need to add the 'ui' parameter
+detect_terminal_for_ui() {
+ [[ ! -t 0 ]] && [[ "${#residual_args}" == "0" ]] && {
+ addResidual "ui"
+ }
+ # SPECIAL TEST FOR MAC
+ [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]] && [[ "${#residual_args}" == "0" ]] && {
+ echo "Detected MAC OSX launched script...."
+ echo "Swapping to UI"
+ addResidual "ui"
+ }
+}
+
+process_args () {
+ while [[ $# -gt 0 ]]; do
+ case "$1" in
+ -h|-help) usage; exit 1 ;;
+ -v|-verbose) verbose=1 && shift ;;
+ -d|-debug) debug=1 && shift ;;
+
+ -ivy) require_arg path "$1" "$2" && addJava "-Dsbt.ivy.home=$2" && shift 2 ;;
+ -mem) require_arg integer "$1" "$2" && sbt_mem="$2" && shift 2 ;;
+ -jvm-debug) require_arg port "$1" "$2" && addDebugger $2 && shift 2 ;;
+ -batch) exec &1 | awk -F '"' '/version/ {print $2}')
+ vlog "[process_args] java_version = '$java_version'"
+}
+
+# Detect that we have java installed.
+checkJava() {
+ local required_version="$1"
+ # Now check to see if it's a good enough version
+ if [[ "$java_version" == "" ]]; then
+ echo
+ echo No java installations was detected.
+ echo Please go to http://www.java.com/getjava/ and download
+ echo
+ exit 1
+ elif [[ ! "$java_version" > "$required_version" ]]; then
+ echo
+ echo The java installation you have is not up to date
+ echo $script_name requires at least version $required_version+, you have
+ echo version $java_version
+ echo
+ echo Please go to http://www.java.com/getjava/ and download
+ echo a valid Java Runtime and install before running $script_name.
+ echo
+ exit 1
+ fi
+}
+
+
+run() {
+ # no jar? download it.
+ [[ -f "$sbt_jar" ]] || acquire_sbt_jar "$sbt_version" || {
+ # still no jar? uh-oh.
+ echo "Download failed. Obtain the sbt-launch.jar manually and place it at $sbt_jar"
+ exit 1
+ }
+
+ # process the combined args, then reset "$@" to the residuals
+ process_args "$@"
+ detect_terminal_for_ui
+ set -- "${residual_args[@]}"
+ argumentCount=$#
+
+ # TODO - java check should be configurable...
+ checkJava "1.6"
+
+ #If we're in cygwin, we should use the windows config, and terminal hacks
+ if [[ "$CYGWIN_FLAG" == "true" ]]; then
+ stty -icanon min 1 -echo > /dev/null 2>&1
+ addJava "-Djline.terminal=jline.UnixTerminal"
+ addJava "-Dsbt.cygwin=true"
+ fi
+
+ # run sbt
+ execRunner "$java_cmd" \
+ "-Dactivator.home=$(make_url "$sbt_home")" \
+ ${SBT_OPTS:-$default_sbt_opts} \
+ $(get_mem_opts $sbt_mem) \
+ ${JAVA_OPTS} \
+ ${java_args[@]} \
+ -jar "$sbt_jar" \
+ "${sbt_commands[@]}" \
+ "${residual_args[@]}"
+
+ exit_code=$?
+
+ # Clean up the terminal from cygwin hacks.
+ if [[ "$CYGWIN_FLAG" == "true" ]]; then
+ stty icanon echo > /dev/null 2>&1
+ fi
+ exit $exit_code
+}
+
+
+declare -r noshare_opts="-Dsbt.global.base=project/.sbtboot -Dsbt.boot.directory=project/.boot -Dsbt.ivy.home=project/.ivy"
+declare -r sbt_opts_file=".sbtopts"
+declare -r etc_sbt_opts_file="${sbt_home}/conf/sbtopts"
+declare -r win_sbt_opts_file="${sbt_home}/conf/sbtconfig.txt"
+
+usage() {
+ cat < path to global settings/plugins directory (default: ~/.sbt)
+ -sbt-boot path to shared boot directory (default: ~/.sbt/boot in 0.11 series)
+ -ivy path to local Ivy repository (default: ~/.ivy2)
+ -mem set memory options (default: $sbt_mem, which is $(get_mem_opts $sbt_mem))
+ -no-share use all local caches; no sharing
+ -no-global uses global caches, but does not use global ~/.sbt directory.
+ -jvm-debug Turn on JVM debugging, open at the given port.
+ -batch Disable interactive mode
+
+ # sbt version (default: from project/build.properties if present, else latest release)
+ -sbt-version use the specified version of sbt
+ -sbt-jar use the specified jar as the sbt launcher
+ -sbt-rc use an RC version of sbt
+ -sbt-snapshot use a snapshot version of sbt
+
+ # java version (default: java from PATH, currently $(java -version 2>&1 | grep version))
+ -java-home alternate JAVA_HOME
+
+ # jvm options and output control
+ JAVA_OPTS environment variable, if unset uses "$java_opts"
+ SBT_OPTS environment variable, if unset uses "$default_sbt_opts"
+ ACTIVATOR_OPTS Environment variable, if unset uses ""
+ .sbtopts if this file exists in the current directory, it is
+ prepended to the runner args
+ /etc/sbt/sbtopts if this file exists, it is prepended to the runner args
+ -Dkey=val pass -Dkey=val directly to the java runtime
+ -J-X pass option -X directly to the java runtime
+ (-J is stripped)
+ -S-X add -X to sbt's scalacOptions (-S is stripped)
+
+In the case of duplicated or conflicting options, the order above
+shows precedence: JAVA_OPTS lowest, command line options highest.
+EOM
+}
+
+
+
+process_my_args () {
+ while [[ $# -gt 0 ]]; do
+ case "$1" in
+ -no-colors) addJava "-Dsbt.log.noformat=true" && shift ;;
+ -no-share) addJava "$noshare_opts" && shift ;;
+ -no-global) addJava "-Dsbt.global.base=$(pwd)/project/.sbtboot" && shift ;;
+ -sbt-boot) require_arg path "$1" "$2" && addJava "-Dsbt.boot.directory=$2" && shift 2 ;;
+ -sbt-dir) require_arg path "$1" "$2" && addJava "-Dsbt.global.base=$2" && shift 2 ;;
+ -debug-inc) addJava "-Dxsbt.inc.debug=true" && shift ;;
+ -batch) exec ^&1') do (
+ if %%~j==java set JAVAINSTALLED=1
+ if %%~j==openjdk set JAVAINSTALLED=1
+)
+
+rem Detect the same thing about javac
+if "%_JAVACCMD%"=="" (
+ if not "%JAVA_HOME%"=="" (
+ if exist "%JAVA_HOME%\bin\javac.exe" set "_JAVACCMD=%JAVA_HOME%\bin\javac.exe"
+ )
+)
+if "%_JAVACCMD%"=="" set _JAVACCMD=javac
+for /F %%j in ('"%_JAVACCMD%" -version 2^>^&1') do (
+ if %%~j==javac set JAVACINSTALLED=1
+)
+
+rem BAT has no logical or, so we do it OLD SCHOOL! Oppan Redmond Style
+set JAVAOK=true
+if not defined JAVAINSTALLED set JAVAOK=false
+if not defined JAVACINSTALLED set JAVAOK=false
+
+if "%JAVAOK%"=="false" (
+ echo.
+ echo A Java JDK is not installed or can't be found.
+ if not "%JAVA_HOME%"=="" (
+ echo JAVA_HOME = "%JAVA_HOME%"
+ )
+ echo.
+ echo Please go to
+ echo http://www.oracle.com/technetwork/java/javase/downloads/index.html
+ echo and download a valid Java JDK and install before running Activator.
+ echo.
+ echo If you think this message is in error, please check
+ echo your environment variables to see if "java.exe" and "javac.exe" are
+ echo available via JAVA_HOME or PATH.
+ echo.
+ if defined DOUBLECLICKED pause
+ exit /B 1
+)
+
+rem Check what Java version is being used to determine what memory options to use
+for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do (
+ set JAVA_VERSION=%%g
+)
+
+rem Strips away the " characters
+set JAVA_VERSION=%JAVA_VERSION:"=%
+
+rem TODO Check if there are existing mem settings in JAVA_OPTS/CFG_OPTS and use those instead of the below
+for /f "delims=. tokens=1-3" %%v in ("%JAVA_VERSION%") do (
+ set MAJOR=%%v
+ set MINOR=%%w
+ set BUILD=%%x
+
+ set META_SIZE=-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=256M
+ if "!MINOR!" LSS "8" (
+ set META_SIZE=-XX:PermSize=64M -XX:MaxPermSize=256M
+ )
+
+ set MEM_OPTS=!META_SIZE!
+ )
+
+rem We use the value of the JAVA_OPTS environment variable if defined, rather than the config.
+set _JAVA_OPTS=%JAVA_OPTS%
+if "%_JAVA_OPTS%"=="" set _JAVA_OPTS=%CFG_OPTS%
+
+set DEBUG_OPTS=
+
+rem Loop through the arguments, building remaining args in args variable
+set args=
+:argsloop
+if not "%~1"=="" (
+ rem Checks if the argument contains "-D" and if true, adds argument 1 with 2 and puts an equal sign between them.
+ rem This is done since batch considers "=" to be a delimiter so we need to circumvent this behavior with a small hack.
+ set arg1=%~1
+ if "!arg1:~0,2!"=="-D" (
+ set "args=%args% "%~1"="%~2""
+ shift
+ shift
+ goto argsloop
+ )
+
+ if "%~1"=="-jvm-debug" (
+ if not "%~2"=="" (
+ rem This piece of magic somehow checks that an argument is a number
+ for /F "delims=0123456789" %%i in ("%~2") do (
+ set var="%%i"
+ )
+ if defined var (
+ rem Not a number, assume no argument given and default to 9999
+ set JPDA_PORT=9999
+ ) else (
+ rem Port was given, shift arguments
+ set JPDA_PORT=%~2
+ shift
+ )
+ ) else (
+ set JPDA_PORT=9999
+ )
+ shift
+
+ set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=!JPDA_PORT!
+ goto argsloop
+ )
+ rem else
+ set "args=%args% "%~1""
+ shift
+ goto argsloop
+)
+
+:run
+
+if "!args!"=="" (
+ if defined DOUBLECLICKED (
+ set CMDS="ui"
+ ) else set CMDS=!args!
+) else set CMDS=!args!
+
+rem We add a / in front, so we get file:///C: instead of file://C:
+rem Java considers the later a UNC path.
+rem We also attempt a solid effort at making it URI friendly.
+rem We don't even bother with UNC paths.
+set JAVA_FRIENDLY_HOME_1=/!ACTIVATOR_HOME:\=/!
+set JAVA_FRIENDLY_HOME=/!JAVA_FRIENDLY_HOME_1: =%%20!
+
+rem Checks if the command contains spaces to know if it should be wrapped in quotes or not
+set NON_SPACED_CMD=%_JAVACMD: =%
+if "%_JAVACMD%"=="%NON_SPACED_CMD%" %_JAVACMD% %DEBUG_OPTS% %MEM_OPTS% %ACTIVATOR_OPTS% %SBT_OPTS% %_JAVA_OPTS% "-Dactivator.home=%JAVA_FRIENDLY_HOME%" -jar "%ACTIVATOR_HOME%\libexec\%ACTIVATOR_LAUNCH_JAR%" %CMDS%
+if NOT "%_JAVACMD%"=="%NON_SPACED_CMD%" "%_JAVACMD%" %DEBUG_OPTS% %MEM_OPTS% %ACTIVATOR_OPTS% %SBT_OPTS% %_JAVA_OPTS% "-Dactivator.home=%JAVA_FRIENDLY_HOME%" -jar "%ACTIVATOR_HOME%\libexec\%ACTIVATOR_LAUNCH_JAR%" %CMDS%
+
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+
+@endlocal
+
+exit /B %ERROR_CODE%
diff --git a/build.sbt b/build.sbt
new file mode 100644
index 0000000..6d652e4
--- /dev/null
+++ b/build.sbt
@@ -0,0 +1,16 @@
+name := """tutorialApp"""
+
+version := "1.0-SNAPSHOT"
+
+lazy val root = (project in file(".")).enablePlugins(PlayScala)
+
+scalaVersion := "2.11.7"
+
+libraryDependencies ++= Seq(
+ jdbc,
+ cache,
+ ws,
+ "org.scalatestplus.play" %% "scalatestplus-play" % "1.5.1" % Test,
+ "net.sf.barcode4j" % "barcode4j" % "2.0"
+)
+
diff --git a/conf/application.conf b/conf/application.conf
new file mode 100644
index 0000000..3b9547f
--- /dev/null
+++ b/conf/application.conf
@@ -0,0 +1,31 @@
+# This is the main configuration file for the application.
+# https://www.playframework.com/documentation/latest/ConfigFile
+# ~~~~~
+# Play uses HOCON as its configuration file format. HOCON has a number
+# of advantages over other config formats, but there are two things that
+# can be used when modifying settings.
+#
+# You can include other configuration files in this main application.conf file:
+#include "extra-config.conf"
+#
+# You can declare variables and substitute for them:
+#mykey = ${some.value}
+#
+# And if an environment variable exists when there is no other subsitution, then
+# HOCON will fall back to substituting environment variable:
+#mykey = ${JAVA_HOME}
+play.crypto.secret = "changeme"
+
+play.i18n {
+ # The application languages
+ langs = [ "en", "ro" ]
+
+ # Whether the language cookie should be secure or not
+ #langCookieSecure = true
+
+ # Whether the HTTP only attribute of the cookie should be set to true
+ #langCookieHttpOnly = true
+}
+
+
+environment.user=${USER}
diff --git a/conf/logback.xml b/conf/logback.xml
new file mode 100644
index 0000000..86ec12c
--- /dev/null
+++ b/conf/logback.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ ${application.home:-.}/logs/application.log
+
+ %date [%level] from %logger in %thread - %message%n%xException
+
+
+
+
+
+ %coloredLevel %logger{15} - %message%n%xException{10}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conf/messages b/conf/messages
new file mode 100644
index 0000000..64d38ea
--- /dev/null
+++ b/conf/messages
@@ -0,0 +1,14 @@
+application.name = Product catalog
+
+ean = EAN
+name = Name
+description = Description
+products.details = Product: {0}
+
+products.form = Product details
+products.new = (new)
+products.new.command = New
+products.new.submit = Add
+products.new.success = Successfully added product {0}.
+validation.errors = Please correct the errors in the form.
+validation.ean.duplicate = A product with this EAN code already exists
\ No newline at end of file
diff --git a/conf/messages.ro b/conf/messages.ro
new file mode 100644
index 0000000..409e367
--- /dev/null
+++ b/conf/messages.ro
@@ -0,0 +1,14 @@
+application.name = Catalog de produse
+
+ean = EAN
+name = Nume
+description = Descriere
+products.details = Produs: {0}
+
+products.form = Detalii produs
+products.new = (nou)
+products.new.command = Nou
+products.new.submit = Adauga
+products.new.success = Adaugat cu succes produsul {0}.
+validation.errors = Va rugam corectati erorile din formular.
+validation.ean.duplicate = Un produs cu acest EAN deja exista
\ No newline at end of file
diff --git a/conf/routes b/conf/routes
new file mode 100644
index 0000000..80a0a94
--- /dev/null
+++ b/conf/routes
@@ -0,0 +1,19 @@
+# Routes
+# This file defines all application routes (Higher priority routes first)
+# ~~~~
+
+# An example controller showing a sample home page
+GET / controllers.HomeController.index
+
+GET /products controllers.Products.list
+
+GET /products/:ean controllers.Products.show(ean: Long)
+
+GET /barcode/:ean controllers.Barcodes.barcode(ean: Long)
+
+POST /products controllers.Products.save
+
+GET /products/new controllers.Products.newProduct
+
+# Map static resources from the /public folder to the /assets URL path
+GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
\ No newline at end of file
diff --git a/libexec/activator-launch-1.3.12.jar b/libexec/activator-launch-1.3.12.jar
new file mode 100644
index 0000000..4c806e2
Binary files /dev/null and b/libexec/activator-launch-1.3.12.jar differ
diff --git a/project/build.properties b/project/build.properties
new file mode 100644
index 0000000..131bd86
--- /dev/null
+++ b/project/build.properties
@@ -0,0 +1,4 @@
+#Activator-generated Properties
+#Tue Nov 15 20:32:33 EET 2016
+template.uuid=76dbc90f-670e-44ef-8b5e-1597c4a8a485
+sbt.version=0.13.11
diff --git a/project/plugins.sbt b/project/plugins.sbt
new file mode 100644
index 0000000..f464ea7
--- /dev/null
+++ b/project/plugins.sbt
@@ -0,0 +1,18 @@
+// The Play plugin
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.9")
+
+// web plugins
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.0")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.4")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.8")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.1")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")
+
+addSbtPlugin("org.irundaia.sbt" % "sbt-sassify" % "1.4.6")
diff --git a/public/stylesheets/bootstrap.css b/public/stylesheets/bootstrap.css
new file mode 100644
index 0000000..694a774
--- /dev/null
+++ b/public/stylesheets/bootstrap.css
@@ -0,0 +1,6686 @@
+/*!
+ * Bootstrap v4.0.0-alpha.5 (https://getbootstrap.com)
+ * Copyright 2011-2016 The Bootstrap Authors
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v4.2.0 | MIT License | github.com/necolas/normalize.css */
+html {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+
+body {
+ margin: 0;
+}
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+}
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+progress {
+ vertical-align: baseline;
+}
+
+template,
+[hidden] {
+ display: none;
+}
+
+a {
+ background-color: transparent;
+ -webkit-text-decoration-skip: objects;
+}
+
+a:active,
+a:hover {
+ outline-width: 0;
+}
+
+abbr[title] {
+ border-bottom: none;
+ text-decoration: underline;
+ text-decoration: underline dotted;
+}
+
+b,
+strong {
+ font-weight: inherit;
+}
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+dfn {
+ font-style: italic;
+}
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+mark {
+ background-color: #ff0;
+ color: #000;
+}
+
+small {
+ font-size: 80%;
+}
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+img {
+ border-style: none;
+}
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+figure {
+ margin: 1em 40px;
+}
+
+hr {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible;
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font: inherit;
+ margin: 0;
+}
+
+optgroup {
+ font-weight: bold;
+}
+
+button,
+input {
+ overflow: visible;
+}
+
+button,
+select {
+ text-transform: none;
+}
+
+button,
+html [type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+legend {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ display: table;
+ max-width: 100%;
+ padding: 0;
+ white-space: normal;
+}
+
+textarea {
+ overflow: auto;
+}
+
+[type="checkbox"],
+[type="radio"] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0;
+}
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+[type="search"] {
+ -webkit-appearance: textfield;
+ outline-offset: -2px;
+}
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+::-webkit-input-placeholder {
+ color: inherit;
+ opacity: 0.54;
+}
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ font: inherit;
+}
+
+@media print {
+ *,
+ *::before,
+ *::after,
+ *::first-letter,
+ p::first-line,
+ div::first-line,
+ blockquote::first-line,
+ li::first-line {
+ text-shadow: none !important;
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ abbr[title]::after {
+ content: " (" attr(title) ")";
+ }
+ pre {
+ white-space: pre-wrap !important;
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ .navbar {
+ display: none;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .tag {
+ 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;
+ }
+}
+
+html {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+*,
+*::before,
+*::after {
+ -webkit-box-sizing: inherit;
+ box-sizing: inherit;
+}
+
+@-ms-viewport {
+ width: device-width;
+}
+
+html {
+ font-size: 16px;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: transparent;
+}
+
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ font-size: 1rem;
+ line-height: 1.5;
+ color: #373a3c;
+ background-color: #fff;
+}
+
+[tabindex="-1"]:focus {
+ outline: none !important;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin-top: 0;
+ margin-bottom: .5rem;
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #818a91;
+}
+
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit;
+}
+
+ol,
+ul,
+dl {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+ margin-bottom: 0;
+}
+
+dt {
+ font-weight: bold;
+}
+
+dd {
+ margin-bottom: .5rem;
+ margin-left: 0;
+}
+
+blockquote {
+ margin: 0 0 1rem;
+}
+
+a {
+ color: #0275d8;
+ text-decoration: none;
+}
+
+a:focus, a:hover {
+ color: #014c8c;
+ text-decoration: underline;
+}
+
+a:focus {
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+a:not([href]):not([tabindex]) {
+ color: inherit;
+ text-decoration: none;
+}
+
+a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
+ color: inherit;
+ text-decoration: none;
+}
+
+a:not([href]):not([tabindex]):focus {
+ outline: none;
+}
+
+pre {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ overflow: auto;
+}
+
+figure {
+ margin: 0 0 1rem;
+}
+
+img {
+ vertical-align: middle;
+}
+
+[role="button"] {
+ cursor: pointer;
+}
+
+a,
+area,
+button,
+[role="button"],
+input,
+label,
+select,
+summary,
+textarea {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+}
+
+table {
+ border-collapse: collapse;
+ background-color: transparent;
+}
+
+caption {
+ padding-top: 0.75rem;
+ padding-bottom: 0.75rem;
+ color: #818a91;
+ text-align: left;
+ caption-side: bottom;
+}
+
+th {
+ text-align: left;
+}
+
+label {
+ display: inline-block;
+ margin-bottom: .5rem;
+}
+
+button:focus {
+ outline: 1px dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+}
+
+input,
+button,
+select,
+textarea {
+ line-height: inherit;
+}
+
+input[type="radio"]:disabled,
+input[type="checkbox"]:disabled {
+ cursor: not-allowed;
+}
+
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+ -webkit-appearance: listbox;
+}
+
+textarea {
+ resize: vertical;
+}
+
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: .5rem;
+ font-size: 1.5rem;
+ line-height: inherit;
+}
+
+input[type="search"] {
+ -webkit-appearance: none;
+}
+
+output {
+ display: inline-block;
+}
+
+[hidden] {
+ display: none !important;
+}
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+ margin-bottom: 0.5rem;
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+ color: inherit;
+}
+
+h1, .h1 {
+ font-size: 2.5rem;
+}
+
+h2, .h2 {
+ font-size: 2rem;
+}
+
+h3, .h3 {
+ font-size: 1.75rem;
+}
+
+h4, .h4 {
+ font-size: 1.5rem;
+}
+
+h5, .h5 {
+ font-size: 1.25rem;
+}
+
+h6, .h6 {
+ font-size: 1rem;
+}
+
+.lead {
+ font-size: 1.25rem;
+ font-weight: 300;
+}
+
+.display-1 {
+ font-size: 6rem;
+ font-weight: 300;
+}
+
+.display-2 {
+ font-size: 5.5rem;
+ font-weight: 300;
+}
+
+.display-3 {
+ font-size: 4.5rem;
+ font-weight: 300;
+}
+
+.display-4 {
+ font-size: 3.5rem;
+ font-weight: 300;
+}
+
+hr {
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+ border: 0;
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+small,
+.small {
+ font-size: 80%;
+ font-weight: normal;
+}
+
+mark,
+.mark {
+ padding: 0.2em;
+ background-color: #fcf8e3;
+}
+
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline-item {
+ display: inline-block;
+}
+
+.list-inline-item:not(:last-child) {
+ margin-right: 5px;
+}
+
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+
+.blockquote {
+ padding: 0.5rem 1rem;
+ margin-bottom: 1rem;
+ font-size: 1.25rem;
+ border-left: 0.25rem solid #eceeef;
+}
+
+.blockquote-footer {
+ display: block;
+ font-size: 80%;
+ color: #818a91;
+}
+
+.blockquote-footer::before {
+ content: "\2014 \00A0";
+}
+
+.blockquote-reverse {
+ padding-right: 1rem;
+ padding-left: 0;
+ text-align: right;
+ border-right: 0.25rem solid #eceeef;
+ border-left: 0;
+}
+
+.blockquote-reverse .blockquote-footer::before {
+ content: "";
+}
+
+.blockquote-reverse .blockquote-footer::after {
+ content: "\00A0 \2014";
+}
+
+dl.row > dd + dt {
+ clear: left;
+}
+
+.img-fluid, .carousel-inner > .carousel-item > img,
+.carousel-inner > .carousel-item > a > img {
+ max-width: 100%;
+ height: auto;
+}
+
+.img-thumbnail {
+ padding: 0.25rem;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 0.25rem;
+ -webkit-transition: all .2s ease-in-out;
+ -o-transition: all .2s ease-in-out;
+ transition: all .2s ease-in-out;
+ max-width: 100%;
+ height: auto;
+}
+
+.figure {
+ display: inline-block;
+}
+
+.figure-img {
+ margin-bottom: 0.5rem;
+ line-height: 1;
+}
+
+.figure-caption {
+ font-size: 90%;
+ color: #818a91;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+}
+
+code {
+ padding: 0.2rem 0.4rem;
+ font-size: 90%;
+ color: #bd4147;
+ background-color: #f7f7f9;
+ border-radius: 0.25rem;
+}
+
+kbd {
+ padding: 0.2rem 0.4rem;
+ font-size: 90%;
+ color: #fff;
+ background-color: #333;
+ border-radius: 0.2rem;
+}
+
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+}
+
+pre {
+ display: block;
+ margin-top: 0;
+ margin-bottom: 1rem;
+ font-size: 90%;
+ color: #373a3c;
+}
+
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ background-color: transparent;
+ border-radius: 0;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+
+.container {
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.container::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (min-width: 576px) {
+ .container {
+ width: 540px;
+ max-width: 100%;
+ }
+}
+
+@media (min-width: 768px) {
+ .container {
+ width: 720px;
+ max-width: 100%;
+ }
+}
+
+@media (min-width: 992px) {
+ .container {
+ width: 960px;
+ max-width: 100%;
+ }
+}
+
+@media (min-width: 1200px) {
+ .container {
+ width: 1140px;
+ max-width: 100%;
+ }
+}
+
+.container-fluid {
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.container-fluid::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.row {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+.row::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (min-width: 576px) {
+ .row {
+ margin-right: -15px;
+ margin-left: -15px;
+ }
+}
+
+@media (min-width: 768px) {
+ .row {
+ margin-right: -15px;
+ margin-left: -15px;
+ }
+}
+
+@media (min-width: 992px) {
+ .row {
+ margin-right: -15px;
+ margin-left: -15px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .row {
+ margin-right: -15px;
+ margin-left: -15px;
+ }
+}
+
+.col-xs, .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, .col-sm, .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, .col-md, .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, .col-lg, .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, .col-xl, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12 {
+ position: relative;
+ min-height: 1px;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+
+@media (min-width: 576px) {
+ .col-xs, .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, .col-sm, .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, .col-md, .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, .col-lg, .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, .col-xl, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12 {
+ padding-right: 15px;
+ padding-left: 15px;
+ }
+}
+
+@media (min-width: 768px) {
+ .col-xs, .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, .col-sm, .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, .col-md, .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, .col-lg, .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, .col-xl, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12 {
+ padding-right: 15px;
+ padding-left: 15px;
+ }
+}
+
+@media (min-width: 992px) {
+ .col-xs, .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, .col-sm, .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, .col-md, .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, .col-lg, .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, .col-xl, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12 {
+ padding-right: 15px;
+ padding-left: 15px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .col-xs, .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, .col-sm, .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, .col-md, .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, .col-lg, .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, .col-xl, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12 {
+ padding-right: 15px;
+ padding-left: 15px;
+ }
+}
+
+.col-xs-1 {
+ float: left;
+ width: 8.333333%;
+}
+
+.col-xs-2 {
+ float: left;
+ width: 16.666667%;
+}
+
+.col-xs-3 {
+ float: left;
+ width: 25%;
+}
+
+.col-xs-4 {
+ float: left;
+ width: 33.333333%;
+}
+
+.col-xs-5 {
+ float: left;
+ width: 41.666667%;
+}
+
+.col-xs-6 {
+ float: left;
+ width: 50%;
+}
+
+.col-xs-7 {
+ float: left;
+ width: 58.333333%;
+}
+
+.col-xs-8 {
+ float: left;
+ width: 66.666667%;
+}
+
+.col-xs-9 {
+ float: left;
+ width: 75%;
+}
+
+.col-xs-10 {
+ float: left;
+ width: 83.333333%;
+}
+
+.col-xs-11 {
+ float: left;
+ width: 91.666667%;
+}
+
+.col-xs-12 {
+ float: left;
+ width: 100%;
+}
+
+.pull-xs-0 {
+ right: auto;
+}
+
+.pull-xs-1 {
+ right: 8.333333%;
+}
+
+.pull-xs-2 {
+ right: 16.666667%;
+}
+
+.pull-xs-3 {
+ right: 25%;
+}
+
+.pull-xs-4 {
+ right: 33.333333%;
+}
+
+.pull-xs-5 {
+ right: 41.666667%;
+}
+
+.pull-xs-6 {
+ right: 50%;
+}
+
+.pull-xs-7 {
+ right: 58.333333%;
+}
+
+.pull-xs-8 {
+ right: 66.666667%;
+}
+
+.pull-xs-9 {
+ right: 75%;
+}
+
+.pull-xs-10 {
+ right: 83.333333%;
+}
+
+.pull-xs-11 {
+ right: 91.666667%;
+}
+
+.pull-xs-12 {
+ right: 100%;
+}
+
+.push-xs-0 {
+ left: auto;
+}
+
+.push-xs-1 {
+ left: 8.333333%;
+}
+
+.push-xs-2 {
+ left: 16.666667%;
+}
+
+.push-xs-3 {
+ left: 25%;
+}
+
+.push-xs-4 {
+ left: 33.333333%;
+}
+
+.push-xs-5 {
+ left: 41.666667%;
+}
+
+.push-xs-6 {
+ left: 50%;
+}
+
+.push-xs-7 {
+ left: 58.333333%;
+}
+
+.push-xs-8 {
+ left: 66.666667%;
+}
+
+.push-xs-9 {
+ left: 75%;
+}
+
+.push-xs-10 {
+ left: 83.333333%;
+}
+
+.push-xs-11 {
+ left: 91.666667%;
+}
+
+.push-xs-12 {
+ left: 100%;
+}
+
+.offset-xs-1 {
+ margin-left: 8.333333%;
+}
+
+.offset-xs-2 {
+ margin-left: 16.666667%;
+}
+
+.offset-xs-3 {
+ margin-left: 25%;
+}
+
+.offset-xs-4 {
+ margin-left: 33.333333%;
+}
+
+.offset-xs-5 {
+ margin-left: 41.666667%;
+}
+
+.offset-xs-6 {
+ margin-left: 50%;
+}
+
+.offset-xs-7 {
+ margin-left: 58.333333%;
+}
+
+.offset-xs-8 {
+ margin-left: 66.666667%;
+}
+
+.offset-xs-9 {
+ margin-left: 75%;
+}
+
+.offset-xs-10 {
+ margin-left: 83.333333%;
+}
+
+.offset-xs-11 {
+ margin-left: 91.666667%;
+}
+
+@media (min-width: 576px) {
+ .col-sm-1 {
+ float: left;
+ width: 8.333333%;
+ }
+ .col-sm-2 {
+ float: left;
+ width: 16.666667%;
+ }
+ .col-sm-3 {
+ float: left;
+ width: 25%;
+ }
+ .col-sm-4 {
+ float: left;
+ width: 33.333333%;
+ }
+ .col-sm-5 {
+ float: left;
+ width: 41.666667%;
+ }
+ .col-sm-6 {
+ float: left;
+ width: 50%;
+ }
+ .col-sm-7 {
+ float: left;
+ width: 58.333333%;
+ }
+ .col-sm-8 {
+ float: left;
+ width: 66.666667%;
+ }
+ .col-sm-9 {
+ float: left;
+ width: 75%;
+ }
+ .col-sm-10 {
+ float: left;
+ width: 83.333333%;
+ }
+ .col-sm-11 {
+ float: left;
+ width: 91.666667%;
+ }
+ .col-sm-12 {
+ float: left;
+ width: 100%;
+ }
+ .pull-sm-0 {
+ right: auto;
+ }
+ .pull-sm-1 {
+ right: 8.333333%;
+ }
+ .pull-sm-2 {
+ right: 16.666667%;
+ }
+ .pull-sm-3 {
+ right: 25%;
+ }
+ .pull-sm-4 {
+ right: 33.333333%;
+ }
+ .pull-sm-5 {
+ right: 41.666667%;
+ }
+ .pull-sm-6 {
+ right: 50%;
+ }
+ .pull-sm-7 {
+ right: 58.333333%;
+ }
+ .pull-sm-8 {
+ right: 66.666667%;
+ }
+ .pull-sm-9 {
+ right: 75%;
+ }
+ .pull-sm-10 {
+ right: 83.333333%;
+ }
+ .pull-sm-11 {
+ right: 91.666667%;
+ }
+ .pull-sm-12 {
+ right: 100%;
+ }
+ .push-sm-0 {
+ left: auto;
+ }
+ .push-sm-1 {
+ left: 8.333333%;
+ }
+ .push-sm-2 {
+ left: 16.666667%;
+ }
+ .push-sm-3 {
+ left: 25%;
+ }
+ .push-sm-4 {
+ left: 33.333333%;
+ }
+ .push-sm-5 {
+ left: 41.666667%;
+ }
+ .push-sm-6 {
+ left: 50%;
+ }
+ .push-sm-7 {
+ left: 58.333333%;
+ }
+ .push-sm-8 {
+ left: 66.666667%;
+ }
+ .push-sm-9 {
+ left: 75%;
+ }
+ .push-sm-10 {
+ left: 83.333333%;
+ }
+ .push-sm-11 {
+ left: 91.666667%;
+ }
+ .push-sm-12 {
+ left: 100%;
+ }
+ .offset-sm-0 {
+ margin-left: 0%;
+ }
+ .offset-sm-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-sm-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-sm-3 {
+ margin-left: 25%;
+ }
+ .offset-sm-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-sm-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-sm-6 {
+ margin-left: 50%;
+ }
+ .offset-sm-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-sm-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-sm-9 {
+ margin-left: 75%;
+ }
+ .offset-sm-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-sm-11 {
+ margin-left: 91.666667%;
+ }
+}
+
+@media (min-width: 768px) {
+ .col-md-1 {
+ float: left;
+ width: 8.333333%;
+ }
+ .col-md-2 {
+ float: left;
+ width: 16.666667%;
+ }
+ .col-md-3 {
+ float: left;
+ width: 25%;
+ }
+ .col-md-4 {
+ float: left;
+ width: 33.333333%;
+ }
+ .col-md-5 {
+ float: left;
+ width: 41.666667%;
+ }
+ .col-md-6 {
+ float: left;
+ width: 50%;
+ }
+ .col-md-7 {
+ float: left;
+ width: 58.333333%;
+ }
+ .col-md-8 {
+ float: left;
+ width: 66.666667%;
+ }
+ .col-md-9 {
+ float: left;
+ width: 75%;
+ }
+ .col-md-10 {
+ float: left;
+ width: 83.333333%;
+ }
+ .col-md-11 {
+ float: left;
+ width: 91.666667%;
+ }
+ .col-md-12 {
+ float: left;
+ width: 100%;
+ }
+ .pull-md-0 {
+ right: auto;
+ }
+ .pull-md-1 {
+ right: 8.333333%;
+ }
+ .pull-md-2 {
+ right: 16.666667%;
+ }
+ .pull-md-3 {
+ right: 25%;
+ }
+ .pull-md-4 {
+ right: 33.333333%;
+ }
+ .pull-md-5 {
+ right: 41.666667%;
+ }
+ .pull-md-6 {
+ right: 50%;
+ }
+ .pull-md-7 {
+ right: 58.333333%;
+ }
+ .pull-md-8 {
+ right: 66.666667%;
+ }
+ .pull-md-9 {
+ right: 75%;
+ }
+ .pull-md-10 {
+ right: 83.333333%;
+ }
+ .pull-md-11 {
+ right: 91.666667%;
+ }
+ .pull-md-12 {
+ right: 100%;
+ }
+ .push-md-0 {
+ left: auto;
+ }
+ .push-md-1 {
+ left: 8.333333%;
+ }
+ .push-md-2 {
+ left: 16.666667%;
+ }
+ .push-md-3 {
+ left: 25%;
+ }
+ .push-md-4 {
+ left: 33.333333%;
+ }
+ .push-md-5 {
+ left: 41.666667%;
+ }
+ .push-md-6 {
+ left: 50%;
+ }
+ .push-md-7 {
+ left: 58.333333%;
+ }
+ .push-md-8 {
+ left: 66.666667%;
+ }
+ .push-md-9 {
+ left: 75%;
+ }
+ .push-md-10 {
+ left: 83.333333%;
+ }
+ .push-md-11 {
+ left: 91.666667%;
+ }
+ .push-md-12 {
+ left: 100%;
+ }
+ .offset-md-0 {
+ margin-left: 0%;
+ }
+ .offset-md-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-md-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-md-3 {
+ margin-left: 25%;
+ }
+ .offset-md-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-md-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-md-6 {
+ margin-left: 50%;
+ }
+ .offset-md-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-md-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-md-9 {
+ margin-left: 75%;
+ }
+ .offset-md-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-md-11 {
+ margin-left: 91.666667%;
+ }
+}
+
+@media (min-width: 992px) {
+ .col-lg-1 {
+ float: left;
+ width: 8.333333%;
+ }
+ .col-lg-2 {
+ float: left;
+ width: 16.666667%;
+ }
+ .col-lg-3 {
+ float: left;
+ width: 25%;
+ }
+ .col-lg-4 {
+ float: left;
+ width: 33.333333%;
+ }
+ .col-lg-5 {
+ float: left;
+ width: 41.666667%;
+ }
+ .col-lg-6 {
+ float: left;
+ width: 50%;
+ }
+ .col-lg-7 {
+ float: left;
+ width: 58.333333%;
+ }
+ .col-lg-8 {
+ float: left;
+ width: 66.666667%;
+ }
+ .col-lg-9 {
+ float: left;
+ width: 75%;
+ }
+ .col-lg-10 {
+ float: left;
+ width: 83.333333%;
+ }
+ .col-lg-11 {
+ float: left;
+ width: 91.666667%;
+ }
+ .col-lg-12 {
+ float: left;
+ width: 100%;
+ }
+ .pull-lg-0 {
+ right: auto;
+ }
+ .pull-lg-1 {
+ right: 8.333333%;
+ }
+ .pull-lg-2 {
+ right: 16.666667%;
+ }
+ .pull-lg-3 {
+ right: 25%;
+ }
+ .pull-lg-4 {
+ right: 33.333333%;
+ }
+ .pull-lg-5 {
+ right: 41.666667%;
+ }
+ .pull-lg-6 {
+ right: 50%;
+ }
+ .pull-lg-7 {
+ right: 58.333333%;
+ }
+ .pull-lg-8 {
+ right: 66.666667%;
+ }
+ .pull-lg-9 {
+ right: 75%;
+ }
+ .pull-lg-10 {
+ right: 83.333333%;
+ }
+ .pull-lg-11 {
+ right: 91.666667%;
+ }
+ .pull-lg-12 {
+ right: 100%;
+ }
+ .push-lg-0 {
+ left: auto;
+ }
+ .push-lg-1 {
+ left: 8.333333%;
+ }
+ .push-lg-2 {
+ left: 16.666667%;
+ }
+ .push-lg-3 {
+ left: 25%;
+ }
+ .push-lg-4 {
+ left: 33.333333%;
+ }
+ .push-lg-5 {
+ left: 41.666667%;
+ }
+ .push-lg-6 {
+ left: 50%;
+ }
+ .push-lg-7 {
+ left: 58.333333%;
+ }
+ .push-lg-8 {
+ left: 66.666667%;
+ }
+ .push-lg-9 {
+ left: 75%;
+ }
+ .push-lg-10 {
+ left: 83.333333%;
+ }
+ .push-lg-11 {
+ left: 91.666667%;
+ }
+ .push-lg-12 {
+ left: 100%;
+ }
+ .offset-lg-0 {
+ margin-left: 0%;
+ }
+ .offset-lg-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-lg-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-lg-3 {
+ margin-left: 25%;
+ }
+ .offset-lg-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-lg-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-lg-6 {
+ margin-left: 50%;
+ }
+ .offset-lg-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-lg-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-lg-9 {
+ margin-left: 75%;
+ }
+ .offset-lg-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-lg-11 {
+ margin-left: 91.666667%;
+ }
+}
+
+@media (min-width: 1200px) {
+ .col-xl-1 {
+ float: left;
+ width: 8.333333%;
+ }
+ .col-xl-2 {
+ float: left;
+ width: 16.666667%;
+ }
+ .col-xl-3 {
+ float: left;
+ width: 25%;
+ }
+ .col-xl-4 {
+ float: left;
+ width: 33.333333%;
+ }
+ .col-xl-5 {
+ float: left;
+ width: 41.666667%;
+ }
+ .col-xl-6 {
+ float: left;
+ width: 50%;
+ }
+ .col-xl-7 {
+ float: left;
+ width: 58.333333%;
+ }
+ .col-xl-8 {
+ float: left;
+ width: 66.666667%;
+ }
+ .col-xl-9 {
+ float: left;
+ width: 75%;
+ }
+ .col-xl-10 {
+ float: left;
+ width: 83.333333%;
+ }
+ .col-xl-11 {
+ float: left;
+ width: 91.666667%;
+ }
+ .col-xl-12 {
+ float: left;
+ width: 100%;
+ }
+ .pull-xl-0 {
+ right: auto;
+ }
+ .pull-xl-1 {
+ right: 8.333333%;
+ }
+ .pull-xl-2 {
+ right: 16.666667%;
+ }
+ .pull-xl-3 {
+ right: 25%;
+ }
+ .pull-xl-4 {
+ right: 33.333333%;
+ }
+ .pull-xl-5 {
+ right: 41.666667%;
+ }
+ .pull-xl-6 {
+ right: 50%;
+ }
+ .pull-xl-7 {
+ right: 58.333333%;
+ }
+ .pull-xl-8 {
+ right: 66.666667%;
+ }
+ .pull-xl-9 {
+ right: 75%;
+ }
+ .pull-xl-10 {
+ right: 83.333333%;
+ }
+ .pull-xl-11 {
+ right: 91.666667%;
+ }
+ .pull-xl-12 {
+ right: 100%;
+ }
+ .push-xl-0 {
+ left: auto;
+ }
+ .push-xl-1 {
+ left: 8.333333%;
+ }
+ .push-xl-2 {
+ left: 16.666667%;
+ }
+ .push-xl-3 {
+ left: 25%;
+ }
+ .push-xl-4 {
+ left: 33.333333%;
+ }
+ .push-xl-5 {
+ left: 41.666667%;
+ }
+ .push-xl-6 {
+ left: 50%;
+ }
+ .push-xl-7 {
+ left: 58.333333%;
+ }
+ .push-xl-8 {
+ left: 66.666667%;
+ }
+ .push-xl-9 {
+ left: 75%;
+ }
+ .push-xl-10 {
+ left: 83.333333%;
+ }
+ .push-xl-11 {
+ left: 91.666667%;
+ }
+ .push-xl-12 {
+ left: 100%;
+ }
+ .offset-xl-0 {
+ margin-left: 0%;
+ }
+ .offset-xl-1 {
+ margin-left: 8.333333%;
+ }
+ .offset-xl-2 {
+ margin-left: 16.666667%;
+ }
+ .offset-xl-3 {
+ margin-left: 25%;
+ }
+ .offset-xl-4 {
+ margin-left: 33.333333%;
+ }
+ .offset-xl-5 {
+ margin-left: 41.666667%;
+ }
+ .offset-xl-6 {
+ margin-left: 50%;
+ }
+ .offset-xl-7 {
+ margin-left: 58.333333%;
+ }
+ .offset-xl-8 {
+ margin-left: 66.666667%;
+ }
+ .offset-xl-9 {
+ margin-left: 75%;
+ }
+ .offset-xl-10 {
+ margin-left: 83.333333%;
+ }
+ .offset-xl-11 {
+ margin-left: 91.666667%;
+ }
+}
+
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 1rem;
+}
+
+.table th,
+.table td {
+ padding: 0.75rem;
+ vertical-align: top;
+ border-top: 1px solid #eceeef;
+}
+
+.table thead th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #eceeef;
+}
+
+.table tbody + tbody {
+ border-top: 2px solid #eceeef;
+}
+
+.table .table {
+ background-color: #fff;
+}
+
+.table-sm th,
+.table-sm td {
+ padding: 0.3rem;
+}
+
+.table-bordered {
+ border: 1px solid #eceeef;
+}
+
+.table-bordered th,
+.table-bordered td {
+ border: 1px solid #eceeef;
+}
+
+.table-bordered thead th,
+.table-bordered thead td {
+ border-bottom-width: 2px;
+}
+
+.table-striped tbody tr:nth-of-type(odd) {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+
+.table-hover tbody tr:hover {
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.table-active,
+.table-active > th,
+.table-active > td {
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.table-hover .table-active:hover {
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.table-hover .table-active:hover > td,
+.table-hover .table-active:hover > th {
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.table-success,
+.table-success > th,
+.table-success > td {
+ background-color: #dff0d8;
+}
+
+.table-hover .table-success:hover {
+ background-color: #d0e9c6;
+}
+
+.table-hover .table-success:hover > td,
+.table-hover .table-success:hover > th {
+ background-color: #d0e9c6;
+}
+
+.table-info,
+.table-info > th,
+.table-info > td {
+ background-color: #d9edf7;
+}
+
+.table-hover .table-info:hover {
+ background-color: #c4e3f3;
+}
+
+.table-hover .table-info:hover > td,
+.table-hover .table-info:hover > th {
+ background-color: #c4e3f3;
+}
+
+.table-warning,
+.table-warning > th,
+.table-warning > td {
+ background-color: #fcf8e3;
+}
+
+.table-hover .table-warning:hover {
+ background-color: #faf2cc;
+}
+
+.table-hover .table-warning:hover > td,
+.table-hover .table-warning:hover > th {
+ background-color: #faf2cc;
+}
+
+.table-danger,
+.table-danger > th,
+.table-danger > td {
+ background-color: #f2dede;
+}
+
+.table-hover .table-danger:hover {
+ background-color: #ebcccc;
+}
+
+.table-hover .table-danger:hover > td,
+.table-hover .table-danger:hover > th {
+ background-color: #ebcccc;
+}
+
+.thead-inverse th {
+ color: #fff;
+ background-color: #373a3c;
+}
+
+.thead-default th {
+ color: #55595c;
+ background-color: #eceeef;
+}
+
+.table-inverse {
+ color: #eceeef;
+ background-color: #373a3c;
+}
+
+.table-inverse th,
+.table-inverse td,
+.table-inverse thead th {
+ border-color: #55595c;
+}
+
+.table-inverse.table-bordered {
+ border: 0;
+}
+
+.table-responsive {
+ display: block;
+ width: 100%;
+ min-height: 0%;
+ overflow-x: auto;
+}
+
+.table-reflow thead {
+ float: left;
+}
+
+.table-reflow tbody {
+ display: block;
+ white-space: nowrap;
+}
+
+.table-reflow th,
+.table-reflow td {
+ border-top: 1px solid #eceeef;
+ border-left: 1px solid #eceeef;
+}
+
+.table-reflow th:last-child,
+.table-reflow td:last-child {
+ border-right: 1px solid #eceeef;
+}
+
+.table-reflow thead:last-child tr:last-child th,
+.table-reflow thead:last-child tr:last-child td,
+.table-reflow tbody:last-child tr:last-child th,
+.table-reflow tbody:last-child tr:last-child td,
+.table-reflow tfoot:last-child tr:last-child th,
+.table-reflow tfoot:last-child tr:last-child td {
+ border-bottom: 1px solid #eceeef;
+}
+
+.table-reflow tr {
+ float: left;
+}
+
+.table-reflow tr th,
+.table-reflow tr td {
+ display: block !important;
+ border: 1px solid #eceeef;
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ padding: 0.5rem 0.75rem;
+ font-size: 1rem;
+ line-height: 1.25;
+ color: #55595c;
+ background-color: #fff;
+ background-image: none;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 0.25rem;
+}
+
+.form-control::-ms-expand {
+ background-color: transparent;
+ border: 0;
+}
+
+.form-control:focus {
+ color: #55595c;
+ background-color: #fff;
+ border-color: #66afe9;
+ outline: none;
+}
+
+.form-control::-webkit-input-placeholder {
+ color: #999;
+ opacity: 1;
+}
+
+.form-control::-moz-placeholder {
+ color: #999;
+ opacity: 1;
+}
+
+.form-control:-ms-input-placeholder {
+ color: #999;
+ opacity: 1;
+}
+
+.form-control::placeholder {
+ color: #999;
+ opacity: 1;
+}
+
+.form-control:disabled, .form-control[readonly] {
+ background-color: #eceeef;
+ opacity: 1;
+}
+
+.form-control:disabled {
+ cursor: not-allowed;
+}
+
+select.form-control:not([size]):not([multiple]) {
+ height: calc(2.5rem - 2px);
+}
+
+select.form-control:focus::-ms-value {
+ color: #55595c;
+ background-color: #fff;
+}
+
+.form-control-file,
+.form-control-range {
+ display: block;
+}
+
+.col-form-label {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ margin-bottom: 0;
+}
+
+.col-form-label-lg {
+ padding-top: 0.75rem;
+ padding-bottom: 0.75rem;
+ font-size: 1.25rem;
+}
+
+.col-form-label-sm {
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ font-size: 0.875rem;
+}
+
+.col-form-legend {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ margin-bottom: 0;
+ font-size: 1rem;
+}
+
+.form-control-static {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ line-height: 1.25;
+ border: solid transparent;
+ border-width: 1px 0;
+}
+
+.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control,
+.input-group-sm > .form-control-static.input-group-addon,
+.input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control,
+.input-group-lg > .form-control-static.input-group-addon,
+.input-group-lg > .input-group-btn > .form-control-static.btn {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.form-control-sm, .input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: 0.2rem;
+}
+
+select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),
+.input-group-sm > select.input-group-addon:not([size]):not([multiple]),
+.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {
+ height: 1.8125rem;
+}
+
+.form-control-lg, .input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ padding: 0.75rem 1.5rem;
+ font-size: 1.25rem;
+ border-radius: 0.3rem;
+}
+
+select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),
+.input-group-lg > select.input-group-addon:not([size]):not([multiple]),
+.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {
+ height: 3.166667rem;
+}
+
+.form-group {
+ margin-bottom: 1rem;
+}
+
+.form-text {
+ display: block;
+ margin-top: 0.25rem;
+}
+
+.form-check {
+ position: relative;
+ display: block;
+ margin-bottom: 0.75rem;
+}
+
+.form-check + .form-check {
+ margin-top: -.25rem;
+}
+
+.form-check.disabled .form-check-label {
+ color: #818a91;
+ cursor: not-allowed;
+}
+
+.form-check-label {
+ padding-left: 1.25rem;
+ margin-bottom: 0;
+ cursor: pointer;
+}
+
+.form-check-input {
+ position: absolute;
+ margin-top: .25rem;
+ margin-left: -1.25rem;
+}
+
+.form-check-input:only-child {
+ position: static;
+}
+
+.form-check-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 1.25rem;
+ margin-bottom: 0;
+ vertical-align: middle;
+ cursor: pointer;
+}
+
+.form-check-inline + .form-check-inline {
+ margin-left: .75rem;
+}
+
+.form-check-inline.disabled {
+ color: #818a91;
+ cursor: not-allowed;
+}
+
+.form-control-feedback {
+ margin-top: 0.25rem;
+}
+
+.form-control-success,
+.form-control-warning,
+.form-control-danger {
+ padding-right: 2.25rem;
+ background-repeat: no-repeat;
+ background-position: center right 0.625rem;
+ -webkit-background-size: 1.25rem 1.25rem;
+ background-size: 1.25rem 1.25rem;
+}
+
+.has-success .form-control-feedback,
+.has-success .form-control-label,
+.has-success .form-check-label,
+.has-success .form-check-inline,
+.has-success .custom-control {
+ color: #5cb85c;
+}
+
+.has-success .form-control {
+ border-color: #5cb85c;
+}
+
+.has-success .form-control:focus {
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #a3d7a3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #a3d7a3;
+}
+
+.has-success .input-group-addon {
+ color: #5cb85c;
+ border-color: #5cb85c;
+ background-color: #eaf6ea;
+}
+
+.has-success .form-control-success {
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#5cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");
+}
+
+.has-warning .form-control-feedback,
+.has-warning .form-control-label,
+.has-warning .form-check-label,
+.has-warning .form-check-inline,
+.has-warning .custom-control {
+ color: #f0ad4e;
+}
+
+.has-warning .form-control {
+ border-color: #f0ad4e;
+}
+
+.has-warning .form-control:focus {
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f8d9ac;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #f8d9ac;
+}
+
+.has-warning .input-group-addon {
+ color: #f0ad4e;
+ border-color: #f0ad4e;
+ background-color: white;
+}
+
+.has-warning .form-control-warning {
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E");
+}
+
+.has-danger .form-control-feedback,
+.has-danger .form-control-label,
+.has-danger .form-check-label,
+.has-danger .form-check-inline,
+.has-danger .custom-control {
+ color: #d9534f;
+}
+
+.has-danger .form-control {
+ border-color: #d9534f;
+}
+
+.has-danger .form-control:focus {
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #eba5a3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #eba5a3;
+}
+
+.has-danger .input-group-addon {
+ color: #d9534f;
+ border-color: #d9534f;
+ background-color: #fdf7f7;
+}
+
+.has-danger .form-control-danger {
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E");
+}
+
+@media (min-width: 576px) {
+ .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;
+ width: auto;
+ 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 .form-control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-check {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-check-label {
+ padding-left: 0;
+ }
+ .form-inline .form-check-input {
+ position: relative;
+ margin-left: 0;
+ }
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+
+.btn {
+ display: inline-block;
+ font-weight: normal;
+ line-height: 1.25;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ border: 1px solid transparent;
+ padding: 0.5rem 1rem;
+ font-size: 1rem;
+ border-radius: 0.25rem;
+}
+
+.btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus {
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.btn:focus, .btn:hover {
+ text-decoration: none;
+}
+
+.btn.focus {
+ text-decoration: none;
+}
+
+.btn:active, .btn.active {
+ background-image: none;
+ outline: 0;
+}
+
+.btn.disabled, .btn:disabled {
+ cursor: not-allowed;
+ opacity: .65;
+}
+
+a.btn.disabled,
+fieldset[disabled] a.btn {
+ pointer-events: none;
+}
+
+.btn-primary {
+ color: #fff;
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.btn-primary:hover {
+ color: #fff;
+ background-color: #025aa5;
+ border-color: #01549b;
+}
+
+.btn-primary:focus, .btn-primary.focus {
+ color: #fff;
+ background-color: #025aa5;
+ border-color: #01549b;
+}
+
+.btn-primary:active, .btn-primary.active,
+.open > .btn-primary.dropdown-toggle {
+ color: #fff;
+ background-color: #025aa5;
+ border-color: #01549b;
+ background-image: none;
+}
+
+.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus,
+.open > .btn-primary.dropdown-toggle:hover,
+.open > .btn-primary.dropdown-toggle:focus,
+.open > .btn-primary.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #014682;
+ border-color: #01315a;
+}
+
+.btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary:disabled:focus, .btn-primary:disabled.focus {
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.btn-primary.disabled:hover, .btn-primary:disabled:hover {
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.btn-secondary {
+ color: #373a3c;
+ background-color: #fff;
+ border-color: #ccc;
+}
+
+.btn-secondary:hover {
+ color: #373a3c;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+
+.btn-secondary:focus, .btn-secondary.focus {
+ color: #373a3c;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+
+.btn-secondary:active, .btn-secondary.active,
+.open > .btn-secondary.dropdown-toggle {
+ color: #373a3c;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+ background-image: none;
+}
+
+.btn-secondary:active:hover, .btn-secondary:active:focus, .btn-secondary:active.focus, .btn-secondary.active:hover, .btn-secondary.active:focus, .btn-secondary.active.focus,
+.open > .btn-secondary.dropdown-toggle:hover,
+.open > .btn-secondary.dropdown-toggle:focus,
+.open > .btn-secondary.dropdown-toggle.focus {
+ color: #373a3c;
+ background-color: #d4d4d4;
+ border-color: #8c8c8c;
+}
+
+.btn-secondary.disabled:focus, .btn-secondary.disabled.focus, .btn-secondary:disabled:focus, .btn-secondary:disabled.focus {
+ background-color: #fff;
+ border-color: #ccc;
+}
+
+.btn-secondary.disabled:hover, .btn-secondary:disabled:hover {
+ background-color: #fff;
+ border-color: #ccc;
+}
+
+.btn-info {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+
+.btn-info:hover {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #2aabd2;
+}
+
+.btn-info:focus, .btn-info.focus {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #2aabd2;
+}
+
+.btn-info:active, .btn-info.active,
+.open > .btn-info.dropdown-toggle {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #2aabd2;
+ background-image: none;
+}
+
+.btn-info:active:hover, .btn-info:active:focus, .btn-info:active.focus, .btn-info.active:hover, .btn-info.active:focus, .btn-info.active.focus,
+.open > .btn-info.dropdown-toggle:hover,
+.open > .btn-info.dropdown-toggle:focus,
+.open > .btn-info.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #269abc;
+ border-color: #1f7e9a;
+}
+
+.btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info:disabled:focus, .btn-info:disabled.focus {
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+
+.btn-info.disabled:hover, .btn-info:disabled:hover {
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+
+.btn-success {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+.btn-success:hover {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #419641;
+}
+
+.btn-success:focus, .btn-success.focus {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #419641;
+}
+
+.btn-success:active, .btn-success.active,
+.open > .btn-success.dropdown-toggle {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #419641;
+ background-image: none;
+}
+
+.btn-success:active:hover, .btn-success:active:focus, .btn-success:active.focus, .btn-success.active:hover, .btn-success.active:focus, .btn-success.active.focus,
+.open > .btn-success.dropdown-toggle:hover,
+.open > .btn-success.dropdown-toggle:focus,
+.open > .btn-success.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #398439;
+ border-color: #2d672d;
+}
+
+.btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success:disabled:focus, .btn-success:disabled.focus {
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+.btn-success.disabled:hover, .btn-success:disabled:hover {
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+.btn-warning {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+
+.btn-warning:hover {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #eb9316;
+}
+
+.btn-warning:focus, .btn-warning.focus {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #eb9316;
+}
+
+.btn-warning:active, .btn-warning.active,
+.open > .btn-warning.dropdown-toggle {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #eb9316;
+ background-image: none;
+}
+
+.btn-warning:active:hover, .btn-warning:active:focus, .btn-warning:active.focus, .btn-warning.active:hover, .btn-warning.active:focus, .btn-warning.active.focus,
+.open > .btn-warning.dropdown-toggle:hover,
+.open > .btn-warning.dropdown-toggle:focus,
+.open > .btn-warning.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #d58512;
+ border-color: #b06d0f;
+}
+
+.btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning:disabled:focus, .btn-warning:disabled.focus {
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+
+.btn-warning.disabled:hover, .btn-warning:disabled:hover {
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+
+.btn-danger {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+
+.btn-danger:hover {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #c12e2a;
+}
+
+.btn-danger:focus, .btn-danger.focus {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #c12e2a;
+}
+
+.btn-danger:active, .btn-danger.active,
+.open > .btn-danger.dropdown-toggle {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #c12e2a;
+ background-image: none;
+}
+
+.btn-danger:active:hover, .btn-danger:active:focus, .btn-danger:active.focus, .btn-danger.active:hover, .btn-danger.active:focus, .btn-danger.active.focus,
+.open > .btn-danger.dropdown-toggle:hover,
+.open > .btn-danger.dropdown-toggle:focus,
+.open > .btn-danger.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #ac2925;
+ border-color: #8b211e;
+}
+
+.btn-danger.disabled:focus, .btn-danger.disabled.focus, .btn-danger:disabled:focus, .btn-danger:disabled.focus {
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+
+.btn-danger.disabled:hover, .btn-danger:disabled:hover {
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+
+.btn-outline-primary {
+ color: #0275d8;
+ background-image: none;
+ background-color: transparent;
+ border-color: #0275d8;
+}
+
+.btn-outline-primary:hover {
+ color: #fff;
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.btn-outline-primary:focus, .btn-outline-primary.focus {
+ color: #fff;
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.btn-outline-primary:active, .btn-outline-primary.active,
+.open > .btn-outline-primary.dropdown-toggle {
+ color: #fff;
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.btn-outline-primary:active:hover, .btn-outline-primary:active:focus, .btn-outline-primary:active.focus, .btn-outline-primary.active:hover, .btn-outline-primary.active:focus, .btn-outline-primary.active.focus,
+.open > .btn-outline-primary.dropdown-toggle:hover,
+.open > .btn-outline-primary.dropdown-toggle:focus,
+.open > .btn-outline-primary.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #014682;
+ border-color: #01315a;
+}
+
+.btn-outline-primary.disabled:focus, .btn-outline-primary.disabled.focus, .btn-outline-primary:disabled:focus, .btn-outline-primary:disabled.focus {
+ border-color: #43a7fd;
+}
+
+.btn-outline-primary.disabled:hover, .btn-outline-primary:disabled:hover {
+ border-color: #43a7fd;
+}
+
+.btn-outline-secondary {
+ color: #ccc;
+ background-image: none;
+ background-color: transparent;
+ border-color: #ccc;
+}
+
+.btn-outline-secondary:hover {
+ color: #fff;
+ background-color: #ccc;
+ border-color: #ccc;
+}
+
+.btn-outline-secondary:focus, .btn-outline-secondary.focus {
+ color: #fff;
+ background-color: #ccc;
+ border-color: #ccc;
+}
+
+.btn-outline-secondary:active, .btn-outline-secondary.active,
+.open > .btn-outline-secondary.dropdown-toggle {
+ color: #fff;
+ background-color: #ccc;
+ border-color: #ccc;
+}
+
+.btn-outline-secondary:active:hover, .btn-outline-secondary:active:focus, .btn-outline-secondary:active.focus, .btn-outline-secondary.active:hover, .btn-outline-secondary.active:focus, .btn-outline-secondary.active.focus,
+.open > .btn-outline-secondary.dropdown-toggle:hover,
+.open > .btn-outline-secondary.dropdown-toggle:focus,
+.open > .btn-outline-secondary.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #a1a1a1;
+ border-color: #8c8c8c;
+}
+
+.btn-outline-secondary.disabled:focus, .btn-outline-secondary.disabled.focus, .btn-outline-secondary:disabled:focus, .btn-outline-secondary:disabled.focus {
+ border-color: white;
+}
+
+.btn-outline-secondary.disabled:hover, .btn-outline-secondary:disabled:hover {
+ border-color: white;
+}
+
+.btn-outline-info {
+ color: #5bc0de;
+ background-image: none;
+ background-color: transparent;
+ border-color: #5bc0de;
+}
+
+.btn-outline-info:hover {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+
+.btn-outline-info:focus, .btn-outline-info.focus {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+
+.btn-outline-info:active, .btn-outline-info.active,
+.open > .btn-outline-info.dropdown-toggle {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+
+.btn-outline-info:active:hover, .btn-outline-info:active:focus, .btn-outline-info:active.focus, .btn-outline-info.active:hover, .btn-outline-info.active:focus, .btn-outline-info.active.focus,
+.open > .btn-outline-info.dropdown-toggle:hover,
+.open > .btn-outline-info.dropdown-toggle:focus,
+.open > .btn-outline-info.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #269abc;
+ border-color: #1f7e9a;
+}
+
+.btn-outline-info.disabled:focus, .btn-outline-info.disabled.focus, .btn-outline-info:disabled:focus, .btn-outline-info:disabled.focus {
+ border-color: #b0e1ef;
+}
+
+.btn-outline-info.disabled:hover, .btn-outline-info:disabled:hover {
+ border-color: #b0e1ef;
+}
+
+.btn-outline-success {
+ color: #5cb85c;
+ background-image: none;
+ background-color: transparent;
+ border-color: #5cb85c;
+}
+
+.btn-outline-success:hover {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+.btn-outline-success:focus, .btn-outline-success.focus {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+.btn-outline-success:active, .btn-outline-success.active,
+.open > .btn-outline-success.dropdown-toggle {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+.btn-outline-success:active:hover, .btn-outline-success:active:focus, .btn-outline-success:active.focus, .btn-outline-success.active:hover, .btn-outline-success.active:focus, .btn-outline-success.active.focus,
+.open > .btn-outline-success.dropdown-toggle:hover,
+.open > .btn-outline-success.dropdown-toggle:focus,
+.open > .btn-outline-success.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #398439;
+ border-color: #2d672d;
+}
+
+.btn-outline-success.disabled:focus, .btn-outline-success.disabled.focus, .btn-outline-success:disabled:focus, .btn-outline-success:disabled.focus {
+ border-color: #a3d7a3;
+}
+
+.btn-outline-success.disabled:hover, .btn-outline-success:disabled:hover {
+ border-color: #a3d7a3;
+}
+
+.btn-outline-warning {
+ color: #f0ad4e;
+ background-image: none;
+ background-color: transparent;
+ border-color: #f0ad4e;
+}
+
+.btn-outline-warning:hover {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+
+.btn-outline-warning:focus, .btn-outline-warning.focus {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+
+.btn-outline-warning:active, .btn-outline-warning.active,
+.open > .btn-outline-warning.dropdown-toggle {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+
+.btn-outline-warning:active:hover, .btn-outline-warning:active:focus, .btn-outline-warning:active.focus, .btn-outline-warning.active:hover, .btn-outline-warning.active:focus, .btn-outline-warning.active.focus,
+.open > .btn-outline-warning.dropdown-toggle:hover,
+.open > .btn-outline-warning.dropdown-toggle:focus,
+.open > .btn-outline-warning.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #d58512;
+ border-color: #b06d0f;
+}
+
+.btn-outline-warning.disabled:focus, .btn-outline-warning.disabled.focus, .btn-outline-warning:disabled:focus, .btn-outline-warning:disabled.focus {
+ border-color: #f8d9ac;
+}
+
+.btn-outline-warning.disabled:hover, .btn-outline-warning:disabled:hover {
+ border-color: #f8d9ac;
+}
+
+.btn-outline-danger {
+ color: #d9534f;
+ background-image: none;
+ background-color: transparent;
+ border-color: #d9534f;
+}
+
+.btn-outline-danger:hover {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+
+.btn-outline-danger:focus, .btn-outline-danger.focus {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+
+.btn-outline-danger:active, .btn-outline-danger.active,
+.open > .btn-outline-danger.dropdown-toggle {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+
+.btn-outline-danger:active:hover, .btn-outline-danger:active:focus, .btn-outline-danger:active.focus, .btn-outline-danger.active:hover, .btn-outline-danger.active:focus, .btn-outline-danger.active.focus,
+.open > .btn-outline-danger.dropdown-toggle:hover,
+.open > .btn-outline-danger.dropdown-toggle:focus,
+.open > .btn-outline-danger.dropdown-toggle.focus {
+ color: #fff;
+ background-color: #ac2925;
+ border-color: #8b211e;
+}
+
+.btn-outline-danger.disabled:focus, .btn-outline-danger.disabled.focus, .btn-outline-danger:disabled:focus, .btn-outline-danger:disabled.focus {
+ border-color: #eba5a3;
+}
+
+.btn-outline-danger.disabled:hover, .btn-outline-danger:disabled:hover {
+ border-color: #eba5a3;
+}
+
+.btn-link {
+ font-weight: normal;
+ color: #0275d8;
+ border-radius: 0;
+}
+
+.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {
+ background-color: transparent;
+}
+
+.btn-link, .btn-link:focus, .btn-link:active {
+ border-color: transparent;
+}
+
+.btn-link:hover {
+ border-color: transparent;
+}
+
+.btn-link:focus, .btn-link:hover {
+ color: #014c8c;
+ text-decoration: underline;
+ background-color: transparent;
+}
+
+.btn-link:disabled:focus, .btn-link:disabled:hover {
+ color: #818a91;
+ text-decoration: none;
+}
+
+.btn-lg, .btn-group-lg > .btn {
+ padding: 0.75rem 1.5rem;
+ font-size: 1.25rem;
+ border-radius: 0.3rem;
+}
+
+.btn-sm, .btn-group-sm > .btn {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: 0.2rem;
+}
+
+.btn-block {
+ display: block;
+ width: 100%;
+}
+
+.btn-block + .btn-block {
+ margin-top: 0.5rem;
+}
+
+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;
+}
+
+.collapse.in {
+ display: block;
+}
+
+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;
+ -o-transition-property: height;
+ transition-property: height;
+}
+
+.dropup,
+.dropdown {
+ position: relative;
+}
+
+.dropdown-toggle::after {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 0.3em;
+ vertical-align: middle;
+ content: "";
+ border-top: 0.3em solid;
+ border-right: 0.3em solid transparent;
+ border-left: 0.3em solid transparent;
+}
+
+.dropdown-toggle:focus {
+ outline: 0;
+}
+
+.dropup .dropdown-toggle::after {
+ border-top: 0;
+ border-bottom: 0.3em solid;
+}
+
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 10rem;
+ padding: 0.5rem 0;
+ margin: 0.125rem 0 0;
+ font-size: 1rem;
+ color: #373a3c;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 0.25rem;
+}
+
+.dropdown-divider {
+ height: 1px;
+ margin: 0.5rem 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+
+.dropdown-item {
+ display: block;
+ width: 100%;
+ padding: 3px 1.5rem;
+ clear: both;
+ font-weight: normal;
+ color: #373a3c;
+ text-align: inherit;
+ white-space: nowrap;
+ background: none;
+ border: 0;
+}
+
+.dropdown-item:focus, .dropdown-item:hover {
+ color: #2b2d2f;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+
+.dropdown-item.active, .dropdown-item.active:focus, .dropdown-item.active:hover {
+ color: #fff;
+ text-decoration: none;
+ background-color: #0275d8;
+ outline: 0;
+}
+
+.dropdown-item.disabled, .dropdown-item.disabled:focus, .dropdown-item.disabled:hover {
+ color: #818a91;
+}
+
+.dropdown-item.disabled:focus, .dropdown-item.disabled:hover {
+ 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: 0.5rem 1.5rem;
+ margin-bottom: 0;
+ font-size: 0.875rem;
+ color: #818a91;
+ white-space: nowrap;
+}
+
+.dropdown-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 990;
+}
+
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ content: "";
+ border-top: 0;
+ border-bottom: 0.3em solid;
+}
+
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 0.125rem;
+}
+
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+ margin-bottom: 0;
+}
+
+.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,
+.btn-group-vertical > .btn:focus,
+.btn-group-vertical > .btn:active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover {
+ 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: -0.5rem;
+}
+
+.btn-toolbar::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+ float: left;
+}
+
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+ margin-left: 0.5rem;
+}
+
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.btn-group > .btn-group {
+ float: left;
+}
+
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+
+.btn + .dropdown-toggle-split {
+ padding-right: 0.75rem;
+ padding-left: 0.75rem;
+}
+
+.btn + .dropdown-toggle-split::after {
+ margin-left: 0;
+}
+
+.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
+ padding-right: 0.375rem;
+ padding-left: 0.375rem;
+}
+
+.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
+ padding-right: 1.125rem;
+ padding-left: 1.125rem;
+}
+
+.btn .caret {
+ margin-left: 0;
+}
+
+.btn-lg .caret, .btn-group-lg > .btn .caret {
+ border-width: 0.3em 0.3em 0;
+ border-bottom-width: 0;
+}
+
+.dropup .btn-lg .caret, .dropup .btn-group-lg > .btn .caret {
+ border-width: 0 0.3em 0.3em;
+}
+
+.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::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+
+.input-group {
+ position: relative;
+ width: 100%;
+ display: table;
+ border-collapse: separate;
+}
+
+.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+}
+
+.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {
+ z-index: 3;
+}
+
+.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: 0.5rem 0.75rem;
+ margin-bottom: 0;
+ font-size: 1rem;
+ font-weight: normal;
+ line-height: 1.25;
+ color: #55595c;
+ text-align: center;
+ background-color: #eceeef;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 0.25rem;
+}
+
+.input-group-addon.form-control-sm,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .input-group-addon.btn {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: 0.2rem;
+}
+
+.input-group-addon.form-control-lg,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .input-group-addon.btn {
+ padding: 0.75rem 1.5rem;
+ font-size: 1.25rem;
+ border-radius: 0.3rem;
+}
+
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+
+.input-group .form-control:not(:last-child),
+.input-group-addon:not(:last-child),
+.input-group-btn:not(:last-child) > .btn,
+.input-group-btn:not(:last-child) > .btn-group > .btn,
+.input-group-btn:not(:last-child) > .dropdown-toggle,
+.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.input-group-addon:not(:last-child) {
+ border-right: 0;
+}
+
+.input-group .form-control:not(:first-child),
+.input-group-addon:not(:first-child),
+.input-group-btn:not(:first-child) > .btn,
+.input-group-btn:not(:first-child) > .btn-group > .btn,
+.input-group-btn:not(:first-child) > .dropdown-toggle,
+.input-group-btn:not(:last-child) > .btn:not(:first-child),
+.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.form-control + .input-group-addon:not(:first-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:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {
+ z-index: 3;
+}
+
+.input-group-btn:not(:last-child) > .btn,
+.input-group-btn:not(:last-child) > .btn-group {
+ margin-right: -1px;
+}
+
+.input-group-btn:not(:first-child) > .btn,
+.input-group-btn:not(:first-child) > .btn-group {
+ z-index: 2;
+ margin-left: -1px;
+}
+
+.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,
+.input-group-btn:not(:first-child) > .btn-group:focus,
+.input-group-btn:not(:first-child) > .btn-group:active,
+.input-group-btn:not(:first-child) > .btn-group:hover {
+ z-index: 3;
+}
+
+.custom-control {
+ position: relative;
+ display: inline-block;
+ padding-left: 1.5rem;
+ cursor: pointer;
+}
+
+.custom-control + .custom-control {
+ margin-left: 1rem;
+}
+
+.custom-control-input {
+ position: absolute;
+ z-index: -1;
+ opacity: 0;
+}
+
+.custom-control-input:checked ~ .custom-control-indicator {
+ color: #fff;
+ background-color: #0074d9;
+}
+
+.custom-control-input:focus ~ .custom-control-indicator {
+ -webkit-box-shadow: 0 0 0 0.075rem #fff, 0 0 0 0.2rem #0074d9;
+ box-shadow: 0 0 0 0.075rem #fff, 0 0 0 0.2rem #0074d9;
+}
+
+.custom-control-input:active ~ .custom-control-indicator {
+ color: #fff;
+ background-color: #84c6ff;
+}
+
+.custom-control-input:disabled ~ .custom-control-indicator {
+ cursor: not-allowed;
+ background-color: #eee;
+}
+
+.custom-control-input:disabled ~ .custom-control-description {
+ color: #767676;
+ cursor: not-allowed;
+}
+
+.custom-control-indicator {
+ position: absolute;
+ top: .25rem;
+ left: 0;
+ display: block;
+ width: 1rem;
+ height: 1rem;
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-color: #ddd;
+ background-repeat: no-repeat;
+ background-position: center center;
+ -webkit-background-size: 50% 50%;
+ background-size: 50% 50%;
+}
+
+.custom-checkbox .custom-control-indicator {
+ border-radius: 0.25rem;
+}
+
+.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E");
+}
+
+.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {
+ background-color: #0074d9;
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#fff' d='M0 2h4'/%3E%3C/svg%3E");
+}
+
+.custom-radio .custom-control-indicator {
+ border-radius: 50%;
+}
+
+.custom-radio .custom-control-input:checked ~ .custom-control-indicator {
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#fff'/%3E%3C/svg%3E");
+}
+
+.custom-controls-stacked .custom-control {
+ float: left;
+ clear: left;
+}
+
+.custom-controls-stacked .custom-control + .custom-control {
+ margin-left: 0;
+}
+
+.custom-select {
+ display: inline-block;
+ max-width: 100%;
+ height: calc(2.5rem - 2px);
+ padding: 0.375rem 1.75rem 0.375rem 0.75rem;
+ padding-right: 0.75rem \9;
+ color: #55595c;
+ vertical-align: middle;
+ background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;
+ background-image: none \9;
+ -webkit-background-size: 8px 10px;
+ background-size: 8px 10px;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 0.25rem;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+}
+
+.custom-select:focus {
+ border-color: #51a7e8;
+ outline: none;
+}
+
+.custom-select:focus::-ms-value {
+ color: #55595c;
+ background-color: #fff;
+}
+
+.custom-select:disabled {
+ color: #818a91;
+ cursor: not-allowed;
+ background-color: #eceeef;
+}
+
+.custom-select::-ms-expand {
+ opacity: 0;
+}
+
+.custom-select-sm {
+ padding-top: 0.375rem;
+ padding-bottom: 0.375rem;
+ font-size: 75%;
+}
+
+.custom-file {
+ position: relative;
+ display: inline-block;
+ max-width: 100%;
+ height: 2.5rem;
+ cursor: pointer;
+}
+
+.custom-file-input {
+ min-width: 14rem;
+ max-width: 100%;
+ margin: 0;
+ filter: alpha(opacity=0);
+ opacity: 0;
+}
+
+.custom-file-control {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 5;
+ height: 2.5rem;
+ padding: 0.5rem 1rem;
+ line-height: 1.5;
+ color: #555;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 0.25rem;
+}
+
+.custom-file-control:lang(en)::after {
+ content: "Choose file...";
+}
+
+.custom-file-control::before {
+ position: absolute;
+ top: -1px;
+ right: -1px;
+ bottom: -1px;
+ z-index: 6;
+ display: block;
+ height: 2.5rem;
+ padding: 0.5rem 1rem;
+ line-height: 1.5;
+ color: #555;
+ background-color: #eee;
+ border: 1px solid #ddd;
+ border-radius: 0 0.25rem 0.25rem 0;
+}
+
+.custom-file-control:lang(en)::before {
+ content: "Browse";
+}
+
+.nav {
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+
+.nav-link {
+ display: inline-block;
+}
+
+.nav-link:focus, .nav-link:hover {
+ text-decoration: none;
+}
+
+.nav-link.disabled {
+ color: #818a91;
+}
+
+.nav-link.disabled, .nav-link.disabled:focus, .nav-link.disabled:hover {
+ color: #818a91;
+ cursor: not-allowed;
+ background-color: transparent;
+}
+
+.nav-inline .nav-item {
+ display: inline-block;
+}
+
+.nav-inline .nav-item + .nav-item,
+.nav-inline .nav-link + .nav-link {
+ margin-left: 1rem;
+}
+
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+
+.nav-tabs::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.nav-tabs .nav-item {
+ float: left;
+ margin-bottom: -1px;
+}
+
+.nav-tabs .nav-item + .nav-item {
+ margin-left: 0.2rem;
+}
+
+.nav-tabs .nav-link {
+ display: block;
+ padding: 0.5em 1em;
+ border: 1px solid transparent;
+ border-top-right-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+}
+
+.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {
+ border-color: #eceeef #eceeef #ddd;
+}
+
+.nav-tabs .nav-link.disabled, .nav-tabs .nav-link.disabled:focus, .nav-tabs .nav-link.disabled:hover {
+ color: #818a91;
+ background-color: transparent;
+ border-color: transparent;
+}
+
+.nav-tabs .nav-link.active, .nav-tabs .nav-link.active:focus, .nav-tabs .nav-link.active:hover,
+.nav-tabs .nav-item.open .nav-link,
+.nav-tabs .nav-item.open .nav-link:focus,
+.nav-tabs .nav-item.open .nav-link:hover {
+ color: #55595c;
+ background-color: #fff;
+ border-color: #ddd #ddd transparent;
+}
+
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+
+.nav-pills::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.nav-pills .nav-item {
+ float: left;
+}
+
+.nav-pills .nav-item + .nav-item {
+ margin-left: 0.2rem;
+}
+
+.nav-pills .nav-link {
+ display: block;
+ padding: 0.5em 1em;
+ border-radius: 0.25rem;
+}
+
+.nav-pills .nav-link.active, .nav-pills .nav-link.active:focus, .nav-pills .nav-link.active:hover,
+.nav-pills .nav-item.open .nav-link,
+.nav-pills .nav-item.open .nav-link:focus,
+.nav-pills .nav-item.open .nav-link:hover {
+ color: #fff;
+ cursor: default;
+ background-color: #0275d8;
+}
+
+.nav-stacked .nav-item {
+ display: block;
+ float: none;
+}
+
+.nav-stacked .nav-item + .nav-item {
+ margin-top: 0.2rem;
+ margin-left: 0;
+}
+
+.tab-content > .tab-pane {
+ display: none;
+}
+
+.tab-content > .active {
+ display: block;
+}
+
+.navbar {
+ position: relative;
+ padding: 0.5rem 1rem;
+}
+
+.navbar::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (min-width: 576px) {
+ .navbar {
+ border-radius: 0.25rem;
+ }
+}
+
+.navbar-full {
+ z-index: 1000;
+}
+
+@media (min-width: 576px) {
+ .navbar-full {
+ border-radius: 0;
+ }
+}
+
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+@media (min-width: 576px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+
+.navbar-fixed-top {
+ top: 0;
+}
+
+.navbar-fixed-bottom {
+ bottom: 0;
+}
+
+.navbar-sticky-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1030;
+ width: 100%;
+}
+
+@media (min-width: 576px) {
+ .navbar-sticky-top {
+ border-radius: 0;
+ }
+}
+
+.navbar-brand {
+ float: left;
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ margin-right: 1rem;
+ font-size: 1.25rem;
+ line-height: inherit;
+}
+
+.navbar-brand:focus, .navbar-brand:hover {
+ text-decoration: none;
+}
+
+.navbar-divider {
+ float: left;
+ width: 1px;
+ padding-top: 0.425rem;
+ padding-bottom: 0.425rem;
+ margin-right: 1rem;
+ margin-left: 1rem;
+ overflow: hidden;
+}
+
+.navbar-divider::before {
+ content: "\00a0";
+}
+
+.navbar-text {
+ display: inline-block;
+ padding-top: .425rem;
+ padding-bottom: .425rem;
+}
+
+.navbar-toggler {
+ width: 2.5em;
+ height: 2em;
+ padding: 0.5rem 0.75rem;
+ font-size: 1.25rem;
+ line-height: 1;
+ background: transparent no-repeat center center;
+ -webkit-background-size: 24px 24px;
+ background-size: 24px 24px;
+ border: 1px solid transparent;
+ border-radius: 0.25rem;
+}
+
+.navbar-toggler:focus, .navbar-toggler:hover {
+ text-decoration: none;
+}
+
+.navbar-toggleable-xs::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (max-width: 575px) {
+ .navbar-toggleable-xs .navbar-brand {
+ display: block;
+ float: none;
+ margin-top: .5rem;
+ margin-right: 0;
+ }
+ .navbar-toggleable-xs .navbar-nav {
+ margin-top: .5rem;
+ margin-bottom: .5rem;
+ }
+ .navbar-toggleable-xs .navbar-nav .dropdown-menu {
+ position: static;
+ float: none;
+ }
+}
+
+@media (min-width: 576px) {
+ .navbar-toggleable-xs {
+ display: block;
+ }
+}
+
+.navbar-toggleable-sm::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (max-width: 767px) {
+ .navbar-toggleable-sm .navbar-brand {
+ display: block;
+ float: none;
+ margin-top: .5rem;
+ margin-right: 0;
+ }
+ .navbar-toggleable-sm .navbar-nav {
+ margin-top: .5rem;
+ margin-bottom: .5rem;
+ }
+ .navbar-toggleable-sm .navbar-nav .dropdown-menu {
+ position: static;
+ float: none;
+ }
+}
+
+@media (min-width: 768px) {
+ .navbar-toggleable-sm {
+ display: block;
+ }
+}
+
+.navbar-toggleable-md::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (max-width: 991px) {
+ .navbar-toggleable-md .navbar-brand {
+ display: block;
+ float: none;
+ margin-top: .5rem;
+ margin-right: 0;
+ }
+ .navbar-toggleable-md .navbar-nav {
+ margin-top: .5rem;
+ margin-bottom: .5rem;
+ }
+ .navbar-toggleable-md .navbar-nav .dropdown-menu {
+ position: static;
+ float: none;
+ }
+}
+
+@media (min-width: 992px) {
+ .navbar-toggleable-md {
+ display: block;
+ }
+}
+
+.navbar-toggleable-lg::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (max-width: 1199px) {
+ .navbar-toggleable-lg .navbar-brand {
+ display: block;
+ float: none;
+ margin-top: .5rem;
+ margin-right: 0;
+ }
+ .navbar-toggleable-lg .navbar-nav {
+ margin-top: .5rem;
+ margin-bottom: .5rem;
+ }
+ .navbar-toggleable-lg .navbar-nav .dropdown-menu {
+ position: static;
+ float: none;
+ }
+}
+
+@media (min-width: 1200px) {
+ .navbar-toggleable-lg {
+ display: block;
+ }
+}
+
+.navbar-toggleable-xl {
+ display: block;
+}
+
+.navbar-toggleable-xl::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.navbar-toggleable-xl .navbar-brand {
+ display: block;
+ float: none;
+ margin-top: .5rem;
+ margin-right: 0;
+}
+
+.navbar-toggleable-xl .navbar-nav {
+ margin-top: .5rem;
+ margin-bottom: .5rem;
+}
+
+.navbar-toggleable-xl .navbar-nav .dropdown-menu {
+ position: static;
+ float: none;
+}
+
+.navbar-nav .nav-item {
+ float: left;
+}
+
+.navbar-nav .nav-link {
+ display: block;
+ padding-top: .425rem;
+ padding-bottom: .425rem;
+}
+
+.navbar-nav .nav-link + .nav-link {
+ margin-left: 1rem;
+}
+
+.navbar-nav .nav-item + .nav-item {
+ margin-left: 1rem;
+}
+
+.navbar-light .navbar-brand,
+.navbar-light .navbar-toggler {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover,
+.navbar-light .navbar-toggler:focus,
+.navbar-light .navbar-toggler:hover {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-light .navbar-nav .nav-link {
+ color: rgba(0, 0, 0, 0.5);
+}
+
+.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.navbar-light .navbar-nav .open > .nav-link, .navbar-light .navbar-nav .open > .nav-link:focus, .navbar-light .navbar-nav .open > .nav-link:hover,
+.navbar-light .navbar-nav .active > .nav-link,
+.navbar-light .navbar-nav .active > .nav-link:focus,
+.navbar-light .navbar-nav .active > .nav-link:hover,
+.navbar-light .navbar-nav .nav-link.open,
+.navbar-light .navbar-nav .nav-link.open:focus,
+.navbar-light .navbar-nav .nav-link.open:hover,
+.navbar-light .navbar-nav .nav-link.active,
+.navbar-light .navbar-nav .nav-link.active:focus,
+.navbar-light .navbar-nav .nav-link.active:hover {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.navbar-light .navbar-toggler {
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
+ border-color: rgba(0, 0, 0, 0.1);
+}
+
+.navbar-light .navbar-divider {
+ background-color: rgba(0, 0, 0, 0.075);
+}
+
+.navbar-dark .navbar-brand,
+.navbar-dark .navbar-toggler {
+ color: white;
+}
+
+.navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover,
+.navbar-dark .navbar-toggler:focus,
+.navbar-dark .navbar-toggler:hover {
+ color: white;
+}
+
+.navbar-dark .navbar-nav .nav-link {
+ color: rgba(255, 255, 255, 0.5);
+}
+
+.navbar-dark .navbar-nav .nav-link:focus, .navbar-dark .navbar-nav .nav-link:hover {
+ color: rgba(255, 255, 255, 0.75);
+}
+
+.navbar-dark .navbar-nav .open > .nav-link, .navbar-dark .navbar-nav .open > .nav-link:focus, .navbar-dark .navbar-nav .open > .nav-link:hover,
+.navbar-dark .navbar-nav .active > .nav-link,
+.navbar-dark .navbar-nav .active > .nav-link:focus,
+.navbar-dark .navbar-nav .active > .nav-link:hover,
+.navbar-dark .navbar-nav .nav-link.open,
+.navbar-dark .navbar-nav .nav-link.open:focus,
+.navbar-dark .navbar-nav .nav-link.open:hover,
+.navbar-dark .navbar-nav .nav-link.active,
+.navbar-dark .navbar-nav .nav-link.active:focus,
+.navbar-dark .navbar-nav .nav-link.active:hover {
+ color: white;
+}
+
+.navbar-dark .navbar-toggler {
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
+ border-color: rgba(255, 255, 255, 0.1);
+}
+
+.navbar-dark .navbar-divider {
+ background-color: rgba(255, 255, 255, 0.075);
+}
+
+.navbar-toggleable-xs::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (max-width: 575px) {
+ .navbar-toggleable-xs .navbar-nav .nav-item {
+ float: none;
+ margin-left: 0;
+ }
+}
+
+@media (min-width: 576px) {
+ .navbar-toggleable-xs {
+ display: block !important;
+ }
+}
+
+.navbar-toggleable-sm::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (max-width: 767px) {
+ .navbar-toggleable-sm .navbar-nav .nav-item {
+ float: none;
+ margin-left: 0;
+ }
+}
+
+@media (min-width: 768px) {
+ .navbar-toggleable-sm {
+ display: block !important;
+ }
+}
+
+.navbar-toggleable-md::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+@media (max-width: 991px) {
+ .navbar-toggleable-md .navbar-nav .nav-item {
+ float: none;
+ margin-left: 0;
+ }
+}
+
+@media (min-width: 992px) {
+ .navbar-toggleable-md {
+ display: block !important;
+ }
+}
+
+.card {
+ position: relative;
+ display: block;
+ margin-bottom: 0.75rem;
+ background-color: #fff;
+ border-radius: 0.25rem;
+ border: 1px solid rgba(0, 0, 0, 0.125);
+}
+
+.card-block {
+ padding: 1.25rem;
+}
+
+.card-block::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.card-title {
+ margin-bottom: 0.75rem;
+}
+
+.card-subtitle {
+ margin-top: -0.375rem;
+ margin-bottom: 0;
+}
+
+.card-text:last-child {
+ margin-bottom: 0;
+}
+
+.card-link:hover {
+ text-decoration: none;
+}
+
+.card-link + .card-link {
+ margin-left: 1.25rem;
+}
+
+.card > .list-group:first-child .list-group-item:first-child {
+ border-top-right-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+}
+
+.card > .list-group:last-child .list-group-item:last-child {
+ border-bottom-right-radius: 0.25rem;
+ border-bottom-left-radius: 0.25rem;
+}
+
+.card-header {
+ padding: 0.75rem 1.25rem;
+ margin-bottom: 0;
+ background-color: #f5f5f5;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.125);
+}
+
+.card-header::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.card-header:first-child {
+ border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
+}
+
+.card-footer {
+ padding: 0.75rem 1.25rem;
+ background-color: #f5f5f5;
+ border-top: 1px solid rgba(0, 0, 0, 0.125);
+}
+
+.card-footer::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.card-footer:last-child {
+ border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
+}
+
+.card-header-tabs {
+ margin-right: -0.625rem;
+ margin-bottom: -0.75rem;
+ margin-left: -0.625rem;
+ border-bottom: 0;
+}
+
+.card-header-pills {
+ margin-right: -0.625rem;
+ margin-left: -0.625rem;
+}
+
+.card-primary {
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.card-primary .card-header,
+.card-primary .card-footer {
+ background-color: transparent;
+}
+
+.card-success {
+ background-color: #5cb85c;
+ border-color: #5cb85c;
+}
+
+.card-success .card-header,
+.card-success .card-footer {
+ background-color: transparent;
+}
+
+.card-info {
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+
+.card-info .card-header,
+.card-info .card-footer {
+ background-color: transparent;
+}
+
+.card-warning {
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+
+.card-warning .card-header,
+.card-warning .card-footer {
+ background-color: transparent;
+}
+
+.card-danger {
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+
+.card-danger .card-header,
+.card-danger .card-footer {
+ background-color: transparent;
+}
+
+.card-outline-primary {
+ background-color: transparent;
+ border-color: #0275d8;
+}
+
+.card-outline-secondary {
+ background-color: transparent;
+ border-color: #ccc;
+}
+
+.card-outline-info {
+ background-color: transparent;
+ border-color: #5bc0de;
+}
+
+.card-outline-success {
+ background-color: transparent;
+ border-color: #5cb85c;
+}
+
+.card-outline-warning {
+ background-color: transparent;
+ border-color: #f0ad4e;
+}
+
+.card-outline-danger {
+ background-color: transparent;
+ border-color: #d9534f;
+}
+
+.card-inverse .card-header,
+.card-inverse .card-footer {
+ border-color: rgba(255, 255, 255, 0.2);
+}
+
+.card-inverse .card-header,
+.card-inverse .card-footer,
+.card-inverse .card-title,
+.card-inverse .card-blockquote {
+ color: #fff;
+}
+
+.card-inverse .card-link,
+.card-inverse .card-text,
+.card-inverse .card-subtitle,
+.card-inverse .card-blockquote .blockquote-footer {
+ color: rgba(255, 255, 255, 0.65);
+}
+
+.card-inverse .card-link:focus, .card-inverse .card-link:hover {
+ color: #fff;
+}
+
+.card-blockquote {
+ padding: 0;
+ margin-bottom: 0;
+ border-left: 0;
+}
+
+.card-img {
+ border-radius: calc(0.25rem - 1px);
+}
+
+.card-img-overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 1.25rem;
+}
+
+.card-img-top {
+ border-top-right-radius: calc(0.25rem - 1px);
+ border-top-left-radius: calc(0.25rem - 1px);
+}
+
+.card-img-bottom {
+ border-bottom-right-radius: calc(0.25rem - 1px);
+ border-bottom-left-radius: calc(0.25rem - 1px);
+}
+
+@media (min-width: 576px) {
+ .card-deck {
+ display: table;
+ width: 100%;
+ margin-bottom: 0.75rem;
+ table-layout: fixed;
+ border-spacing: 1.25rem 0;
+ }
+ .card-deck .card {
+ display: table-cell;
+ margin-bottom: 0;
+ vertical-align: top;
+ }
+ .card-deck-wrapper {
+ margin-right: -1.25rem;
+ margin-left: -1.25rem;
+ }
+}
+
+@media (min-width: 576px) {
+ .card-group {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ }
+ .card-group .card {
+ display: table-cell;
+ vertical-align: top;
+ }
+ .card-group .card + .card {
+ margin-left: 0;
+ border-left: 0;
+ }
+ .card-group .card:first-child {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+ }
+ .card-group .card:first-child .card-img-top {
+ border-top-right-radius: 0;
+ }
+ .card-group .card:first-child .card-img-bottom {
+ border-bottom-right-radius: 0;
+ }
+ .card-group .card:last-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+ }
+ .card-group .card:last-child .card-img-top {
+ border-top-left-radius: 0;
+ }
+ .card-group .card:last-child .card-img-bottom {
+ border-bottom-left-radius: 0;
+ }
+ .card-group .card:not(:first-child):not(:last-child) {
+ border-radius: 0;
+ }
+ .card-group .card:not(:first-child):not(:last-child) .card-img-top,
+ .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {
+ border-radius: 0;
+ }
+}
+
+@media (min-width: 576px) {
+ .card-columns {
+ -webkit-column-count: 3;
+ -moz-column-count: 3;
+ column-count: 3;
+ -webkit-column-gap: 1.25rem;
+ -moz-column-gap: 1.25rem;
+ column-gap: 1.25rem;
+ }
+ .card-columns .card {
+ display: inline-block;
+ width: 100%;
+ }
+}
+
+.breadcrumb {
+ padding: 0.75rem 1rem;
+ margin-bottom: 1rem;
+ list-style: none;
+ background-color: #eceeef;
+ border-radius: 0.25rem;
+}
+
+.breadcrumb::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.breadcrumb-item {
+ float: left;
+}
+
+.breadcrumb-item + .breadcrumb-item::before {
+ display: inline-block;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+ color: #818a91;
+ content: "/";
+}
+
+.breadcrumb-item + .breadcrumb-item:hover::before {
+ text-decoration: underline;
+}
+
+.breadcrumb-item + .breadcrumb-item:hover::before {
+ text-decoration: none;
+}
+
+.breadcrumb-item.active {
+ color: #818a91;
+}
+
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+ border-radius: 0.25rem;
+}
+
+.page-item {
+ display: inline;
+}
+
+.page-item:first-child .page-link {
+ margin-left: 0;
+ border-bottom-left-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+}
+
+.page-item:last-child .page-link {
+ border-bottom-right-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+}
+
+.page-item.active .page-link, .page-item.active .page-link:focus, .page-item.active .page-link:hover {
+ z-index: 2;
+ color: #fff;
+ cursor: default;
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.page-item.disabled .page-link, .page-item.disabled .page-link:focus, .page-item.disabled .page-link:hover {
+ color: #818a91;
+ pointer-events: none;
+ cursor: not-allowed;
+ background-color: #fff;
+ border-color: #ddd;
+}
+
+.page-link {
+ position: relative;
+ float: left;
+ padding: 0.5rem 0.75rem;
+ margin-left: -1px;
+ color: #0275d8;
+ text-decoration: none;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+
+.page-link:focus, .page-link:hover {
+ color: #014c8c;
+ background-color: #eceeef;
+ border-color: #ddd;
+}
+
+.pagination-lg .page-link {
+ padding: 0.75rem 1.5rem;
+ font-size: 1.25rem;
+}
+
+.pagination-lg .page-item:first-child .page-link {
+ border-bottom-left-radius: 0.3rem;
+ border-top-left-radius: 0.3rem;
+}
+
+.pagination-lg .page-item:last-child .page-link {
+ border-bottom-right-radius: 0.3rem;
+ border-top-right-radius: 0.3rem;
+}
+
+.pagination-sm .page-link {
+ padding: 0.275rem 0.75rem;
+ font-size: 0.875rem;
+}
+
+.pagination-sm .page-item:first-child .page-link {
+ border-bottom-left-radius: 0.2rem;
+ border-top-left-radius: 0.2rem;
+}
+
+.pagination-sm .page-item:last-child .page-link {
+ border-bottom-right-radius: 0.2rem;
+ border-top-right-radius: 0.2rem;
+}
+
+.tag {
+ display: inline-block;
+ padding: 0.25em 0.4em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: 0.25rem;
+}
+
+.tag:empty {
+ display: none;
+}
+
+.btn .tag {
+ position: relative;
+ top: -1px;
+}
+
+a.tag:focus, a.tag:hover {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.tag-pill {
+ padding-right: 0.6em;
+ padding-left: 0.6em;
+ border-radius: 10rem;
+}
+
+.tag-default {
+ background-color: #818a91;
+}
+
+.tag-default[href]:focus, .tag-default[href]:hover {
+ background-color: #687077;
+}
+
+.tag-primary {
+ background-color: #0275d8;
+}
+
+.tag-primary[href]:focus, .tag-primary[href]:hover {
+ background-color: #025aa5;
+}
+
+.tag-success {
+ background-color: #5cb85c;
+}
+
+.tag-success[href]:focus, .tag-success[href]:hover {
+ background-color: #449d44;
+}
+
+.tag-info {
+ background-color: #5bc0de;
+}
+
+.tag-info[href]:focus, .tag-info[href]:hover {
+ background-color: #31b0d5;
+}
+
+.tag-warning {
+ background-color: #f0ad4e;
+}
+
+.tag-warning[href]:focus, .tag-warning[href]:hover {
+ background-color: #ec971f;
+}
+
+.tag-danger {
+ background-color: #d9534f;
+}
+
+.tag-danger[href]:focus, .tag-danger[href]:hover {
+ background-color: #c9302c;
+}
+
+.jumbotron {
+ padding: 2rem 1rem;
+ margin-bottom: 2rem;
+ background-color: #eceeef;
+ border-radius: 0.3rem;
+}
+
+@media (min-width: 576px) {
+ .jumbotron {
+ padding: 4rem 2rem;
+ }
+}
+
+.jumbotron-hr {
+ border-top-color: #d0d5d8;
+}
+
+.jumbotron-fluid {
+ padding-right: 0;
+ padding-left: 0;
+ border-radius: 0;
+}
+
+.alert {
+ padding: 0.75rem 1.25rem;
+ margin-bottom: 1rem;
+ border: 1px solid transparent;
+ border-radius: 0.25rem;
+}
+
+.alert-heading {
+ color: inherit;
+}
+
+.alert-link {
+ font-weight: bold;
+}
+
+.alert-dismissible {
+ padding-right: 2.5rem;
+}
+
+.alert-dismissible .close {
+ position: relative;
+ top: -.125rem;
+ right: -1.25rem;
+ color: inherit;
+}
+
+.alert-success {
+ background-color: #dff0d8;
+ border-color: #d0e9c6;
+ color: #3c763d;
+}
+
+.alert-success hr {
+ border-top-color: #c1e2b3;
+}
+
+.alert-success .alert-link {
+ color: #2b542c;
+}
+
+.alert-info {
+ background-color: #d9edf7;
+ border-color: #bcdff1;
+ color: #31708f;
+}
+
+.alert-info hr {
+ border-top-color: #a6d5ec;
+}
+
+.alert-info .alert-link {
+ color: #245269;
+}
+
+.alert-warning {
+ background-color: #fcf8e3;
+ border-color: #faf2cc;
+ color: #8a6d3b;
+}
+
+.alert-warning hr {
+ border-top-color: #f7ecb5;
+}
+
+.alert-warning .alert-link {
+ color: #66512c;
+}
+
+.alert-danger {
+ background-color: #f2dede;
+ border-color: #ebcccc;
+ color: #a94442;
+}
+
+.alert-danger hr {
+ border-top-color: #e4b9b9;
+}
+
+.alert-danger .alert-link {
+ color: #843534;
+}
+
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 1rem 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 1rem 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 1rem 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+.progress {
+ display: block;
+ width: 100%;
+ height: 1rem;
+ margin-bottom: 1rem;
+}
+
+.progress[value] {
+ background-color: #eee;
+ border: 0;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border-radius: 0.25rem;
+}
+
+.progress[value]::-ms-fill {
+ background-color: #0074d9;
+ border: 0;
+}
+
+.progress[value]::-moz-progress-bar {
+ background-color: #0074d9;
+ border-bottom-left-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+}
+
+.progress[value]::-webkit-progress-value {
+ background-color: #0074d9;
+ border-bottom-left-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+}
+
+.progress[value="100"]::-moz-progress-bar {
+ border-bottom-right-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+}
+
+.progress[value="100"]::-webkit-progress-value {
+ border-bottom-right-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+}
+
+.progress[value]::-webkit-progress-bar {
+ background-color: #eee;
+ border-radius: 0.25rem;
+}
+
+base::-moz-progress-bar,
+.progress[value] {
+ background-color: #eee;
+ border-radius: 0.25rem;
+}
+
+@media screen and (min-width: 0\0) {
+ .progress {
+ background-color: #eee;
+ border-radius: 0.25rem;
+ }
+ .progress-bar {
+ display: inline-block;
+ height: 1rem;
+ text-indent: -999rem;
+ background-color: #0074d9;
+ border-bottom-left-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+ }
+ .progress[width="100%"] {
+ border-bottom-right-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+ }
+}
+
+.progress-striped[value]::-webkit-progress-value {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 1rem 1rem;
+ background-size: 1rem 1rem;
+}
+
+.progress-striped[value]::-moz-progress-bar {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 1rem 1rem;
+}
+
+.progress-striped[value]::-ms-fill {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 1rem 1rem;
+}
+
+@media screen and (min-width: 0\0) {
+ .progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 1rem 1rem;
+ background-size: 1rem 1rem;
+ }
+}
+
+.progress-animated[value]::-webkit-progress-value {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+
+.progress-animated[value]::-moz-progress-bar {
+ animation: progress-bar-stripes 2s linear infinite;
+}
+
+@media screen and (min-width: 0\0) {
+ .progress-animated .progress-bar-striped {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+ }
+}
+
+.progress-success[value]::-webkit-progress-value {
+ background-color: #5cb85c;
+}
+
+.progress-success[value]::-moz-progress-bar {
+ background-color: #5cb85c;
+}
+
+.progress-success[value]::-ms-fill {
+ background-color: #5cb85c;
+}
+
+@media screen and (min-width: 0\0) {
+ .progress-success .progress-bar {
+ background-color: #5cb85c;
+ }
+}
+
+.progress-info[value]::-webkit-progress-value {
+ background-color: #5bc0de;
+}
+
+.progress-info[value]::-moz-progress-bar {
+ background-color: #5bc0de;
+}
+
+.progress-info[value]::-ms-fill {
+ background-color: #5bc0de;
+}
+
+@media screen and (min-width: 0\0) {
+ .progress-info .progress-bar {
+ background-color: #5bc0de;
+ }
+}
+
+.progress-warning[value]::-webkit-progress-value {
+ background-color: #f0ad4e;
+}
+
+.progress-warning[value]::-moz-progress-bar {
+ background-color: #f0ad4e;
+}
+
+.progress-warning[value]::-ms-fill {
+ background-color: #f0ad4e;
+}
+
+@media screen and (min-width: 0\0) {
+ .progress-warning .progress-bar {
+ background-color: #f0ad4e;
+ }
+}
+
+.progress-danger[value]::-webkit-progress-value {
+ background-color: #d9534f;
+}
+
+.progress-danger[value]::-moz-progress-bar {
+ background-color: #d9534f;
+}
+
+.progress-danger[value]::-ms-fill {
+ background-color: #d9534f;
+}
+
+@media screen and (min-width: 0\0) {
+ .progress-danger .progress-bar {
+ background-color: #d9534f;
+ }
+}
+
+.media,
+.media-body {
+ overflow: hidden;
+}
+
+.media-body {
+ width: 10000px;
+}
+
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.media-middle {
+ vertical-align: middle;
+}
+
+.media-bottom {
+ vertical-align: bottom;
+}
+
+.media-object {
+ display: block;
+}
+
+.media-object.img-thumbnail {
+ max-width: none;
+}
+
+.media-right {
+ padding-left: 10px;
+}
+
+.media-left {
+ padding-right: 10px;
+}
+
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-group {
+ padding-left: 0;
+ margin-bottom: 0;
+}
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 0.75rem 1.25rem;
+ margin-bottom: -1px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+
+.list-group-item:first-child {
+ border-top-right-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+}
+
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 0.25rem;
+ border-bottom-left-radius: 0.25rem;
+}
+
+.list-group-item.disabled, .list-group-item.disabled:focus, .list-group-item.disabled:hover {
+ color: #818a91;
+ cursor: not-allowed;
+ background-color: #eceeef;
+}
+
+.list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading {
+ color: inherit;
+}
+
+.list-group-item.disabled .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text {
+ color: #818a91;
+}
+
+.list-group-item.active, .list-group-item.active:focus, .list-group-item.active:hover {
+ z-index: 2;
+ color: #fff;
+ text-decoration: none;
+ background-color: #0275d8;
+ border-color: #0275d8;
+}
+
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > .small {
+ color: inherit;
+}
+
+.list-group-item.active .list-group-item-text, .list-group-item.active:focus .list-group-item-text, .list-group-item.active:hover .list-group-item-text {
+ color: #a8d6fe;
+}
+
+.list-group-flush .list-group-item {
+ border-right: 0;
+ border-left: 0;
+ border-radius: 0;
+}
+
+.list-group-item-action {
+ width: 100%;
+ color: #555;
+ text-align: inherit;
+}
+
+.list-group-item-action .list-group-item-heading {
+ color: #333;
+}
+
+.list-group-item-action:focus, .list-group-item-action:hover {
+ color: #555;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+
+.list-group-item-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+}
+
+a.list-group-item-success,
+button.list-group-item-success {
+ color: #3c763d;
+}
+
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+ color: inherit;
+}
+
+a.list-group-item-success:focus, a.list-group-item-success:hover,
+button.list-group-item-success:focus,
+button.list-group-item-success:hover {
+ color: #3c763d;
+ background-color: #d0e9c6;
+}
+
+a.list-group-item-success.active, a.list-group-item-success.active:focus, a.list-group-item-success.active:hover,
+button.list-group-item-success.active,
+button.list-group-item-success.active:focus,
+button.list-group-item-success.active:hover {
+ color: #fff;
+ background-color: #3c763d;
+ border-color: #3c763d;
+}
+
+.list-group-item-info {
+ color: #31708f;
+ background-color: #d9edf7;
+}
+
+a.list-group-item-info,
+button.list-group-item-info {
+ color: #31708f;
+}
+
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+ color: inherit;
+}
+
+a.list-group-item-info:focus, a.list-group-item-info:hover,
+button.list-group-item-info:focus,
+button.list-group-item-info:hover {
+ color: #31708f;
+ background-color: #c4e3f3;
+}
+
+a.list-group-item-info.active, a.list-group-item-info.active:focus, a.list-group-item-info.active:hover,
+button.list-group-item-info.active,
+button.list-group-item-info.active:focus,
+button.list-group-item-info.active:hover {
+ color: #fff;
+ background-color: #31708f;
+ border-color: #31708f;
+}
+
+.list-group-item-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+}
+
+a.list-group-item-warning,
+button.list-group-item-warning {
+ color: #8a6d3b;
+}
+
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+ color: inherit;
+}
+
+a.list-group-item-warning:focus, a.list-group-item-warning:hover,
+button.list-group-item-warning:focus,
+button.list-group-item-warning:hover {
+ color: #8a6d3b;
+ background-color: #faf2cc;
+}
+
+a.list-group-item-warning.active, a.list-group-item-warning.active:focus, a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active,
+button.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:hover {
+ color: #fff;
+ background-color: #8a6d3b;
+ border-color: #8a6d3b;
+}
+
+.list-group-item-danger {
+ color: #a94442;
+ background-color: #f2dede;
+}
+
+a.list-group-item-danger,
+button.list-group-item-danger {
+ color: #a94442;
+}
+
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+
+a.list-group-item-danger:focus, a.list-group-item-danger:hover,
+button.list-group-item-danger:focus,
+button.list-group-item-danger:hover {
+ color: #a94442;
+ background-color: #ebcccc;
+}
+
+a.list-group-item-danger.active, a.list-group-item-danger.active:focus, a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active,
+button.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:hover {
+ 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;
+}
+
+.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-21by9 {
+ padding-bottom: 42.857143%;
+}
+
+.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+
+.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
+
+.embed-responsive-1by1 {
+ padding-bottom: 100%;
+}
+
+.close {
+ float: right;
+ font-size: 1.5rem;
+ font-weight: bold;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ opacity: .2;
+}
+
+.close:focus, .close:hover {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: .5;
+}
+
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+
+.modal-open {
+ overflow: hidden;
+}
+
+.modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1050;
+ display: none;
+ overflow: hidden;
+ outline: 0;
+}
+
+.modal.fade .modal-dialog {
+ -webkit-transition: -webkit-transform .3s ease-out;
+ transition: -webkit-transform .3s ease-out;
+ -o-transition: -o-transform .3s ease-out;
+ transition: transform .3s ease-out;
+ transition: transform .3s ease-out, -webkit-transform .3s ease-out, -o-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 rgba(0, 0, 0, 0.2);
+ border-radius: 0.3rem;
+ outline: 0;
+}
+
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000;
+}
+
+.modal-backdrop.fade {
+ opacity: 0;
+}
+
+.modal-backdrop.in {
+ opacity: 0.5;
+}
+
+.modal-header {
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+.modal-header::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.modal-header .close {
+ margin-top: -2px;
+}
+
+.modal-title {
+ margin: 0;
+ line-height: 1.5;
+}
+
+.modal-body {
+ position: relative;
+ padding: 15px;
+}
+
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+
+.modal-footer::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+
+@media (min-width: 576px) {
+ .modal-dialog {
+ max-width: 600px;
+ margin: 30px auto;
+ }
+ .modal-sm {
+ max-width: 300px;
+ }
+}
+
+@media (min-width: 992px) {
+ .modal-lg {
+ max-width: 900px;
+ }
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ font-size: 0.875rem;
+ word-wrap: break-word;
+ opacity: 0;
+}
+
+.tooltip.in {
+ opacity: 0.9;
+}
+
+.tooltip.tooltip-top, .tooltip.bs-tether-element-attached-bottom {
+ padding: 5px 0;
+ margin-top: -3px;
+}
+
+.tooltip.tooltip-top .tooltip-inner::before, .tooltip.bs-tether-element-attached-bottom .tooltip-inner::before {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ content: "";
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+
+.tooltip.tooltip-right, .tooltip.bs-tether-element-attached-left {
+ padding: 0 5px;
+ margin-left: 3px;
+}
+
+.tooltip.tooltip-right .tooltip-inner::before, .tooltip.bs-tether-element-attached-left .tooltip-inner::before {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ content: "";
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000;
+}
+
+.tooltip.tooltip-bottom, .tooltip.bs-tether-element-attached-top {
+ padding: 5px 0;
+ margin-top: 3px;
+}
+
+.tooltip.tooltip-bottom .tooltip-inner::before, .tooltip.bs-tether-element-attached-top .tooltip-inner::before {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ content: "";
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+
+.tooltip.tooltip-left, .tooltip.bs-tether-element-attached-right {
+ padding: 0 5px;
+ margin-left: -3px;
+}
+
+.tooltip.tooltip-left .tooltip-inner::before, .tooltip.bs-tether-element-attached-right .tooltip-inner::before {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ content: "";
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000;
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #fff;
+ text-align: center;
+ background-color: #000;
+ border-radius: 0.25rem;
+}
+
+.tooltip-inner::before {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: block;
+ max-width: 276px;
+ padding: 1px;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ line-break: auto;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ white-space: normal;
+ word-break: normal;
+ word-spacing: normal;
+ font-size: 0.875rem;
+ word-wrap: break-word;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 0.3rem;
+}
+
+.popover.popover-top, .popover.bs-tether-element-attached-bottom {
+ margin-top: -10px;
+}
+
+.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {
+ left: 50%;
+ border-bottom-width: 0;
+}
+
+.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {
+ bottom: -11px;
+ margin-left: -11px;
+ border-top-color: rgba(0, 0, 0, 0.25);
+}
+
+.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {
+ bottom: -10px;
+ margin-left: -10px;
+ border-top-color: #fff;
+}
+
+.popover.popover-right, .popover.bs-tether-element-attached-left {
+ margin-left: 10px;
+}
+
+.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {
+ top: 50%;
+ border-left-width: 0;
+}
+
+.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {
+ left: -11px;
+ margin-top: -11px;
+ border-right-color: rgba(0, 0, 0, 0.25);
+}
+
+.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {
+ left: -10px;
+ margin-top: -10px;
+ border-right-color: #fff;
+}
+
+.popover.popover-bottom, .popover.bs-tether-element-attached-top {
+ margin-top: 10px;
+}
+
+.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {
+ left: 50%;
+ border-top-width: 0;
+}
+
+.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {
+ top: -11px;
+ margin-left: -11px;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+}
+
+.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {
+ top: -10px;
+ margin-left: -10px;
+ border-bottom-color: #f7f7f7;
+}
+
+.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ display: block;
+ width: 20px;
+ margin-left: -10px;
+ content: "";
+ border-bottom: 1px solid #f7f7f7;
+}
+
+.popover.popover-left, .popover.bs-tether-element-attached-right {
+ margin-left: -10px;
+}
+
+.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {
+ top: 50%;
+ border-right-width: 0;
+}
+
+.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {
+ right: -11px;
+ margin-top: -11px;
+ border-left-color: rgba(0, 0, 0, 0.25);
+}
+
+.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {
+ right: -10px;
+ margin-top: -10px;
+ border-left-color: #fff;
+}
+
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 1rem;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 0.2375rem 0.2375rem 0 0;
+}
+
+.popover-title:empty {
+ display: none;
+}
+
+.popover-content {
+ padding: 9px 14px;
+}
+
+.popover::before,
+.popover::after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.popover::before {
+ content: "";
+ border-width: 11px;
+}
+
+.popover::after {
+ content: "";
+ border-width: 10px;
+}
+
+.carousel {
+ position: relative;
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+
+.carousel-inner > .carousel-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 > .carousel-item > img,
+.carousel-inner > .carousel-item > a > img {
+ line-height: 1;
+}
+
+@media all and (transform-3d), (-webkit-transform-3d) {
+ .carousel-inner > .carousel-item {
+ -webkit-transition: -webkit-transform .6s ease-in-out;
+ transition: -webkit-transform .6s ease-in-out;
+ -o-transition: -o-transform .6s ease-in-out;
+ transition: transform .6s ease-in-out;
+ transition: transform .6s ease-in-out, -webkit-transform .6s ease-in-out, -o-transform .6s ease-in-out;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000px;
+ perspective: 1000px;
+ }
+ .carousel-inner > .carousel-item.next, .carousel-inner > .carousel-item.active.right {
+ left: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+ .carousel-inner > .carousel-item.prev, .carousel-inner > .carousel-item.active.left {
+ left: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+ .carousel-inner > .carousel-item.next.left, .carousel-inner > .carousel-item.prev.right, .carousel-inner > .carousel-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, 0.6);
+ opacity: 0.5;
+}
+
+.carousel-control.left {
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+}
+
+.carousel-control.right {
+ right: 0;
+ left: auto;
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+}
+
+.carousel-control:focus, .carousel-control:hover {
+ color: #fff;
+ text-decoration: none;
+ outline: 0;
+ opacity: .9;
+}
+
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ font-family: serif;
+ line-height: 1;
+}
+
+.carousel-control .icon-prev {
+ left: 50%;
+ margin-left: -10px;
+}
+
+.carousel-control .icon-next {
+ right: 50%;
+ margin-right: -10px;
+}
+
+.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: transparent;
+ border: 1px solid #fff;
+ border-radius: 10px;
+}
+
+.carousel-indicators .active {
+ width: 12px;
+ height: 12px;
+ margin: 0;
+ background-color: #fff;
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 20px;
+ left: 15%;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+
+.carousel-caption .btn {
+ text-shadow: none;
+}
+
+@media (min-width: 576px) {
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px;
+ }
+ .carousel-control .icon-prev {
+ margin-left: -15px;
+ }
+ .carousel-control .icon-next {
+ margin-right: -15px;
+ }
+ .carousel-caption {
+ right: 20%;
+ left: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+
+.align-baseline {
+ vertical-align: baseline !important;
+}
+
+.align-top {
+ vertical-align: top !important;
+}
+
+.align-middle {
+ vertical-align: middle !important;
+}
+
+.align-bottom {
+ vertical-align: bottom !important;
+}
+
+.align-text-bottom {
+ vertical-align: text-bottom !important;
+}
+
+.align-text-top {
+ vertical-align: text-top !important;
+}
+
+.bg-faded {
+ background-color: #f7f7f9;
+}
+
+.bg-primary {
+ background-color: #0275d8 !important;
+}
+
+a.bg-primary:focus, a.bg-primary:hover {
+ background-color: #025aa5 !important;
+}
+
+.bg-success {
+ background-color: #5cb85c !important;
+}
+
+a.bg-success:focus, a.bg-success:hover {
+ background-color: #449d44 !important;
+}
+
+.bg-info {
+ background-color: #5bc0de !important;
+}
+
+a.bg-info:focus, a.bg-info:hover {
+ background-color: #31b0d5 !important;
+}
+
+.bg-warning {
+ background-color: #f0ad4e !important;
+}
+
+a.bg-warning:focus, a.bg-warning:hover {
+ background-color: #ec971f !important;
+}
+
+.bg-danger {
+ background-color: #d9534f !important;
+}
+
+a.bg-danger:focus, a.bg-danger:hover {
+ background-color: #c9302c !important;
+}
+
+.bg-inverse {
+ background-color: #373a3c !important;
+}
+
+a.bg-inverse:focus, a.bg-inverse:hover {
+ background-color: #1f2021 !important;
+}
+
+.rounded {
+ border-radius: 0.25rem;
+}
+
+.rounded-top {
+ border-top-right-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+}
+
+.rounded-right {
+ border-bottom-right-radius: 0.25rem;
+ border-top-right-radius: 0.25rem;
+}
+
+.rounded-bottom {
+ border-bottom-right-radius: 0.25rem;
+ border-bottom-left-radius: 0.25rem;
+}
+
+.rounded-left {
+ border-bottom-left-radius: 0.25rem;
+ border-top-left-radius: 0.25rem;
+}
+
+.rounded-circle {
+ border-radius: 50%;
+}
+
+.clearfix::after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.d-block {
+ display: block !important;
+}
+
+.d-inline-block {
+ display: inline-block !important;
+}
+
+.d-inline {
+ display: inline !important;
+}
+
+.float-xs-left {
+ float: left !important;
+}
+
+.float-xs-right {
+ float: right !important;
+}
+
+.float-xs-none {
+ float: none !important;
+}
+
+@media (min-width: 576px) {
+ .float-sm-left {
+ float: left !important;
+ }
+ .float-sm-right {
+ float: right !important;
+ }
+ .float-sm-none {
+ float: none !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .float-md-left {
+ float: left !important;
+ }
+ .float-md-right {
+ float: right !important;
+ }
+ .float-md-none {
+ float: none !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .float-lg-left {
+ float: left !important;
+ }
+ .float-lg-right {
+ float: right !important;
+ }
+ .float-lg-none {
+ float: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .float-xl-left {
+ float: left !important;
+ }
+ .float-xl-right {
+ float: right !important;
+ }
+ .float-xl-none {
+ float: none !important;
+ }
+}
+
+.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;
+}
+
+.w-100 {
+ width: 100% !important;
+}
+
+.h-100 {
+ height: 100% !important;
+}
+
+.mx-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+}
+
+.m-0 {
+ margin: 0 0 !important;
+}
+
+.mt-0 {
+ margin-top: 0 !important;
+}
+
+.mr-0 {
+ margin-right: 0 !important;
+}
+
+.mb-0 {
+ margin-bottom: 0 !important;
+}
+
+.ml-0 {
+ margin-left: 0 !important;
+}
+
+.mx-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+}
+
+.my-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+}
+
+.m-1 {
+ margin: 1rem 1rem !important;
+}
+
+.mt-1 {
+ margin-top: 1rem !important;
+}
+
+.mr-1 {
+ margin-right: 1rem !important;
+}
+
+.mb-1 {
+ margin-bottom: 1rem !important;
+}
+
+.ml-1 {
+ margin-left: 1rem !important;
+}
+
+.mx-1 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+}
+
+.my-1 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+}
+
+.m-2 {
+ margin: 1.5rem 1.5rem !important;
+}
+
+.mt-2 {
+ margin-top: 1.5rem !important;
+}
+
+.mr-2 {
+ margin-right: 1.5rem !important;
+}
+
+.mb-2 {
+ margin-bottom: 1.5rem !important;
+}
+
+.ml-2 {
+ margin-left: 1.5rem !important;
+}
+
+.mx-2 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+}
+
+.my-2 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+}
+
+.m-3 {
+ margin: 3rem 3rem !important;
+}
+
+.mt-3 {
+ margin-top: 3rem !important;
+}
+
+.mr-3 {
+ margin-right: 3rem !important;
+}
+
+.mb-3 {
+ margin-bottom: 3rem !important;
+}
+
+.ml-3 {
+ margin-left: 3rem !important;
+}
+
+.mx-3 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+}
+
+.my-3 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+}
+
+.p-0 {
+ padding: 0 0 !important;
+}
+
+.pt-0 {
+ padding-top: 0 !important;
+}
+
+.pr-0 {
+ padding-right: 0 !important;
+}
+
+.pb-0 {
+ padding-bottom: 0 !important;
+}
+
+.pl-0 {
+ padding-left: 0 !important;
+}
+
+.px-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+}
+
+.py-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+}
+
+.p-1 {
+ padding: 1rem 1rem !important;
+}
+
+.pt-1 {
+ padding-top: 1rem !important;
+}
+
+.pr-1 {
+ padding-right: 1rem !important;
+}
+
+.pb-1 {
+ padding-bottom: 1rem !important;
+}
+
+.pl-1 {
+ padding-left: 1rem !important;
+}
+
+.px-1 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+}
+
+.py-1 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+}
+
+.p-2 {
+ padding: 1.5rem 1.5rem !important;
+}
+
+.pt-2 {
+ padding-top: 1.5rem !important;
+}
+
+.pr-2 {
+ padding-right: 1.5rem !important;
+}
+
+.pb-2 {
+ padding-bottom: 1.5rem !important;
+}
+
+.pl-2 {
+ padding-left: 1.5rem !important;
+}
+
+.px-2 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+}
+
+.py-2 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+}
+
+.p-3 {
+ padding: 3rem 3rem !important;
+}
+
+.pt-3 {
+ padding-top: 3rem !important;
+}
+
+.pr-3 {
+ padding-right: 3rem !important;
+}
+
+.pb-3 {
+ padding-bottom: 3rem !important;
+}
+
+.pl-3 {
+ padding-left: 3rem !important;
+}
+
+.px-3 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+}
+
+.py-3 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+}
+
+.pos-f-t {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+.text-justify {
+ text-align: justify !important;
+}
+
+.text-nowrap {
+ white-space: nowrap !important;
+}
+
+.text-truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.text-xs-left {
+ text-align: left !important;
+}
+
+.text-xs-right {
+ text-align: right !important;
+}
+
+.text-xs-center {
+ text-align: center !important;
+}
+
+@media (min-width: 576px) {
+ .text-sm-left {
+ text-align: left !important;
+ }
+ .text-sm-right {
+ text-align: right !important;
+ }
+ .text-sm-center {
+ text-align: center !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .text-md-left {
+ text-align: left !important;
+ }
+ .text-md-right {
+ text-align: right !important;
+ }
+ .text-md-center {
+ text-align: center !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .text-lg-left {
+ text-align: left !important;
+ }
+ .text-lg-right {
+ text-align: right !important;
+ }
+ .text-lg-center {
+ text-align: center !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .text-xl-left {
+ text-align: left !important;
+ }
+ .text-xl-right {
+ text-align: right !important;
+ }
+ .text-xl-center {
+ text-align: center !important;
+ }
+}
+
+.text-lowercase {
+ text-transform: lowercase !important;
+}
+
+.text-uppercase {
+ text-transform: uppercase !important;
+}
+
+.text-capitalize {
+ text-transform: capitalize !important;
+}
+
+.font-weight-normal {
+ font-weight: normal;
+}
+
+.font-weight-bold {
+ font-weight: bold;
+}
+
+.font-italic {
+ font-style: italic;
+}
+
+.text-white {
+ color: #fff !important;
+}
+
+.text-muted {
+ color: #818a91 !important;
+}
+
+a.text-muted:focus, a.text-muted:hover {
+ color: #687077 !important;
+}
+
+.text-primary {
+ color: #0275d8 !important;
+}
+
+a.text-primary:focus, a.text-primary:hover {
+ color: #025aa5 !important;
+}
+
+.text-success {
+ color: #5cb85c !important;
+}
+
+a.text-success:focus, a.text-success:hover {
+ color: #449d44 !important;
+}
+
+.text-info {
+ color: #5bc0de !important;
+}
+
+a.text-info:focus, a.text-info:hover {
+ color: #31b0d5 !important;
+}
+
+.text-warning {
+ color: #f0ad4e !important;
+}
+
+a.text-warning:focus, a.text-warning:hover {
+ color: #ec971f !important;
+}
+
+.text-danger {
+ color: #d9534f !important;
+}
+
+a.text-danger:focus, a.text-danger:hover {
+ color: #c9302c !important;
+}
+
+.text-gray-dark {
+ color: #373a3c !important;
+}
+
+a.text-gray-dark:focus, a.text-gray-dark:hover {
+ color: #1f2021 !important;
+}
+
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+.invisible {
+ visibility: hidden !important;
+}
+
+.hidden-xs-up {
+ display: none !important;
+}
+
+@media (max-width: 575px) {
+ .hidden-xs-down {
+ display: none !important;
+ }
+}
+
+@media (min-width: 576px) {
+ .hidden-sm-up {
+ display: none !important;
+ }
+}
+
+@media (max-width: 767px) {
+ .hidden-sm-down {
+ display: none !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .hidden-md-up {
+ display: none !important;
+ }
+}
+
+@media (max-width: 991px) {
+ .hidden-md-down {
+ display: none !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .hidden-lg-up {
+ display: none !important;
+ }
+}
+
+@media (max-width: 1199px) {
+ .hidden-lg-down {
+ display: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .hidden-xl-up {
+ display: none !important;
+ }
+}
+
+.hidden-xl-down {
+ display: none !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 */
\ No newline at end of file
diff --git a/public/stylesheets/main.css b/public/stylesheets/main.css
new file mode 100644
index 0000000..9100eed
--- /dev/null
+++ b/public/stylesheets/main.css
@@ -0,0 +1,25 @@
+body { color:black; }
+body, p, label { font-size:15px; }
+.label { font-size:13px; line-height:16px; }
+.alert-info { border-color:transparent; background-color:#3A87AD;
+color:white; font-weight:bold; }
+div.screenshot { width: 800px; margin:20px; background-color:#D0E7EF; }
+.navbar-fixed-top .navbar-inner { padding-left:20px; }
+.navbar .nav > li > a { color:#bbb; }
+.screenshot > .container { width: 760px; padding: 20px; }
+.navbar-fixed-top, .navbar-fixed-bottom { position:relative; }
+h1 { font-size:125%; }
+table { border-collapse: collapse; width:100%; }
+th, td { text-align:left; padding: 0.3em 0;
+border-bottom: 1px solid white; }
+tr.odd td { }
+form { float:left; margin-right: 1em; }
+legend { border: none; }
+fieldset > div { margin: 12px 0; }
+.help-block { display: inline; vertical-align: middle; }
+.error .help-block { display: none; }
+.error .help-inline { padding-left: 9px; color: #B94A48; }
+footer { clear: both; text-align: right; }
+dl.products { margin-top: 0; }
+dt { clear: right; }
+.barcode { float:right; margin-bottom: 10px; border: 4px solid white; }
\ No newline at end of file
diff --git a/test/ApplicationSpec.scala b/test/ApplicationSpec.scala
new file mode 100644
index 0000000..63693b6
--- /dev/null
+++ b/test/ApplicationSpec.scala
@@ -0,0 +1,42 @@
+import org.scalatestplus.play._
+import play.api.test._
+import play.api.test.Helpers._
+
+/**
+ * Add your spec here.
+ * You can mock out a whole application including requests, plugins etc.
+ * For more information, consult the wiki.
+ */
+class ApplicationSpec extends PlaySpec with OneAppPerTest {
+
+ "Routes" should {
+
+ "send 404 on a bad request" in {
+ route(app, FakeRequest(GET, "/boum")).map(status(_)) mustBe Some(NOT_FOUND)
+ }
+
+ }
+
+ "HomeController" should {
+
+ "render the index page" in {
+ val home = route(app, FakeRequest(GET, "/")).get
+
+ status(home) mustBe OK
+ contentType(home) mustBe Some("text/html")
+ contentAsString(home) must include ("Your new application is ready.")
+ }
+
+ }
+
+ "CountController" should {
+
+ "return an increasing count" in {
+ contentAsString(route(app, FakeRequest(GET, "/count")).get) mustBe "0"
+ contentAsString(route(app, FakeRequest(GET, "/count")).get) mustBe "1"
+ contentAsString(route(app, FakeRequest(GET, "/count")).get) mustBe "2"
+ }
+
+ }
+
+}
diff --git a/test/IntegrationSpec.scala b/test/IntegrationSpec.scala
new file mode 100644
index 0000000..02637cd
--- /dev/null
+++ b/test/IntegrationSpec.scala
@@ -0,0 +1,20 @@
+import org.scalatestplus.play._
+import play.api.test._
+import play.api.test.Helpers._
+
+/**
+ * add your integration spec here.
+ * An integration test will fire up a whole play application in a real (or headless) browser
+ */
+class IntegrationSpec extends PlaySpec with OneServerPerTest with OneBrowserPerTest with HtmlUnitFactory {
+
+ "Application" should {
+
+ "work from within a browser" in {
+
+ go to ("http://localhost:" + port)
+
+ pageSource must include ("Your new application is ready.")
+ }
+ }
+}