From 0c9216f17a59448457ae8fe349b28274696886b1 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 31 Oct 2017 12:05:54 +0000 Subject: [PATCH 01/24] Update README.md to include default root password --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3a8f1e400..41c3ed577 100644 --- a/README.md +++ b/README.md @@ -745,6 +745,8 @@ If you start SecGen with the "build-project" (or "p") command it creates the abo It is possible to copy the project directory to any compatible system with Vagrant, and simply run "vagrant up" to create the VMs. +The default root password for the base-boxes is 'puppet', but this may be modified by SecGen depending on the scenario used. + ## Roadmap - **More modules!** Including more CTF-style modules. - Windows baseboxes and vulnerabilities. From 2dddfc42e324bd32ec7d751da12f0850c04c7d45 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Fri, 17 Nov 2017 15:45:36 +0000 Subject: [PATCH 02/24] random_string_selector: removed testing code --- .../selector/random_string_selector/secgen_local/local.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/encoders/selector/random_string_selector/secgen_local/local.rb b/modules/encoders/selector/random_string_selector/secgen_local/local.rb index afcfa242a..987b40b13 100644 --- a/modules/encoders/selector/random_string_selector/secgen_local/local.rb +++ b/modules/encoders/selector/random_string_selector/secgen_local/local.rb @@ -6,7 +6,7 @@ class RandomSelectorEncoder < StringEncoder def initialize super self.module_name = 'Random String Selector' - self.position = 'test' + self.position = '' end def encode_all From be454cc8bd23a28eb3c4cdd2c3ab98bd8844bae7 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Fri, 17 Nov 2017 16:45:40 +0000 Subject: [PATCH 03/24] ssh_leaked_keys, no longer requires user_rw. param website doesn't drop a flag by default, additions to .gitignore --- .gitignore | 4 +++- .../unix/http/parameterised_website/secgen_metadata.xml | 3 ++- .../unix/system/ssh_leaked_keys/secgen_metadata.xml | 4 ---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index c5d73d095..089a6f8dd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ unusedcode .DS_Store .idea mount -log \ No newline at end of file +log +batch/failed/ +batch/successful/ \ No newline at end of file diff --git a/modules/services/unix/http/parameterised_website/secgen_metadata.xml b/modules/services/unix/http/parameterised_website/secgen_metadata.xml index 3b298c92a..5421977f1 100644 --- a/modules/services/unix/http/parameterised_website/secgen_metadata.xml +++ b/modules/services/unix/http/parameterised_website/secgen_metadata.xml @@ -11,6 +11,7 @@ http linux + strings_to_leak images_to_leak organisation @@ -34,7 +35,7 @@ - + diff --git a/modules/vulnerabilities/unix/system/ssh_leaked_keys/secgen_metadata.xml b/modules/vulnerabilities/unix/system/ssh_leaked_keys/secgen_metadata.xml index 40a7cd561..814bb5a10 100644 --- a/modules/vulnerabilities/unix/system/ssh_leaked_keys/secgen_metadata.xml +++ b/modules/vulnerabilities/unix/system/ssh_leaked_keys/secgen_metadata.xml @@ -47,8 +47,4 @@ utilities/unix/system/accounts - - - user_rw - \ No newline at end of file From b234263ffdb8b967865194198a905f1c5885970b Mon Sep 17 00:00:00 2001 From: "Z. Cliffe Schreuders" Date: Mon, 20 Nov 2017 11:04:34 +0000 Subject: [PATCH 04/24] README updates --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 3a8f1e400..00a65bd4c 100644 --- a/README.md +++ b/README.md @@ -768,3 +768,10 @@ This project is supported by a Higher Education Academy (HEA) learning and teach We encourage contributions to the project, please see the wiki for guidance on how to contribute. Briefly, please fork from http://github.com/cliffe/SecGen/, create a branch, make and commit your changes, then create a pull request. + +## Resources +Paper: [Z.C. Schreuders, T. Shaw, M. Shan-A-Khuda, G. Ravichandran, J. Keighley, M. Ordean, “Security Scenario Generator (SecGen): A Framework for Generating Randomly Vulnerable Rich-scenario VMs for Learning Computer Security and Hosting CTF Events,” USENIX Workshop on Advances in Security Education (ASE'17), Vancouver, BC, Canada. USENIX Association, 2017.](https://www.usenix.org/conference/ase17/workshop-program/presentation/schreuders) (This paper provides a good overview of SecGen.) + +Paper: [Z.C. Schreuders, and L. Ardern, "Generating randomised virtualised scenarios for ethical hacking and computer security education: SecGen implementation and deployment," in The first UK Workshop on Cybersecurity Training & Education (Vibrant Workshop 2015) Liverpool, UK, 2015.](http://z.cliffe.schreuders.org/publications/VibrantWorkshop2015%20-%20Generating%20randomised%20virtualised%20scenarios%20for%20ethical%20hacking%20and%20computer%20security%20education%20%28SecGen%29.pdf) (This paper describes the first prototype.) + +Podcast interview: [Purple Squad Security Episode 011 – Security Scenario Generator with Dr. Z. Cliffe Schreuders](https://purplesquadsec.com/podcast/episode-011-security-scenario-generator-dr-z-cliffe-schreuders/) From 5ddc9b541fc2612c8821c7d743560ed0cbf01701 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Thu, 11 Jan 2018 18:52:06 +0000 Subject: [PATCH 05/24] tomcat server --- .../services/unix/http/tomcat/CHANGELOG.md | 231 +++ .../services/unix/http/tomcat/CONTRIBUTING.md | 217 ++ modules/services/unix/http/tomcat/Gemfile | 75 + modules/services/unix/http/tomcat/LICENSE | 202 ++ .../services/unix/http/tomcat/MAINTAINERS.md | 6 + modules/services/unix/http/tomcat/NOTICE | 15 + modules/services/unix/http/tomcat/README.md | 1762 ++++++++++++++++ modules/services/unix/http/tomcat/Rakefile | 37 + .../services/unix/http/tomcat/checksums.json | 91 + .../examples/default_install_from_package.pp | 13 + .../examples/default_install_from_source.pp | 9 + .../tomcat/examples/instance_with_context.pp | 20 + .../tomcat/examples/instance_with_listener.pp | 18 + .../tomcat/examples/instance_with_realm.pp | 20 + .../examples/instance_with_role_and_user.pp | 23 + .../examples/jsvc_install_from_source.pp | 37 + .../tomcat/examples/multiple_instances.pp | 38 + .../unix/http/tomcat/locales/config.yaml | 25 + .../tomcat/locales/ja/puppetlabs-tomcat.po | 21 + .../http/tomcat/locales/puppetlabs-tomcat.pot | 18 + .../http/tomcat/manifests/config/context.pp | 32 + .../manifests/config/context/environment.pp | 115 ++ .../manifests/config/context/manager.pp | 69 + .../manifests/config/context/resource.pp | 75 + .../manifests/config/context/resourcelink.pp | 64 + .../tomcat/manifests/config/properties.pp | 22 + .../manifests/config/properties/property.pp | 11 + .../http/tomcat/manifests/config/server.pp | 81 + .../manifests/config/server/connector.pp | 94 + .../tomcat/manifests/config/server/context.pp | 106 + .../tomcat/manifests/config/server/engine.pp | 113 ++ .../config/server/globalnamingresource.pp | 83 + .../tomcat/manifests/config/server/host.pp | 98 + .../manifests/config/server/listener.pp | 98 + .../tomcat/manifests/config/server/realm.pp | 116 ++ .../tomcat/manifests/config/server/service.pp | 60 + .../manifests/config/server/tomcat_users.pp | 111 ++ .../tomcat/manifests/config/server/valve.pp | 89 + .../unix/http/tomcat/manifests/init.pp | 57 + .../unix/http/tomcat/manifests/install.pp | 58 + .../http/tomcat/manifests/install/package.pp | 22 + .../http/tomcat/manifests/install/source.pp | 58 + .../unix/http/tomcat/manifests/instance.pp | 176 ++ .../manifests/instance/copy_from_home.pp | 25 + .../tomcat/manifests/instance/dependencies.pp | 47 + .../unix/http/tomcat/manifests/params.pp | 13 + .../unix/http/tomcat/manifests/service.pp | 177 ++ .../http/tomcat/manifests/setenv/entry.pp | 81 + .../unix/http/tomcat/manifests/war.pp | 83 + .../services/unix/http/tomcat/metadata.json | 80 + .../unix/http/tomcat/readmes/README_ja_JP.md | 1764 +++++++++++++++++ .../unix/http/tomcat/secgen_metadata.xml | 31 + .../spec/acceptance/acceptance_1a_spec.rb | 230 +++ .../spec/acceptance/acceptance_1b_spec.rb | 236 +++ .../spec/acceptance/acceptance_2a_spec.rb | 215 ++ .../spec/acceptance/acceptance_2b_spec.rb | 295 +++ .../spec/acceptance/acceptance_3a_spec.rb | 305 +++ .../spec/acceptance/acceptance_3b_spec.rb | 298 +++ .../spec/acceptance/acceptance_4a_spec.rb | 98 + .../spec/acceptance/acceptance_4b_spec.rb | 99 + .../spec/acceptance/nodesets/centos-7-x64.yml | 10 + .../spec/acceptance/nodesets/debian-8-x64.yml | 10 + .../spec/acceptance/nodesets/default.yml | 10 + .../acceptance/nodesets/docker/centos-7.yml | 12 + .../acceptance/nodesets/docker/debian-8.yml | 11 + .../nodesets/docker/ubuntu-14.04.yml | 12 + .../tomcat/spec/acceptance/readme_spec.rb | 110 + .../http/tomcat/spec/classes/init_spec.rb | 11 + .../http/tomcat/spec/classes/tomcat_spec.rb | 97 + .../config/context/environment_spec.rb | 199 ++ .../defines/config/context/manager_spec.rb | 58 + .../defines/config/context/resource_spec.rb | 67 + .../config/context/resourcelink_spec.rb | 59 + .../spec/defines/config/context_spec.rb | 47 + .../defines/config/server/connector_spec.rb | 202 ++ .../defines/config/server/context_spec.rb | 197 ++ .../spec/defines/config/server/engine_spec.rb | 156 ++ .../spec/defines/config/server/host_spec.rb | 170 ++ .../defines/config/server/listener_spec.rb | 231 +++ .../spec/defines/config/server/realm_spec.rb | 362 ++++ .../defines/config/server/service_spec.rb | 131 ++ .../config/server/tomcat_users_spec.rb | 247 +++ .../spec/defines/config/server/valve_spec.rb | 107 + .../tomcat/spec/defines/config/server_spec.rb | 123 ++ .../http/tomcat/spec/defines/instance_spec.rb | 195 ++ .../http/tomcat/spec/defines/service_spec.rb | 234 +++ .../tomcat/spec/defines/setenv/entry_spec.rb | 106 + .../unix/http/tomcat/spec/defines/war_spec.rb | 166 ++ .../unix/http/tomcat/spec/spec_helper.rb | 8 + .../tomcat/spec/spec_helper_acceptance.rb | 69 + .../unix/http/tomcat/templates/jsvc-init.erb | 263 +++ modules/services/unix/http/tomcat/tomcat.pp | 6 + .../unix/languages/java/secgen_metadata.xml | 1 + 93 files changed, 12450 insertions(+) create mode 100644 modules/services/unix/http/tomcat/CHANGELOG.md create mode 100644 modules/services/unix/http/tomcat/CONTRIBUTING.md create mode 100644 modules/services/unix/http/tomcat/Gemfile create mode 100644 modules/services/unix/http/tomcat/LICENSE create mode 100644 modules/services/unix/http/tomcat/MAINTAINERS.md create mode 100644 modules/services/unix/http/tomcat/NOTICE create mode 100644 modules/services/unix/http/tomcat/README.md create mode 100644 modules/services/unix/http/tomcat/Rakefile create mode 100644 modules/services/unix/http/tomcat/checksums.json create mode 100644 modules/services/unix/http/tomcat/examples/default_install_from_package.pp create mode 100644 modules/services/unix/http/tomcat/examples/default_install_from_source.pp create mode 100644 modules/services/unix/http/tomcat/examples/instance_with_context.pp create mode 100644 modules/services/unix/http/tomcat/examples/instance_with_listener.pp create mode 100644 modules/services/unix/http/tomcat/examples/instance_with_realm.pp create mode 100644 modules/services/unix/http/tomcat/examples/instance_with_role_and_user.pp create mode 100644 modules/services/unix/http/tomcat/examples/jsvc_install_from_source.pp create mode 100644 modules/services/unix/http/tomcat/examples/multiple_instances.pp create mode 100644 modules/services/unix/http/tomcat/locales/config.yaml create mode 100644 modules/services/unix/http/tomcat/locales/ja/puppetlabs-tomcat.po create mode 100644 modules/services/unix/http/tomcat/locales/puppetlabs-tomcat.pot create mode 100644 modules/services/unix/http/tomcat/manifests/config/context.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/context/environment.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/context/manager.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/context/resource.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/context/resourcelink.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/properties.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/properties/property.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/connector.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/context.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/engine.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/globalnamingresource.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/host.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/listener.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/realm.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/service.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/tomcat_users.pp create mode 100644 modules/services/unix/http/tomcat/manifests/config/server/valve.pp create mode 100644 modules/services/unix/http/tomcat/manifests/init.pp create mode 100644 modules/services/unix/http/tomcat/manifests/install.pp create mode 100644 modules/services/unix/http/tomcat/manifests/install/package.pp create mode 100644 modules/services/unix/http/tomcat/manifests/install/source.pp create mode 100644 modules/services/unix/http/tomcat/manifests/instance.pp create mode 100644 modules/services/unix/http/tomcat/manifests/instance/copy_from_home.pp create mode 100644 modules/services/unix/http/tomcat/manifests/instance/dependencies.pp create mode 100644 modules/services/unix/http/tomcat/manifests/params.pp create mode 100644 modules/services/unix/http/tomcat/manifests/service.pp create mode 100644 modules/services/unix/http/tomcat/manifests/setenv/entry.pp create mode 100644 modules/services/unix/http/tomcat/manifests/war.pp create mode 100644 modules/services/unix/http/tomcat/metadata.json create mode 100644 modules/services/unix/http/tomcat/readmes/README_ja_JP.md create mode 100644 modules/services/unix/http/tomcat/secgen_metadata.xml create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/acceptance_1a_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/acceptance_1b_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/acceptance_2a_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/acceptance_2b_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/acceptance_3a_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/acceptance_3b_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/acceptance_4a_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/acceptance_4b_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/nodesets/centos-7-x64.yml create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/nodesets/debian-8-x64.yml create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/nodesets/default.yml create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/centos-7.yml create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/debian-8.yml create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/ubuntu-14.04.yml create mode 100644 modules/services/unix/http/tomcat/spec/acceptance/readme_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/classes/init_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/classes/tomcat_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/context/environment_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/context/manager_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/context/resource_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/context/resourcelink_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/context_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/connector_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/context_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/engine_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/host_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/listener_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/realm_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/service_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/tomcat_users_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server/valve_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/config/server_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/instance_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/service_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/setenv/entry_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/defines/war_spec.rb create mode 100644 modules/services/unix/http/tomcat/spec/spec_helper.rb create mode 100644 modules/services/unix/http/tomcat/spec/spec_helper_acceptance.rb create mode 100755 modules/services/unix/http/tomcat/templates/jsvc-init.erb create mode 100644 modules/services/unix/http/tomcat/tomcat.pp diff --git a/modules/services/unix/http/tomcat/CHANGELOG.md b/modules/services/unix/http/tomcat/CHANGELOG.md new file mode 100644 index 000000000..a1af1e4d2 --- /dev/null +++ b/modules/services/unix/http/tomcat/CHANGELOG.md @@ -0,0 +1,231 @@ +## Supported Release 1.7.0 +### Summary +This release adds support for internationalization of the module. It also contains Japanese translations for the README, summary and description of the metadata.json and major cleanups in the README. Additional folders have been introduced called locales and readmes where translation files can be found. A number of features and bug fixes are also included in this release. + +#### Features +- Addition of POT file for metadata translation for i18n. +- Readme update and edit in preparation for localization. +- Environment can now be passed through to staging, so we can set a proxy to download tomcat. +- Add optional `$type` parameter to globalnamingresources that allows the definition of the element to be used. Use "Environment" to set an environment. +- Allow the resource name to be overridden with a new `$resource_name` parameter. +- Added Ubuntu Xenial support to metadata. +- Bump in puppet-staging module dependancy for allowing newer versions. +- Ability to not manage catalina.properties. + +#### Bugfixes +- (MODULES-4003) Adds a 'require => Tomcat::Install[$name]' to the ensure_resource function. +- (MODULES-4003) Removes logic that checks to see if catalina_base and catalina_home are the same. +- (MODULES-1986) Added newline to the inline template assigned to $_content. +- (MODULES-3224) Added mode attribute to concat resource that sets the executable bit for all permission levels. +- Fix for fixtures.yml, was pointing to nanliu-staging instead of puppet-staging. +- Fix duplicate resources in host/realm/valve. +- Fix faulty header and link in ToC. +- (MODULES-4528) Replace Puppet.version.to_f version comparison from spec_helper.rb. +- Puppet lint warning fix. +- (FM-6166) Updating tomcat tar mirror and test failure message. +- (FM-6166) Removing concat-fragment 'ensure' + + +## Supported Release 1.6.1 +### Summary +This release removes an attempted bugfix made in 1.6.0 for working around strict +umasks. The previous change caused duplicate resource declarations when +downloading a tomcat tarball from `puppet://` or local paths. The umask bug +remains (it is actually present in staging, not tomcat). + +#### Bugfixes +- Fix duplicate resource declarations when using local source paths + +## Supported Release 1.6.0 +### Summary +This release adds two new defines for managing environment variables and manager elements, enhances multi-instance multi-user support, allows valves to be nested in contexts, fixes an issue with installing directly to NFS mounted directories, fixes installation on systems with a strict root umask, + +#### Features +- Add `tomcat::config::context::environment` define +- Add `tomcat::config::context::manager` define +- Add `owner` and `group` to `tomcat::config::server::tomcat_users` +- Add `parent_context` to `tomcat::config::server::valve` +- Add `manage_home` and `manage_base` to `tomcat` class +- Add `manage_home` to `tomcat::install` +- Add `manage_base` to `tomcat::instance` +- Add `doexport` (MODULES-3436), `user`, and `group` to `tomcat::setenv::entry` +- Change from `nanliu/staging` to `puppet/staging` +- Allow `role` to be set for user elements in `tomcat::config::server::tomcat_users` + +#### Bugfixes +- Fix globalresource missing (MODULES-3353) +- Fix strict vars for `tomcat::config::server::service` (MODULES-3742) +- Work around duplicate user resources (PUP-5971) + +## Supported Release 1.5.0 +### Summary +General rewrite of the installation and instance management code, and better +service management. Plus a handful of new configuration defined types and actual +resource dependency ordering. + +The primary improvement is that you may now use `tomcat::install` for installing +various versions of tomcat into various directories (`CATALINA_HOME`), then use +`tomcat::instance` to create instances from those installs (`CATALINA_BASE`). +Previously `tomcat::instance` treated both `CATALINA_HOME` and `CATALINA_BASE` as identical and thus only allowed a single tomcat instance per tomcat installation. + +Additionally, `tomcat::service` allows `use_init => true, use_jsvc => true` to +create an init script for service management of source-based installs. And +`tomcat::instance` can declare a `tomcat::service` resource for your instance to +make life easier. + +#### Features +- Added `tomcat::config::properties::property` define +- Added `tomcat::config::server::globalnamingresource` define +- Added `tomcat::config::context` define +- Added `tomcat::config::context::resource` define +- Added `tomcat::config::context::resourcelink` define +- Added `tomcat::install` define +- Added `tomcat::config::server::host::aliases` parameter +- Added `tomcat::service::user` parameter +- Added `tomcat::setenv::entry` parameters: + - `catalina_home` + - `addto` +- Added `tomcat::instance` parameters for multi-instance management: + - `user` + - `group` + - `manage_user` + - `manage_group` + - `manage_service` + - `java_home` + - `use_jsvc` + - `use_init` +- Added Debian 8 compatibility + +#### Bugfixes +- Fixed conflating `CATALINA_BASE` with `CATALINA_HOME` +- Made `tomcat::config::server::connector` protocol default to `$name` +- Lots of additional validation +- Added resource dependency declaration (so no more `<-` `->` needed) +- Undeprecated `tomcat::setenv::entry::order` parameter + +## Supported Release 1.4.1 +### Summary + +Small release for bug with multiple Realms in the same parent path. + +#### Features +- Improved documentation for purging connectors. +- Improved documentation for purging realms. +- Added package_options to tomcat::instance + +#### Bugfixes +- Fixed bug where multiple Realms in the same parent would corrupt data. +- Added work-around for Augeas bug when purging Realms. + +## Supported Release 1.3.3 +###Summary + +Small release for support of newer PE versions. This increments the version of PE in the metadata.json file. + +## 2015-08-11 - Supported Release 1.3.2 +### Summary +This release fixes username quoting and metadata. + +#### Bugfixes +- Allow username values that contain non-string characters like whitespace +- Validate $catalina\_base +- Correct pe/puppet compatibility metadata + +## 2015-07-16 - Supported Release 1.3.1 +### Summary +This release fixes metadata because it supports puppet 4. + +## 2015-06-09 - Supported Release 1.3.0 +### Summary + +This is a feature release, with a couple of bugfixes and readme changes. + +#### Features +- Update additional_attributes to support values with spaces +- Documentation changes +- Add a manifest for Context Containers in Tomcat configuration +- Manage User and Roles in Realms +- New manifests for context.xml configuration +- Added manifest for managing Realm elements in server.xml +- Ordering of setenv entries +- Adds parameter for enabling Tomcat service on boot +- Add ability to specify server_config location +- Allow configuration of location of server.xml + +#### Bugfixes +- Make sure setenv entries have export +- Test improvements +- version pinning for acceptance tests + +## 2014-11-11 - Supported Release 1.2.0 +### Summary + +This is primarily a feature release, with a couple of bugfixes for tests and metadata. + +#### Features +- Add `install_from_source` parameter to class `tomcat` +- Add `purge_connectors` parameter to class `tomcat` and define `tomcat::server::connector` + +#### Bugfixes +- Fix dependencies to remove missing dependency warnings with the PMT +- Use `curl -k` in the tests + +## 2014-10-28 - Supported Release 1.1.0 +### Summary + +This release includes documentation and test updates, strict variable support, metadata bugs, and added support for multiple connectors with the same protocol. + +### Features +- Strict variable support +- Support multiple connectors with the same protocol +- Update tests to not break when tomcat releases happen +- Update README based on QA feedback + +### Bugfixes +- Update stdlib requirement to 4.2.0 +- Fix illegal version range in metadata.json +- Fix typo in README + +## 2014-09-04 - Supported Release 1.0.1 +### Summary + +This is a bugfix release. + +### Bugfixes +- Fix typo in tomcat::instance +- Update acceptance tests for new tomcat releases + +## 2014-08-27 - Supported Release 1.0.0 +### Summary + +This release has added support for installation from packages, improved WAR management, and updates to testing and documentation. + +### Features +- Updated tomcat::setenv::entry to better support installations from package +- Added the ability to purge auto-exploded WAR directories when removing WARs. Defaults to purging these directories +- Added warnings for unused variables when installing from package +- Updated acceptance tests and nodesets +- Updated README + +### Deprecations +- $tomcat::setenv::entry::base_path is being deprecated in favor of $tomcat::setenv::entry::config_file + +## 2014-08-20 - Release 0.1.2 +### Summary + +This release adds compatibility information and updates the README with information on the requirement of augeas >= 1.0.0. + +## 2014-08-14 - Release 0.1.1 +### Summary + +This is a bugfix release. + +### Bugfixes +- Update 'warn' to correct 'warning' function. +- Update README for use_init. +- Test updates and fixes. + +## 2014-08-06 - Release 0.1.0 +### Summary + +Initial release of the tomcat module. diff --git a/modules/services/unix/http/tomcat/CONTRIBUTING.md b/modules/services/unix/http/tomcat/CONTRIBUTING.md new file mode 100644 index 000000000..990edba7e --- /dev/null +++ b/modules/services/unix/http/tomcat/CONTRIBUTING.md @@ -0,0 +1,217 @@ +Checklist (and a short version for the impatient) +================================================= + + * Commits: + + - Make commits of logical units. + + - Check for unnecessary whitespace with "git diff --check" before + committing. + + - Commit using Unix line endings (check the settings around "crlf" in + git-config(1)). + + - Do not check in commented out code or unneeded files. + + - The first line of the commit message should be a short + description (50 characters is the soft limit, excluding ticket + number(s)), and should skip the full stop. + + - Associate the issue in the message. The first line should include + the issue number in the form "(#XXXX) Rest of message". + + - The body should provide a meaningful commit message, which: + + - uses the imperative, present tense: "change", not "changed" or + "changes". + + - includes motivation for the change, and contrasts its + implementation with the previous behavior. + + - Make sure that you have tests for the bug you are fixing, or + feature you are adding. + + - Make sure the test suites passes after your commit: + `bundle exec rspec spec/acceptance` More information on [testing](#Testing) below + + - When introducing a new feature, make sure it is properly + documented in the README.md + + * Submission: + + * Pre-requisites: + + - Make sure you have a [GitHub account](https://github.com/join) + + - [Create a ticket](https://tickets.puppet.com/secure/CreateIssue!default.jspa), or [watch the ticket](https://tickets.puppet.com/browse/) you are patching for. + + * Preferred method: + + - Fork the repository on GitHub. + + - Push your changes to a topic branch in your fork of the + repository. (the format ticket/1234-short_description_of_change is + usually preferred for this project). + + - Submit a pull request to the repository in the puppetlabs + organization. + +The long version +================ + + 1. Make separate commits for logically separate changes. + + Please break your commits down into logically consistent units + which include new or changed tests relevant to the rest of the + change. The goal of doing this is to make the diff easier to + read for whoever is reviewing your code. In general, the easier + your diff is to read, the more likely someone will be happy to + review it and get it into the code base. + + If you are going to refactor a piece of code, please do so as a + separate commit from your feature or bug fix changes. + + We also really appreciate changes that include tests to make + sure the bug is not re-introduced, and that the feature is not + accidentally broken. + + Describe the technical detail of the change(s). If your + description starts to get too long, that is a good sign that you + probably need to split up your commit into more finely grained + pieces. + + Commits which plainly describe the things which help + reviewers check the patch and future developers understand the + code are much more likely to be merged in with a minimum of + bike-shedding or requested changes. Ideally, the commit message + would include information, and be in a form suitable for + inclusion in the release notes for the version of Puppet that + includes them. + + Please also check that you are not introducing any trailing + whitespace or other "whitespace errors". You can do this by + running "git diff --check" on your changes before you commit. + + 2. Sending your patches + + To submit your changes via a GitHub pull request, we _highly_ + recommend that you have them on a topic branch, instead of + directly on "master". + It makes things much easier to keep track of, especially if + you decide to work on another thing before your first change + is merged in. + + GitHub has some pretty good + [general documentation](http://help.github.com/) on using + their site. They also have documentation on + [creating pull requests](http://help.github.com/send-pull-requests/). + + In general, after pushing your topic branch up to your + repository on GitHub, you can switch to the branch in the + GitHub UI and click "Pull Request" towards the top of the page + in order to open a pull request. + + + 3. Update the related GitHub issue. + + If there is a GitHub issue associated with the change you + submitted, then you should update the ticket to include the + location of your branch, along with any other commentary you + may wish to make. + +Testing +======= + +Getting Started +--------------- + +Our puppet modules provide [`Gemfile`](./Gemfile)s which can tell a ruby +package manager such as [bundler](http://bundler.io/) what Ruby packages, +or Gems, are required to build, develop, and test this software. + +Please make sure you have [bundler installed](http://bundler.io/#getting-started) +on your system, then use it to install all dependencies needed for this project, +by running + +```shell +% bundle install +Fetching gem metadata from https://rubygems.org/........ +Fetching gem metadata from https://rubygems.org/.. +Using rake (10.1.0) +Using builder (3.2.2) +-- 8><-- many more --><8 -- +Using rspec-system-puppet (2.2.0) +Using serverspec (0.6.3) +Using rspec-system-serverspec (1.0.0) +Using bundler (1.3.5) +Your bundle is complete! +Use `bundle show [gemname]` to see where a bundled gem is installed. +``` + +NOTE some systems may require you to run this command with sudo. + +If you already have those gems installed, make sure they are up-to-date: + +```shell +% bundle update +``` + +With all dependencies in place and up-to-date we can now run the tests: + +```shell +% bundle exec rake spec +``` + +This will execute all the [rspec tests](http://rspec-puppet.com/) tests +under [spec/defines](./spec/defines), [spec/classes](./spec/classes), +and so on. rspec tests may have the same kind of dependencies as the +module they are testing. While the module defines in its [Modulefile](./Modulefile), +rspec tests define them in [.fixtures.yml](./fixtures.yml). + +Some puppet modules also come with [beaker](https://github.com/puppetlabs/beaker) +tests. These tests spin up a virtual machine under +[VirtualBox](https://www.virtualbox.org/)) with, controlling it with +[Vagrant](http://www.vagrantup.com/) to actually simulate scripted test +scenarios. In order to run these, you will need both of those tools +installed on your system. + +You can run them by issuing the following command + +```shell +% bundle exec rake spec_clean +% bundle exec rspec spec/acceptance +``` + +This will now download a pre-fabricated image configured in the [default node-set](./spec/acceptance/nodesets/default.yml), +install puppet, copy this module and install its dependencies per [spec/spec_helper_acceptance.rb](./spec/spec_helper_acceptance.rb) +and then run all the tests under [spec/acceptance](./spec/acceptance). + +Writing Tests +------------- + +XXX getting started writing tests. + +If you have commit access to the repository +=========================================== + +Even if you have commit access to the repository, you will still need to +go through the process above, and have someone else review and merge +in your changes. The rule is that all changes must be reviewed by a +developer on the project (that did not write the code) to ensure that +all changes go through a code review process. + +Having someone other than the author of the topic branch recorded as +performing the merge is the record that they performed the code +review. + + +Additional Resources +==================== + +* [Getting additional help](http://puppet.com/community/get-help) + +* [Writing tests](https://docs.puppet.com/guides/module_guides/bgtm.html#step-three-module-testing) + +* [General GitHub documentation](http://help.github.com/) + +* [GitHub pull request documentation](http://help.github.com/send-pull-requests/) diff --git a/modules/services/unix/http/tomcat/Gemfile b/modules/services/unix/http/tomcat/Gemfile new file mode 100644 index 000000000..46cb2eace --- /dev/null +++ b/modules/services/unix/http/tomcat/Gemfile @@ -0,0 +1,75 @@ +#This file is generated by ModuleSync, do not edit. + +source ENV['GEM_SOURCE'] || "https://rubygems.org" + +# Determines what type of gem is requested based on place_or_version. +def gem_type(place_or_version) + if place_or_version =~ /^git:/ + :git + elsif place_or_version =~ /^file:/ + :file + else + :gem + end +end + +# Find a location or specific version for a gem. place_or_version can be a +# version, which is most often used. It can also be git, which is specified as +# `git://somewhere.git#branch`. You can also use a file source location, which +# is specified as `file://some/location/on/disk`. +def location_for(place_or_version, fake_version = nil) + if place_or_version =~ /^(git[:@][^#]*)#(.*)/ + [fake_version, { :git => $1, :branch => $2, :require => false }].compact + elsif place_or_version =~ /^file:\/\/(.*)/ + ['>= 0', { :path => File.expand_path($1), :require => false }] + else + [place_or_version, { :require => false }] + end +end + +# Used for gem conditionals +supports_windows = false +ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments +minor_version = "#{ruby_version_segments[0]}.#{ruby_version_segments[1]}" + +group :development do + gem "puppet-module-posix-default-r#{minor_version}", :require => false, :platforms => "ruby" + gem "puppet-module-win-default-r#{minor_version}", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] + gem "puppet-module-posix-dev-r#{minor_version}", :require => false, :platforms => "ruby" + gem "puppet-module-win-dev-r#{minor_version}", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] + gem "json_pure", '<= 2.0.1', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0') + gem "fast_gettext", '1.1.0', :require => false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0') + gem "fast_gettext", :require => false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0') +end + +group :system_tests do + gem "puppet-module-posix-system-r#{minor_version}", :require => false, :platforms => "ruby" + gem "puppet-module-win-system-r#{minor_version}", :require => false, :platforms => ["mswin", "mingw", "x64_mingw"] + gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '>= 3') + gem "beaker-pe", :require => false + gem "beaker-rspec", *location_for(ENV['BEAKER_RSPEC_VERSION']) + gem "beaker-hostgenerator", *location_for(ENV['BEAKER_HOSTGENERATOR_VERSION']) + gem "beaker-abs", *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.1') +end + +gem 'puppet', *location_for(ENV['PUPPET_GEM_VERSION']) + +# Only explicitly specify Facter/Hiera if a version has been specified. +# Otherwise it can lead to strange bundler behavior. If you are seeing weird +# gem resolution behavior, try setting `DEBUG_RESOLVER` environment variable +# to `1` and then run bundle install. +gem 'facter', *location_for(ENV['FACTER_GEM_VERSION']) if ENV['FACTER_GEM_VERSION'] +gem 'hiera', *location_for(ENV['HIERA_GEM_VERSION']) if ENV['HIERA_GEM_VERSION'] + + +# Evaluate Gemfile.local if it exists +if File.exists? "#{__FILE__}.local" + eval(File.read("#{__FILE__}.local"), binding) +end + +# Evaluate ~/.gemfile if it exists +if File.exists?(File.join(Dir.home, '.gemfile')) + eval(File.read(File.join(Dir.home, '.gemfile')), binding) +end + +# vim:ft=ruby diff --git a/modules/services/unix/http/tomcat/LICENSE b/modules/services/unix/http/tomcat/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/modules/services/unix/http/tomcat/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file 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. diff --git a/modules/services/unix/http/tomcat/MAINTAINERS.md b/modules/services/unix/http/tomcat/MAINTAINERS.md new file mode 100644 index 000000000..e03a81dda --- /dev/null +++ b/modules/services/unix/http/tomcat/MAINTAINERS.md @@ -0,0 +1,6 @@ +## Maintenance + +Maintainers: + - Puppet Forge Modules Team `forge-modules |at| puppet |dot| com` + +Tickets: https://tickets.puppet.com/browse/MODULES. Make sure to set component to `tomcat`. diff --git a/modules/services/unix/http/tomcat/NOTICE b/modules/services/unix/http/tomcat/NOTICE new file mode 100644 index 000000000..32e0255f0 --- /dev/null +++ b/modules/services/unix/http/tomcat/NOTICE @@ -0,0 +1,15 @@ +Puppet Module - puppetlabs-tomcat + +Copyright 2017 Puppet, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file 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/modules/services/unix/http/tomcat/README.md b/modules/services/unix/http/tomcat/README.md new file mode 100644 index 000000000..f13689854 --- /dev/null +++ b/modules/services/unix/http/tomcat/README.md @@ -0,0 +1,1762 @@ +# tomcat + +#### Table of Contents + +1. [Overview](#overview) +2. [Module Description - What the module does and why it is useful](#module-description) +3. [Setup - The basics of getting started with tomcat](#setup) + * [Setup requirements](#requirements) + * [Beginning with tomcat](#beginning-with-tomcat) +4. [Usage - Configuration options and additional functionality](#usage) + * [I want to run multiple instances of multiple versions of Tomcat](#i-want-to-run-multiple-instances-of-multiple-versions-of-tomcat) + * [I want to deploy WAR files.](#i-want-to-deploy-war-files) + * [I want to remove some configuration](#i-want-to-remove-some-configuration) + * [I want to manage a Connector or Realm that already exists](#i-want-to-manage-a-connector-or-realm-that-already-exists) +5. [Reference - An under-the-hood peek at what the module is doing and how](#reference) + * [Classes](#classes) + * [Defined types](#defined-types) + * [Parameters](#parameters) + * [tomcat](#tomcat-1) + * [tomcat::config::properties::property](#tomcatconfigpropertiesproperty) + * [tomcat::config::server](#tomcatconfigserver) + * [tomcat::config::server::connector](#tomcatconfigserverconnector) + * [tomcat::config::server::context](#tomcatconfigservercontext) + * [tomcat::config::server::engine](#tomcatconfigserverengine) + * [tomcat::config::server::globalnamingresource](#tomcatconfigserverglobalnamingresource) + * [tomcat::config::server::host](#tomcatconfigserverhost) + * [tomcat::config::server::listener](#tomcatconfigserverlistener) + * [tomcat::config::server::realm](#tomcatconfigserverrealm) + * [tomcat::config::server::service](#tomcatconfigserverservice) + * [tomcat::config::server::tomcat_users](#tomcatconfigservertomcat_users) + * [tomcat::config::server::valve](#tomcatconfigservervalve) + * [tomcat::config::context](#tomcatconfigcontext) + * [tomcat::config::context::environment](#tomcatconfigcontextenvironment) + * [tomcat::config::context::manager](#tomcatconfigcontextmanager) + * [tomcat::config::context::resource](#tomcatconfigcontextresource) + * [tomcat::config::context::resourcelink](#tomcatconfigcontextresourcelink) + * [tomcat::install](#tomcatinstall) + * [tomcat::instance](#tomcatinstance) + * [tomcat::service](#tomcatservice) + * [tomcat::setenv::entry](#tomcatsetenventry) + * [tomcat::war](#tomcatwar) +6. [Limitations - OS compatibility, etc.](#limitations) +7. [Development - Guide for contributing to the module](#development) + +## Overview + +The tomcat module lets you use Puppet to install, deploy, and configure Tomcat web services. + +## Module Description + +Tomcat is a Java web service provider. The tomcat module lets you use Puppet to install Tomcat, manage its configuration file, and deploy web apps to it. It supports multiple instances of Tomcat spanning multiple versions. + +## Setup + +### Requirements + +The tomcat module requires [puppetlabs-stdlib](https://forge.puppetlabs.com/puppetlabs/stdlib) version 4.0 or newer. On Puppet Enterprise you must meet this requirement before installing the module. To update stdlib, run: + +```bash +puppet module upgrade puppetlabs-stdlib +``` + +### Beginning with tomcat + +The simplest way to get Tomcat up and running with the tomcat module is to install the Tomcat source and start the service: + +```puppet +tomcat::install { '/opt/tomcat': + source_url => 'https://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.x/bin/apache-tomcat-7.0.x.tar.gz', +} +tomcat::instance { 'default': + catalina_home => '/opt/tomcat', +} +``` + +> Note: look up the correct version you want to install on the [version list](http://tomcat.apache.org/whichversion.html). + +## Usage + +### I want to run multiple instances of multiple versions of Tomcat + +```puppet +class { 'java': } + +tomcat::install { '/opt/tomcat8': + source_url => 'https://www.apache.org/dist/tomcat/tomcat-8/v8.0.x/bin/apache-tomcat-8.0.x.tar.gz' +} +tomcat::instance { 'tomcat8-first': + catalina_home => '/opt/tomcat8', + catalina_base => '/opt/tomcat8/first', +} +tomcat::instance { 'tomcat8-second': + catalina_home => '/opt/tomcat8', + catalina_base => '/opt/tomcat8/second', +} +# Change the default port of the second instance server and HTTP connector +tomcat::config::server { 'tomcat8-second': + catalina_base => '/opt/tomcat8/second', + port => '8006', +} +tomcat::config::server::connector { 'tomcat8-second-http': + catalina_base => '/opt/tomcat8/second', + port => '8081', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8443' + }, +} + +tomcat::install { '/opt/tomcat6': + source_url => 'http://www-eu.apache.org/dist/tomcat/tomcat-6/v6.0.x/bin/apache-tomcat-6.0.x.tar.gz', +} +tomcat::instance { 'tomcat6': + catalina_home => '/opt/tomcat6', +} +# Change tomcat 6's server and HTTP/AJP connectors +tomcat::config::server { 'tomcat6': + catalina_base => '/opt/tomcat6', + port => '8105', +} +tomcat::config::server::connector { 'tomcat6-http': + catalina_base => '/opt/tomcat6', + port => '8180', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8543' + }, +} +tomcat::config::server::connector { 'tomcat6-ajp': + catalina_base => '/opt/tomcat6', + port => '8109', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8543' + }, +} +``` + +> Note: look up the correct version you want to install on the [version list](http://tomcat.apache.org/whichversion.html). + +### I want to deploy WAR files + +Add the following to any existing installation with your own war source: +```puppet +tomcat::war { 'sample.war': + catalina_base => '/opt/tomcat8/first', + war_source => '/opt/tomcat8/webapps/docs/appdev/sample/sample.war', +} +``` + +The name of the WAR file must end with `.war`. + +The `war_source` can be a local path or a `puppet:///`, `http://`, or `ftp://` URL. + +### I want to remove some configuration + +Different configuration defined types will allow an ensure parameter to be passed, though the name may vary based on the defined type. + +To remove a connector, for instance, the following configuration ensure that it is absent: + +```puppet +tomcat::config::server::connector { 'tomcat8-jsvc': + connector_ensure => 'absent', + catalina_base => '/opt/tomcat8/first', + port => '8080', + protocol => 'HTTP/1.1', +} +``` + +### I want to manage a Connector or Realm that already exists + +Describe the Realm or HTTP Connector element using `tomcat::config::server::realm` or `tomcat::config::server::connector`, and set `purge_realms` or `purge_connectors` to `true`. + +```puppet +tomcat::config::server::realm { 'org.apache.catalina.realm.LockOutRealm': + realm_ensure => 'present', + purge_realms => true, +} +``` + +Puppet removes any existing Connectors or Realms and leaves only the ones you've specified. + +## Reference + +### Classes + +#### Public Classes + +* `tomcat`: Main class. Manages some of the defaults for installing and configuring Tomcat. + +#### Private Classes + +* `tomcat::params`: Manages Tomcat parameters. + +### Defined Types + +#### Public Defined Types + +* `tomcat::config::properties::property`: Adds a property to catalina.properties file +* `tomcat::config::server`: Configures attributes for the [Server element](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html) in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::server::connector`: Configures [Connector elements](http://tomcat.apache.org/tomcat-8.0-doc/connectors.html) in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::server::context`: Configures [Context elements](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html) in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::server::engine`: Configures [Engine elements](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Introduction) in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::server::globalnamingresource`: Configures [Global Resource elements](http://tomcat.apache.org/tomcat-8.0-doc/config/globalresources.html) +* `tomcat::config::server::host`: Configures [Host elements](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html) in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::server::listener`: Configures [Listener elements](http://tomcat.apache.org/tomcat-8.0-doc/config/listeners.html) in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::server::realm`: Configures [Realm elements](http://tomcat.apache.org/tomcat-8.0-doc/config/realm.html) in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::server::service`: Configures a [Service element](http://tomcat.apache.org/tomcat-8.0-doc/config/service.html) element nested in the `Server` element in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::server::tomcat_users`: Configures user and role elements for [UserDatabaseRealm] (http://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html#UserDatabaseRealm) or [MemoryRealm] (http://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html#MemoryRealm) in `$CATALINA_BASE/conf/tomcat-users.xml` or any other specified file. +* `tomcat::config::server::valve`: Configures a [Valve](http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html) element in `$CATALINA_BASE/conf/server.xml`. +* `tomcat::config::context`: Configures a [Context](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html) element in `$CATALINA_BASE/conf/context.xml`. +* `tomcat::config::context::manager`: Configures a [Manager](https://tomcat.apache.org/tomcat-8.0-doc/config/manager.html) element in `$CATALINA_BASE/conf/context.xml. +* `tomcat::config::context::environment`: Configures a [Environment](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Environment_Entries) element in `$CATALINA_BASE/conf/context.xml`. +* `tomcat::config::context::resource`: Configures a [Resource](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Resource_Definitions) element in `$CATALINA_BASE/conf/context.xml`. +* `tomcat::config::context::resourcelink`: Configures a [ResourceLink](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Resource_Links) element in `$CATALINA_BASE/conf/context.xml`. +* `tomcat::install`: Installs a Tomcat instance. +* `tomcat::instance`: Configures a Tomcat instance. +* `tomcat::service`: Provides Tomcat service management. +* `tomcat::setenv::entry`: Adds an entry to a Tomcat configuration file (e.g., `setenv.sh` or `/etc/sysconfig/tomcat`). +* `tomcat::war`: Manages the deployment of WAR files. + +#### Private defined types + +* `tomcat::install::package`: Installs Tomcat from a package. +* `tomcat::install::source`: Installs Tomcat from source. +* `tomcat::instance::copy_from_home`: Copies required files from installation to instance +* `tomcat::instance::dependencies`: Declares puppet dependency chain for an instance. +* `tomcat::config::properties`: Creates instance catalina.properties + +### Parameters + +All parameters are optional except where otherwise noted. + +#### tomcat +The base class sets defaults used by other defined types, such as `tomcat::install` and `tomcat::instance`, such as a default `catalina_home`. + +##### `catalina_home` + +Specifies the default root directory of the Tomcat installation. + +Valid options: a string containing an absolute path. + +Default value: '/opt/apache-tomcat'. + +##### `group` + +Specifies a default group to run Tomcat as. + +Valid options: a string containing a valid group name. + +Default value: 'tomcat'. + +##### `install_from_source` + +Specifies whether to default to installing Tomcat from source. + +Valid options: `true` and `false`. + +Default value: `true`. + +##### `manage_group` + +Determines whether defined types should default to creating the specified group, if it doesn't exist. Uses Puppet's native [`group` resource type](https://docs.puppetlabs.com/references/latest/type.html#group) with default parameters. + +Valid options: `true` and `false`. + +Default value: `true`. + +##### `manage_user` + +Determines whether defined types should default to creating the specified user, if it doesn't exist. Uses Puppet's native [`user` resource type](https://docs.puppetlabs.com/references/latest/type.html#user) with default parameters. + +Valid options: `true` and `false`. + +Default value: `true`. + +##### `manage_base` +Specifies the default value of `manage_base` for all `tomcat::install` instances. + +Default value: `true`. + +##### `manage_home` +Specifies the default value of `manage_home` for all `tomcat::instance` instances. + +Default value: `true`. + +##### `manage_properties` +Specifies the default value of `manage_properties` for all `tomcat::instance` instances. + +Default value: `true`. + +##### `purge_connectors` + +Specifies whether to purge any unmanaged Connector elements that match defined protocol but have a different port from the configuration file by default. + +Valid options: `true` and `false`. + +Default value: `false`. + +##### `purge_realms` + +Specifies whether to purge any unmanaged realm elements from the configuration file by default. + +Valid options: `true` and `false`. + +Default value: `false`. If two realms are defined for a specific server config only use `purge_realms` for the first realm and ensure the realms enforce a strict order between each other. + +##### `user` + +Specifies a default user to run Tomcat as. + +Valid options: a string containing a valid username. + +Default value: 'tomcat'. + +#### tomcat::config::properties::property + +Specifies an additional entry for the catalina.properties file a given catalina base. + +##### `property` + +The name of the property. + +Default value: `$name`. + +##### `catalina_base` + +The catalina base of the catalina.properties file. The resource will manage the values in `${catalina_base}/conf/catalina.properties` . + +Required + +##### `value` +The value of the property. + +Required + +#### tomcat::config::server + +##### `address` + +Specifies a TCP/IP address on which to listen for the shutdown command. Maps to the [address XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes). + +Valid options: a string. + +Default value: `undef`. + +##### `address_ensure` + +Specifies whether the [address XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation to manage. + +Valid options: a string containing an absolute path. + +Default value: '$tomcat::catalina_home'. + +##### `class_name` + +Specifies the Java class name of a server implementation to use. Maps to the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes) in the configuration file. + +Valid options: a string containing a Java class name. + +Default value: `undef`. + +##### `class_name_ensure` + +Specifies whether the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `port` + +Specifies a port on which to listen for the designated shutdown command. Maps to the [port XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes). + +Valid options: a string containing a port number. + +Default value: `undef`. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +##### `shutdown` + +Designates a command that shuts down Tomcat when the command is received through the specified address and port. Maps to the [shutdown XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes). + +Valid options: a string. + +Default value: `undef`. + +#### tomcat::config::server::connector + +##### `additional_attributes` + +Specifies any further attributes to add to the Connector. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `{}`. + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Connector. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `[]`. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation to manage. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat/catalina_home'. + +##### `connector_ensure` + +Specifies whether the [Connector XML element](http://tomcat.apache.org/tomcat-8.0-doc/connectors.html) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `parent_service` + +Specifies which Service element the Connector should nest under. + +Valid options: a string containing the name attribute of the Service. + +Default value: 'Catalina'. + +##### `port` + +*Required if `connector_ensure` is set to `true` or 'present'.* Sets a TCP port on which to create a server socket. Maps to the [port XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/http.html#Common_Attributes). + +Valid options: a string. + +##### `protocol` + +Specifies a protocol to use for handling incoming traffic. Maps to the [protocol XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/http.html#Common_Attributes). + +Valid options: a string. + +Default value: `$name`. + +##### `purge_connectors` + +Specifies whether to purge any unmanaged Connector elements that match defined protocol but have a different port from the configuration file. + +Valid options: `true` and `false`. + +Default value: `false`. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +#### tomcat::config::server::context + +##### `additional_attributes` + +Specifies any further attributes to add to the Context. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `{}`. + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Context. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `[]`. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation to manage. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat/catalina_home'. + +##### `context_ensure` + +Specifies whether the [Context XML element](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `doc_base` + +Specifies a Document Base (or Context Root) directory or archive file. Maps to the [docBase XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Common_Attributes). + +Valid options: a string containing a path (either an absolute path or a path relative to the appBase directory of the owning Host). + +Default value: `$name`. + +##### `parent_engine` + +Specifies which Engine element the Context should nest under. Only valid if `parent_host` is specified. + +Valid options: a string containing the name attribute of the Engine. + +Default value: `undef`. + +##### `parent_host` + +Specifies which Host element the Context should nest under. + +Valid options: a string containing the name attribute of the Host. + +Default value: `undef`. + +##### `parent_service` + +Specifies which Service XML element the Context should nest under. + +Valid options: a string containing the name attribute of the Service. + +Default value: 'Catalina'. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +#### tomcat::config::server::engine + +##### `background_processor_delay` + +Determines the delay between invoking the backgroundProcess method on this engine and its child containers. Maps to the [backgroundProcessorDelay XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes). + +Valid options: an integer, in seconds. + +Default value: `undef`. + +##### `background_processor_delay_ensure` + +Specifies whether the [backgroundProcessorDelay XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation to manage. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `class_name` + +Specifies the Java class name of a server implementation to use. Maps to the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes). + +Valid options: a string containing a Java class name. + +Default value: `undef`. + +##### `class_name_ensure` + +Specifies whether the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `default_host` + +*Required.* Specifies a host to handle any requests directed to hostnames that exist on the server but are not defined in this configuration file. Maps to the [defaultHost XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes) of the Engine. + +Valid options: a string containing a hostname. + +##### `engine_name` + +Specifies the logical name of the Engine, used in log and error messages. Maps to the [name XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes). + +Valid options: a string. + +Default value: the `name` passed in your defined type. + +##### `jvm_route` + +Specifies an identifier to enable session affinity in load balancing. Maps to the [jvmRoute XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes). + +Valid options: string. + +Default value: `undef`. + +##### `jvm_route_ensure` + +Specifies whether the [jvmRoute XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `parent_service` + +Specifies which Service element the Engine should nest under. + +Valid options: a string containing the name attribute of the Service. + +Default value: 'Catalina'. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +##### `start_stop_threads` + +Sets how many threads the Engine should use to start child Host elements in parallel. Maps to the [startStopThreads XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes). + +Valid options: a string. + +Default value: `undef`. + +##### `start_stop_threads_ensure` + +Specifies whether the [startStopThreads XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +#### tomcat::config::server::globalnamingresource + +Configure GlobalNamingResources Resource elements in '$CATALINA_BASE/conf/server.xml' + +##### `ensure` + +Determines whether the specified XML element should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `resource_name` + +Optionally override the globalnamingresource name that is normally taken from the Puppet resource's `$name`. + +##### `catalina_base` + +Specifies the base directory of the Tomcat instance. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `type` + +Specifies the type of element to create + +Valid options: `Resource`, `Environment` or any other valid node. + +Default value: `Resource`. + +>Note: This is used verbatim in your configuration so make sure the case is correct. + +##### `additional_attributes` + +Specifies any further attributes to add to the Host. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `{}`. + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Host. + +Valid options: an array of `'< attribute >' => '< value >'` pairs. + +Default value: `[]`. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +#### tomcat::config::server::host + +##### `additional_attributes` + +Specifies any further attributes to add to the Host. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `{}`. + +##### `aliases` + +Optional array that specifies the list of [Host Name Aliases](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html#Host_Name_Aliases) for this particular Host. If omitted, any currently-defined Aliases will not be altered. If present, the list Aliases will be set to exactly match the contents of this array. Thus, for example, an empty array can be used to explicitly force there to be no Aliases for the Host. + +##### `app_base` + +*Required unless [`host_ensure`](#host_ensure) is set to `false` or 'absent'.* Specifies the Application Base directory for the virtual host. Maps to the [appBase XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html#Common_Attributes). + +Valid options: a string. + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Host. + +Valid options: an array of '< attribute >' => '< value >' pairs. + +Default value: `[]`. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation to manage. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `host_ensure` + +Specifies whether the virtual host (the [Host XML element](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html#Introduction)) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `host_name` + +Specifies the network name of the virtual host, as registered on your DNS server. Maps to the [name XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html#Common_Attributes). + +Valid options: a string. + +Default value: the 'name' passed in your defined type. + +##### `parent_service` + +Specifies which Service element the Host should nest under. + +Valid options: a string containing the name attribute of the Service. + +Default value: 'Catalina'. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +#### tomcat::config::server::listener + +##### `additional_attributes` + +Specifies any further attributes to add to the Listener. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `{}`. + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Listener. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `[]`. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `class_name` + +Specifies the Java class name of a server implementation to use. Maps to the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/listeners.html#Common_Attributes) of a Listener Element. + +Valid options: a string containing a Java class name. + +Default value: `$name`. + +##### `listener_ensure` + +Specifies whether the [Listener XML element](http://tomcat.apache.org/tomcat-8.0-doc/config/listeners.html) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `parent_engine` + +Specifies which Engine element this Listener should nest under. + +Valid options: a string containing the name attribute of the Engine. + +Default value: `undef`. + +##### `parent_host` + +Specifies which Host element this Listener should nest under. + +Valid options: a string containing the name attribute of the Host. + +Default value: `undef`. + +##### `parent_service` + +Specifies which Service element the Listener should nest under. Only valid if `parent_engine` or `parent_host` is specified. + +Valid options: a string containing the name attribute of the Service. + +Default value: 'Catalina'. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +#### tomcat::config::server::realm + +##### `additional_attributes` + +Specifies any further attributes to add to the Realm element. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `{}`. + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Realm element. + +Valid options: an array of '< attribute >' => '< value >' pairs. + +Default value: `[]`. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation. + +Default value: '$::tomcat::catalina_home'. + +##### `class_name` + +Specifies the Java class name of a Realm implementation to use. Maps to the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#Common_Attributes). + +Valid options: a string containing a Java class name. + +Default value: the `name` passed in your defined type. + +##### `parent_engine` + +Specifies which Engine element this Realm should nest under. + +Valid options: a string containing the name attribute of the Engine. + +Default value: 'Catalina'. + +##### `parent_host` + +Specifies which Host element this Realm should nest under. + +Valid options: a string containing the name attribute of the Host. + +Default value: `undef`. + +##### `parent_realm` + +Specifies which Realm element this Realm should nest under. + +Valid options: a string containing the className attribute of the Realm element. + +Default value: `undef`. + +##### `parent_service` + +Specifies which Service element this Realm element should nest under. + +Valid options: a string containing the name attribute of the Service. + +Default value: 'Catalina'. + +##### `purge_realms` + +Specifies whether to purge any unmanaged Realm elements from the configuration file. + +Valid options: `true` and `false`. + +Default value: `false`. + +##### `realm_ensure` + +Specifies whether the Realm element should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +#### tomcat::config::server::service + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `class_name` + +Specifies the Java class name of a server implementation to use. Maps to the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/service.html#Common_Attributes). + +Valid options: a string containing a Java class name. + +Default value: `undef`. + +##### `class_name_ensure` + +Specifies whether the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/service.html#Common_Attributes) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +##### `service_ensure` + +Specifies whether the [Service element](http://tomcat.apache.org/tomcat-8.0-doc/config/service.html#Introduction) should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +#### tomcat::config::server::tomcat_users + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `element` + +Specifies the type of element to manage. + +Valid options: 'user' or 'role'. + +Default value: `user`. + +##### `element_name` + +Sets the element's username (or rolename, if `element` is set to 'role'). + +Valid options: a string. + +Default value: `$name`. + +##### `ensure` + +Determines whether the specified XML element should exist in the configuration file. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `file` + +Specifies the configuration file to manage. + +Valid options: a string containing a fully-qualified path. + +Default value: '$CATALINA_BASE/conf/tomcat-users.xml'. + +##### `group` + +Specifies the group of the configuration file. + +Default value: `$::tomcat::group`. + +##### `manage_file` + +Specifies whether to create the specified configuration file if it doesn't exist. Uses Puppet's native [`file` resource type](https://docs.puppetlabs.com/references/latest/type.html#file) with default parameters. + +Valid options: `true` and `false`. + +Default value: `true`. + +##### `owner` + +Specifies the owner of the configuration file. + +Default value: `$::tomcat::user`. + +##### `password` + +Specifies a password for user elements. + +Valid options: a string. + +Default value: `undef`. + +##### `roles` + +Specifies one or more roles. Only valid if `element` is set to 'role' or 'user'. + +Valid options: an array of strings. + +Default value: `[]`. + +#### tomcat::config::server::valve + +##### `additional_attributes` + +Specifies any further attributes to add to the Valve. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `{}`. + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Valve. + +Valid options: a hash of '< attribute >' => '< value >' pairs. + +Default value: `[]`. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation. + +Valid options: a string containing an absolute path. + +Default value: `$::tomcat::catalina_home`. + +##### `class_name` + +Specifies the Java class name of a server implementation to use. Maps to the [className XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Access_Logging/Attributes). + +Valid options: a string containing a Java class name. + +Default value: the 'name' passed in your defined type. + +##### `parent_host` + +Specifies which virtual host the Valve should nest under. + +Valid options: a string containing the name of a Host element. + +Default value: If you don't specify a host, the Valve element nests under the Engine of your specified parent Service. + +##### `parent_service` + +Specifies which Service element the Valve should nest under. + +Valid options: a string containing the name of a Service element. + +Default value: 'Catalina'. + +##### `parent_context` + +Specifies which Context element the Valve should nest under. + +Valid options: a string containing the name of a Context element (matching the docbase attribute). + +Default value: If you don't specify a context, the Valve element nests under either the Parent Host if defined or the Engine of your specified parent Service. + +##### `server_config` + +Specifies a server.xml file to manage. + +Valid options: a string containing an absolute path. + +Default value: '${catalina_base}/config/server.xml'. + +##### `valve_ensure` + +Specifies whether the Valve should exist in the configuration file. Maps to the [Valve XML element](http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Introduction). + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +#### tomcat::config::context + +Specifies a configuration Context element in `${catalina_base}/conf/context.xml` for other `tomcat::config::context::*` defined types. + +##### `catalina_base` + +Specifies the root of the Tomcat installation. + +#### tomcat::config::context::manager +Specifies a Manager element in the designated xml configuration. + +##### `ensure` + +specifies whether you are trying to add or remove the Manager element. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `catalina_base` + +Specifies the root of the Tomcat installation. + +Default value: '$tomcat::catalina_home'. + +##### `manager_classname` + +The name of the Manager to be created. + +Default value: `$name`. + +##### `additional_attributes` + +Specifies any additional attributes to add to the Manager. + +Should be a hash of the format 'attribute' => 'value'. + +Optional + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Manager. + +Should be a hash of the format 'attribute' => 'value'. + +Optional + +#### tomcat::config::context::environment + +Specifies Environment elements in `${catalina_base}/conf/context.xml` + +##### `ensure` + +Specifies whether you are trying to add or remove the Environment element + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `environment_name` + +The name of the Environment Entry to be created, relative to the `java:comp/env` context. + +Default value: `$name`. + +##### `type` + +The fully qualified Java class name expected by the web application for this environment entry. + +Required to create the environment entry. + +##### `value` + +The value that will be presented to the application when requested from the JNDI context. + +Required to create the environment entry. + +##### `description` + +The description is an an optional string for a human-readable description of this environment entry. + +##### `override` + +An optional string or boolean to specify if you do not want an `` for the same environment entry name to override the value specified here (set it to `false`). + +By default, overrides are allowed. + +##### `catalina_base` + +Specifies the root of the Tomcat installation. + +Default value: '$tomcat::catalina_home'. + +##### `additional_attributes` + +Specifies any additional attributes to add to the Environment. + +Should be a hash of the format 'attribute' => 'value'. + +Optional + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Environment. + +Should be a hash of the format 'attribute' => 'value'. + +Optional + +#### tomcat::config::context::resource +Specifies Resource elements in `${catalina_base}/conf/context.xml` + +##### `ensure` + +specifies whether you are trying to add or remove the Resource element. + +Valid options: `true`, `false`, 'present', 'absent'. + +Defaults value: 'present' + +##### `resource_name` + +The name of the Resource to be created, relative to the `java:comp/env` context. + +Default value: `$name`. + +##### `resource_type` + +The fully qualified Java class name expected by the web application when it performs a lookup for this resource. Required to create the resource. + +##### `catalina_base` + +Specifies the root of the Tomcat installation. + +Default value: '$tomcat::catalina_home'. + +##### `additional_attributes` + +Specifies any additional attributes to add to the Valve. + +Should be a hash of the format 'attribute' => 'value'. + +Optional + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Valve. + +Should be a hash of the format 'attribute' => 'value'. + +Optional + +#### tomcat::config::context::resourcelink + +Specifies a ResourceLink element in the designated xml configuration. + +##### `ensure` + +specifies whether you are trying to add or remove the ResourceLink element. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `catalina_base` + +Specifies the root of the Tomcat installation. + +Default value: `$tomcat::catalina_home`. + +##### `resourcelink_name` + +The name of the ResourceLink to be created, relative to the `java:comp/env` context. + +Default value: `$name`. + +##### `resourcelink_type` + +The fully qualified Java class name expected by the web application when it performs a lookup for this resource link. + +##### `additional_attributes` + +Specifies any additional attributes to add to the Valve. + +Should be a hash of the format 'attribute' => 'value'. + +Optional + +##### `attributes_to_remove` + +Specifies any attributes to remove from the Valve. + +Should be a hash of the format 'attribute' => 'value'. + +Optional + +#### `tomcat::install` + +Installs the software into the given directory from a source Apache Tomcat tarball. Alternatively, it may be used to install a tomcat package. + +Tomcat instances may then be created from the install using `tomcat::instance` and pointing `tomcat::instance::catalina_home` to the directory managed by `tomcat::install`. + +##### `catalina_home` + +specifies the directory of the Tomcat installation from which the instance should be created. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `install_from_source` + +Specifies whether to install from source or from a package. If set to `true` installation uses the `source_url`, `source_strip_first_dir`, `user`, `group`, `manage_user`, and `manage_group` parameters. If set to `false` installation uses the `package_ensure`, `package_name`, and `package_options` parameters. + +Valid options: `true` and `false`. + +Default value: `true`. + +##### `source_url` + +In single-instance mode: *Required if `install_from_source` is set to `true`.* Specifies the source URL to install from. + +Valid options: a string containing a `puppet://`, `http(s)://`, or `ftp://` URL. + +##### `source_strip_first_dir` + +Specifies whether to strip the topmost directory of the tarball when unpacking it. Only valid if `install_from_source` is set to `true`. + +Valid options: `true` and `false`. + +Default value: `true`. + +##### `environment` + +Environment variables for settings such as http_proxy, https_proxy, or ftp_proxy. These are passed through to the staging module and then to the underlying exec(s), so it follows the same format of the exec type [`environment`](https://docs.puppet.com/puppet/latest/reference/type.html#exec-attribute-environment). + +##### `user` + +Specifies the owner of the source installation directory. + +Default value: `$::tomcat::user`. + +##### `group` + +Specifies the group of the source installation directory. + +Default value: `$::tomcat::group`. + +##### `manage_user` + +Specifies whether the user should be managed by this module or not. + +Default value: `$::tomcat::manage_user`. + +##### `manage_group` + +Specifies whether the group should be managed by this module or not. + +Default value: `$::tomcat::manage_group`. + +##### `manage_home` + +Specifies whether the directory of catalina_home should be managed by puppet. This may not be preferable in network filesystem environments. + +Default value: `true`. + +##### `package_ensure` + +Determines whether the specified package should be installed. Only valid if `install_from_source` is set to `false`. Maps to the `ensure` parameter of Puppet's native [`package` resource type](https://docs.puppetlabs.com/references/latest/type.html#package). + +Default value: 'present'. + +##### `package_name` + +*Required if `install_from_source` is set to `false`.* Specifies the package to install. + +Valid options: a string containing a valid package name. + +##### `package_options` + +*Unused if `install_from_source` is set to `true`.* Specify additional options to use on the generated package resource. See the documentation of the [`package` resource type](https://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options) for possible values. + +#### tomcat::instance + +Declares a tomcat instance. + +There are two different modes of use: a single tomcat installation and instance (called 'single-instance' by this readme), or a single tomcat installation with multiple instances, each with its own directory structure (called 'multi-instance' by this readme). + +- single-instance: If a `tomcat::instance` is declared with `catalina_home` and `catalina_base` both pointing to the directory of a `tomcat::install` then it only configures a single instance. +- multi-instance: If a `tomcat::instance` is declared with `catalina_home` pointing to the same directory as a `tomcat::install` and `catalina_base` pointing at a different directory then it is configured as an instance of the Apache Tomcat software. Multiple instances of a single install may be created using this method. A `tomcat::install` declaration should use a user and/or group such that `tomcat::instance` declarations can access the install. + +##### `catalina_base` + +Specifies the `$CATALINA_BASE` of the Tomcat instance where logs, configuration files, and the 'webapps' directory are managed. For single-instance installs, this is the same as the `catalina_home` parameter + +Valid options: a string containing an absolute path. + +Default value: `$catalina_home`. + +##### `catalina_home` + +Specifies the directory where the Apache Tomcat software is installed by a `tomcat::install` resource. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `user` + +Specifies the owner of the instance directories and files. + +Default value: `$::tomcat::user`. + +##### `group` + +Specifies the group of the instance directories and files. + +Default value: `$::tomcat::group`. + +##### `manage_user` + +Specifies whether the user should be managed by this module or not. + +Default value: `$::tomcat::manage_user`. + +##### `manage_group` + +Specifies whether the group should be managed by this module or not. + +Default value: `$::tomcat::manage_group`. + +##### `manage_base` + +Specifies whether the directory of catalina_base should be managed by puppet. This may not be preferable in network filesystem environments. + +Default value: `true`. + +##### `manage_service` + +Specifies whether a `tomcat::service` corresponding to this instance should be declared. + +Valid options: `true`, `false` + +Default value: `true` (multi-instance installs), `false` ()single-instance installs). + +##### `manage_properties` + +Specifies whether the `catalina.properties` file is created and managed. If `true`, custom modifications to this file will be overwritten during runs + +Valid options: `true`, `false` + +Default value: `true`. + +##### `java_home` + +Specifies the java home to be used when declaring a `tomcat::service` instance. See [tomcat::service](# tomcatservice) + +##### `use_jsvc` + +Specifies whether jsvc should be used when declaring a `tomcat::service` instance. + +>Note that this module will not compile and install jsvc for you. See [tomcat::service](# tomcatservice) + +##### `use_init` + +Specifies whether an init script should be managed when declaring a `tomcat::service` instance. See [tomcat::service](# tomcatservice) + +#### tomcat::service + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `catalina_home` + +Specifies the root directory of the Tomcat installation. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home'. + +##### `java_home` + +Specifies where Java is installed. Only applies if `use_jsvc` is set to `true`. + +Valid options: a string containing an absolute path. + +Default value: `undef`. + +>Note: if you don't specify a home path in this parameter, Puppet does not pass the `-home` switch to Tomcat. That can cause problems on some systems, so we recommend including this parameter. + +##### `service_enable` + +Specifies whether to enable the Tomcat service at boot. Only valid if `use_init` is set to `true`. + +Valid options: `true` and `false`. + +Default value: `true`, if `use_init` is set to `true` and `service_ensure` is set to 'running' or `true`. + +##### `service_ensure` + +Specifies whether the Tomcat service should be running. Maps to the `ensure` parameter of Puppet's native [`service` resource type](https://docs.puppetlabs.com/references/latest/type.html#service). + +Valid options: 'running', 'stopped', `true`, and `false`. + +Default value: 'present'. + +##### `service_name` + +*Required if `use_init` is set to `true`.* Specifies the name of the Tomcat service. + +Valid options: a string. + +##### `start_command` + +Designates a command to start the service. + +Valid options: a string. + +Default value: determined by the values of `use_init` and `use_jsvc`. + +##### `stop_command` + +Designates a command to stop the service. + +Valid options: a string. + +Default value: determined by the values of `use_init` and `use_jsvc`. + +##### `use_init` + +Specifies whether to use a package-provided init script for service management. + + * `$CATALINA_HOME/bin/catalina.sh start` + * `$CATALINA_HOME/bin/catalina.sh stop` + +Valid options: `true` and `false`. + +Default value: `false`. + +>Note that the tomcat module does not supply an init script. If both `use_jsvc` and `use_init` are set to `false`, tomcat uses the following commands for service management: + +##### `use_jsvc` + +Specifies whether to use Jsvc for service management. If both `use_jsvc` and `use_init` are set to `false`, tomcat uses the following commands for service management: + + * `$CATALINA_HOME/bin/catalina.sh start` + * `$CATALINA_HOME/bin/catalina.sh stop` + +Valid options: `true` and `false`. + +Default value: `false`. + +##### `user` + +The user of the jsvc process when `use_init => true` + +#### tomcat::setenv::entry + +##### `base_path` + +**Deprecated.** Please use `config_file` instead. + +##### `config_file` + +Specifies the configuration file to edit. + +Valid options: a string containing an absolute path. + +Default value: '$::tomcat::catalina_home/bin/setenv.sh. + +##### `ensure` + +Determines whether the fragment should exist in the configuration file. + +Valid options: 'present', 'absent'. + +Default value: 'present'. + +##### `group` + +Specifies the group of the config file. + +Default value: `$::tomcat::group`. + +##### `order` + +Determines the ordering of your parameters in the configuration file (parameters with lower `order` values appear first.) + +Valid options: an integer or a string containing an integer. + +Default value: `10`. + +###### `addto` + +Defines an additional environment variable that will be added to the beginning of the `param` + +##### `param` + +Specifies a parameter to manage. + +Valid options: a string. + +Default value: the `name` passed in your defined type. + +##### `quote_char` + +Specifies a character to include before and after the specified value. + +Valid options: a string (usually a single or double quote). + +Default value: (blank). + +##### `user` + +Specifies the owner of the config file. + +Default value: `$::tomcat::user`. + +##### `value` + +*Required.* Provides the value(s) of the managed parameter. + +Valid options: a string or an array. If passing an array, separate values with a single space. + +##### `doexport` + +Specifies if you want to append export to the entry. + +Valid options: `true` or `false` + +Default value: `true`. + +#### `tomcat::war` + +##### `app_base` + +Specifies where to deploy the WAR. Cannot be used in combination with `deployment_path`. + +Valid options: a string containing a path relative to `$CATALINA_BASE`. + +Default value: If you don't specify an `app_base`, Puppet deploys the WAR to your specified `deployment_path`. If you don't specify that either, the WAR deploys to `${catalina_base}/webapps`. + +##### `catalina_base` + +Specifies the base directory of the Tomcat installation. + +Valid options: a string containing an absolute path. + +Default value: `$::tomcat::catalina_home`. + +##### `deployment_path` + +Specifies where to deploy the WAR. Cannot be used in combination with `app_base`. + +Valid options: a string containing an absolute path. + +Default value: If you don't specify a `deployment_path`, Puppet deploys the WAR to your specified `app_base`. If you don't specify that either, the WAR deploys to `${catalina_base}/webapps`. + +##### `war_ensure` + +Specifies whether the WAR should exist. + +Valid options: `true`, `false`, 'present', and 'absent'. + +Default value: 'present'. + +##### `war_name` + +Specifies the name of the WAR. + +Valid options: a string containing a filename that ends in '.war'. + +Default value: the `name` passed in your defined type. + +##### `war_purge` + +Specifies whether to purge the exploded WAR directory. Only applicable when `war_ensure` is set to 'absent' or `false`. + +Valid options: `true` and `false`. + +Default value: `true`. + +>Note: Setting this parameter to `false` does not prevent Tomcat from removing the exploded WAR directory if Tomcat is running and autoDeploy is set to `true`. + +##### `war_source` + +*Required unless `war_ensure` is set to `false` or 'absent'.* Specifies the source to deploy the WAR from. + +Valid options: a string containing a `puppet://`, `http(s)://`, or `ftp://` URL. + +## Limitations + +This module only supports Tomcat installations on Unix-like systems. The `tomcat::config::server*` defined types require Augeas version 1.0.0 or newer. + +### Multiple Instances + +Some Tomcat packages do not let you install more than one instance. You can avoid this limitation by installing Tomcat from source. + +## Development + +Puppet Labs modules on the Puppet Forge are open projects, and community contributions are essential for keeping them great. We can't access the huge number of platforms and myriad of hardware, software, and deployment configurations that Puppet is intended to serve. + +We want to keep it as easy as possible to contribute changes so that our modules work in your environment. There are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things. + +For more information, see our [module contribution guide.](https://docs.puppetlabs.com/forge/contributing.html) + +### Contributors + +To see who's already involved, see the [list of contributors.](https://github.com/puppetlabs/puppetlabs-tomcat/graphs/contributors) + +### Running tests + +This project contains tests for both [rspec-puppet](http://rspec-puppet.com/) and [beaker-rspec](https://github.com/puppetlabs/beaker-rspec) to verify functionality. For in-depth information, please see their respective documentation. + +Quickstart: + +```bash +gem install bundler +bundle install +bundle exec rake spec +bundle exec rspec spec/acceptance +RS_DEBUG=yes bundle exec rspec spec/acceptance +``` diff --git a/modules/services/unix/http/tomcat/Rakefile b/modules/services/unix/http/tomcat/Rakefile new file mode 100644 index 000000000..d12d85495 --- /dev/null +++ b/modules/services/unix/http/tomcat/Rakefile @@ -0,0 +1,37 @@ +require 'puppetlabs_spec_helper/rake_tasks' +require 'puppet-lint/tasks/puppet-lint' +require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any? + +PuppetLint.configuration.fail_on_warnings = true +PuppetLint.configuration.send('relative') + +desc 'Generate pooler nodesets' +task :gen_nodeset do + require 'beaker-hostgenerator' + require 'securerandom' + require 'fileutils' + + agent_target = ENV['TEST_TARGET'] + if ! agent_target + STDERR.puts 'TEST_TARGET environment variable is not set' + STDERR.puts 'setting to default value of "redhat-64default."' + agent_target = 'redhat-64default.' + end + + master_target = ENV['MASTER_TEST_TARGET'] + if ! master_target + STDERR.puts 'MASTER_TEST_TARGET environment variable is not set' + STDERR.puts 'setting to default value of "redhat7-64mdcl"' + master_target = 'redhat7-64mdcl' + end + + targets = "#{master_target}-#{agent_target}" + cli = BeakerHostGenerator::CLI.new([targets]) + nodeset_dir = "tmp/nodesets" + nodeset = "#{nodeset_dir}/#{targets}-#{SecureRandom.uuid}.yaml" + FileUtils.mkdir_p(nodeset_dir) + File.open(nodeset, 'w') do |fh| + fh.print(cli.execute) + end + puts nodeset +end diff --git a/modules/services/unix/http/tomcat/checksums.json b/modules/services/unix/http/tomcat/checksums.json new file mode 100644 index 000000000..e34ae9846 --- /dev/null +++ b/modules/services/unix/http/tomcat/checksums.json @@ -0,0 +1,91 @@ +{ + "CHANGELOG.md": "0111310ab2f61aa9b4ba1067d4192c8a", + "CONTRIBUTING.md": "77d0440d7cd4206497f99065c60bed46", + "Gemfile": "bedf635025b279d7c7732adcc8ae9a29", + "LICENSE": "3b83ef96387f14655fc854ddc3c6bd57", + "MAINTAINERS.md": "9934bc3a62164ef18e331f9d26a48910", + "NOTICE": "85212f921145f98696bcb0984a4ebf5e", + "README.md": "11775b474bf23fb38972d42833f0cea0", + "Rakefile": "3851f083966b9bbd6d46e50dba5aa52a", + "examples/default_install_from_package.pp": "830b34981f61e2576276fd7e774f18b1", + "examples/default_install_from_source.pp": "f434508f387e4c70e4988fc5a9ee7eff", + "examples/instance_with_context.pp": "c1606bd1c083f562f6225e9fd789eaa9", + "examples/instance_with_listener.pp": "be9e654defd35f0cec689cf4a2370daf", + "examples/instance_with_realm.pp": "882db8128c3f0d41a602534cc3833bc3", + "examples/instance_with_role_and_user.pp": "c4f536bd8f19b86f778acdf1c0fc3f42", + "examples/jsvc_install_from_source.pp": "7c20e06925a61d38aa678703bc870322", + "examples/multiple_instances.pp": "4a48b03fc81d814c803decf08138ca4e", + "locales/config.yaml": "ae4fa570fb69fe0db92ddaf7533fe1ec", + "locales/ja/puppetlabs-tomcat.po": "e35c7927ccb27df41f371af1ddeea99e", + "locales/puppetlabs-tomcat.pot": "c624f0337acee9c0195fcee039a97075", + "manifests/config/context/environment.pp": "df0ba084471bbf429eb5f5fa15c21665", + "manifests/config/context/manager.pp": "9e349546264aaaed037bb729ce07d58a", + "manifests/config/context/resource.pp": "48983e209e068280e09bbd41239b83fc", + "manifests/config/context/resourcelink.pp": "dc5b41a52b5dd8a9bd542319ae63c4bc", + "manifests/config/context.pp": "065c9f70d855cef4b634bc1f562d734c", + "manifests/config/properties/property.pp": "a891555475b670cfa980131692f21b49", + "manifests/config/properties.pp": "203540525ebbf65cbcb10b879166bef8", + "manifests/config/server/connector.pp": "258b71d9164723385ab319f4fb0ebfba", + "manifests/config/server/context.pp": "4a00f32132ae766c35c345c7010d0dd8", + "manifests/config/server/engine.pp": "a6ac9c710c25c4ec986dbe19243e5d82", + "manifests/config/server/globalnamingresource.pp": "294f04ea3985f291e379010901358dbd", + "manifests/config/server/host.pp": "a7bd045c5cf49abdfc428367272ba57e", + "manifests/config/server/listener.pp": "445ee08285c09b366bf2c0845438483d", + "manifests/config/server/realm.pp": "a1484332e8676a0878bbb9c9720f0f8d", + "manifests/config/server/service.pp": "9ebceb39c785424f197d87ea66e4fb6a", + "manifests/config/server/tomcat_users.pp": "981c9f1ee5ba1cca6f2360e333dea777", + "manifests/config/server/valve.pp": "309f49a518a3ad4140842a66bbe12d0e", + "manifests/config/server.pp": "a7f1107e8d94382efb617910c5af92c2", + "manifests/init.pp": "bf6f6dc95480c068ebb81f170320dbde", + "manifests/install/package.pp": "3c60edc249c96d9978dca2fd381bb53b", + "manifests/install/source.pp": "ca8d119d8261c0eb23cbfbcecb657652", + "manifests/install.pp": "c275083c1554d5421d7fdfe5bd096260", + "manifests/instance/copy_from_home.pp": "9e2ca14fa8abdbe19e6b81b22483837c", + "manifests/instance/dependencies.pp": "5e3380372a1f639e7924c974ca6be7a5", + "manifests/instance.pp": "9eb9aed23a15a10694bff3af45b5f731", + "manifests/params.pp": "fc1975a1d4c5e6e6936187f06c0ab88d", + "manifests/service.pp": "1f5570207bfb37d7acaa1e72ccec7e58", + "manifests/setenv/entry.pp": "14562e8ab3e5400b5863684f8bcdb36c", + "manifests/war.pp": "f52a05c77070f16cc5f488d1c7873af5", + "metadata.json": "ea62848dd3edf60e3518e13c4f3fa1ce", + "readmes/README_ja_JP.md": "44f434658a48b77c6c9dac62bcdc93ca", + "spec/acceptance/acceptance_1a_spec.rb": "bc60b9326b7322800c37514ea98ae6cc", + "spec/acceptance/acceptance_1b_spec.rb": "11d7e3006b2cf0866d3a346d09e3e5ac", + "spec/acceptance/acceptance_2a_spec.rb": "08c02584fca96dd8af5743294273a4de", + "spec/acceptance/acceptance_2b_spec.rb": "1ebd729f7ed53a2b3942a6f3c4ec9851", + "spec/acceptance/acceptance_3a_spec.rb": "7f9a40edbcb2d19e0abc6583247bd9b2", + "spec/acceptance/acceptance_3b_spec.rb": "7dd99edd2fdaece73a39e91dbb1c9b91", + "spec/acceptance/acceptance_4a_spec.rb": "b790a9b1417d3e97b32db6434f19aea5", + "spec/acceptance/acceptance_4b_spec.rb": "edd34954cba8e16477a53c8abf36f7d8", + "spec/acceptance/nodesets/centos-7-x64.yml": "a713f3abd3657f0ae2878829badd23cd", + "spec/acceptance/nodesets/debian-8-x64.yml": "d2d2977900989f30086ad251a14a1f39", + "spec/acceptance/nodesets/default.yml": "b42da5a1ea0c964567ba7495574b8808", + "spec/acceptance/nodesets/docker/centos-7.yml": "8a3892807bdd62306ae4774f41ba11ae", + "spec/acceptance/nodesets/docker/debian-8.yml": "ac8e871d1068c96de5e85a89daaec6df", + "spec/acceptance/nodesets/docker/ubuntu-14.04.yml": "dc42ee922a96908d85b8f0f08203ce58", + "spec/acceptance/readme_spec.rb": "7207da433af39149d6fa9674e99b0f22", + "spec/classes/init_spec.rb": "d4b65c6bf7d467c62e950592091eaff3", + "spec/classes/tomcat_spec.rb": "71824d52acbced24df30c4e38ca38925", + "spec/defines/config/context/environment_spec.rb": "b2ae57cc8e07beeaf597ad5958d25ba2", + "spec/defines/config/context/manager_spec.rb": "133cfec1c3ccd0493c69b600b0d031aa", + "spec/defines/config/context/resource_spec.rb": "493cdd6384f75783b214c9032b15d471", + "spec/defines/config/context/resourcelink_spec.rb": "e581ff7eba88179d03fa9c6750f7f59e", + "spec/defines/config/context_spec.rb": "500719e48d80c970097b6fe49b39ec67", + "spec/defines/config/server/connector_spec.rb": "20802e2c672e2113c677557423fb67b2", + "spec/defines/config/server/context_spec.rb": "c9bb51200b14c50d4c50a674f73d298f", + "spec/defines/config/server/engine_spec.rb": "a40216312a305438f9f3440c792564e1", + "spec/defines/config/server/host_spec.rb": "bc19c54a600667789cd0667de8708079", + "spec/defines/config/server/listener_spec.rb": "46452341dd436b215eca7fa5b35432f3", + "spec/defines/config/server/realm_spec.rb": "06cd485fa339a9c6663f5b175fdda1dc", + "spec/defines/config/server/service_spec.rb": "6b8bdce1aae2ae3b5ab29d06cec195c7", + "spec/defines/config/server/tomcat_users_spec.rb": "a7c7f75a5ea928346f6c4f798574fd0f", + "spec/defines/config/server/valve_spec.rb": "e72c71694971f423d3823ef28c367fc1", + "spec/defines/config/server_spec.rb": "35e3720521a9dd086f5482316f86feb1", + "spec/defines/instance_spec.rb": "c212846c51c30c783b3c173ac21b5031", + "spec/defines/service_spec.rb": "04e434800afa66ea4d266b84f7791a4e", + "spec/defines/setenv/entry_spec.rb": "04a341ec601533c1fa17b9cd3a3fe93f", + "spec/defines/war_spec.rb": "f0ca6d7d6a42c39fee9fd5545651a858", + "spec/spec_helper.rb": "b2db3bc02b4ac2fd5142a6621c641b07", + "spec/spec_helper_acceptance.rb": "758a57f252ce0d4875c88cfb2ee76e7e", + "templates/jsvc-init.erb": "fd5de8fb7fc23de31c00d2343535c77a" +} \ No newline at end of file diff --git a/modules/services/unix/http/tomcat/examples/default_install_from_package.pp b/modules/services/unix/http/tomcat/examples/default_install_from_package.pp new file mode 100644 index 000000000..9a809b870 --- /dev/null +++ b/modules/services/unix/http/tomcat/examples/default_install_from_package.pp @@ -0,0 +1,13 @@ +# This code fragment will install the tomcat package from EPEL and start the service +# +class { 'tomcat': } +class { 'epel': } +-> tomcat::instance { 'default': + install_from_source => false, + package_name => 'tomcat', +} +-> tomcat::service { 'default': + use_jsvc => false, + use_init => true, + service_name => 'tomcat', +} diff --git a/modules/services/unix/http/tomcat/examples/default_install_from_source.pp b/modules/services/unix/http/tomcat/examples/default_install_from_source.pp new file mode 100644 index 000000000..c3c33e4ad --- /dev/null +++ b/modules/services/unix/http/tomcat/examples/default_install_from_source.pp @@ -0,0 +1,9 @@ +# This code fragment downloads tomcat 8.0 then starts the service +# +class { 'tomcat': } +class { 'java': } + +tomcat::instance { 'test': + source_url => 'http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz' +} +-> tomcat::service { 'default': } diff --git a/modules/services/unix/http/tomcat/examples/instance_with_context.pp b/modules/services/unix/http/tomcat/examples/instance_with_context.pp new file mode 100644 index 000000000..079d7d257 --- /dev/null +++ b/modules/services/unix/http/tomcat/examples/instance_with_context.pp @@ -0,0 +1,20 @@ +# This code fragment downloads tomcat 7.0.53, creates an instance and adds a context to localhost +# +class { 'tomcat': } +class { 'java': } + +tomcat::instance { 'mycat': + catalina_base => '/opt/apache-tomcat/mycat', + source_url => 'http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz', +} +-> tomcat::config::server::context { 'mycat-test': + catalina_base => '/opt/apache-tomcat/mycat', + context_ensure => present, + doc_base => 'test.war', + parent_service => 'Catalina', + parent_engine => 'Catalina', + parent_host => 'localhost', + additional_attributes => { + 'path' => '/test', + }, +} diff --git a/modules/services/unix/http/tomcat/examples/instance_with_listener.pp b/modules/services/unix/http/tomcat/examples/instance_with_listener.pp new file mode 100644 index 000000000..e16c3202c --- /dev/null +++ b/modules/services/unix/http/tomcat/examples/instance_with_listener.pp @@ -0,0 +1,18 @@ +# This code fragment downloads tomcat 7.0.53, creates an instance and adds a listener +# +class { 'tomcat': } +class { 'java': } + +tomcat::instance { 'mycat': + catalina_base => '/opt/apache-tomcat/mycat', + source_url => 'http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz', +} +-> tomcat::config::server::listener { 'mycat-jmx': + catalina_base => '/opt/apache-tomcat/mycat', + listener_ensure => present, + class_name => 'org.apache.catalina.mbeans.JmxRemoteLifecycleListener', + additional_attributes => { + 'rmiRegistryPortPlatform' => '10001', + 'rmiServerPortPlatform' => '10002', + }, +} diff --git a/modules/services/unix/http/tomcat/examples/instance_with_realm.pp b/modules/services/unix/http/tomcat/examples/instance_with_realm.pp new file mode 100644 index 000000000..e816942b1 --- /dev/null +++ b/modules/services/unix/http/tomcat/examples/instance_with_realm.pp @@ -0,0 +1,20 @@ +# This code fragment downloads Tomcat 8.0.15, configures an instance, and adds a JNDIRealm nested under a LockOutRealm. +class { 'tomcat': } +class { 'java': } + +tomcat::instance { 'tomcat8': + source_url => 'http://mirror.reverse.net/pub/apache/tomcat/tomcat-8/v8.0.15/bin/apache-tomcat-8.0.15.tar.gz', + purge_realms => true, +} + +-> tomcat::config::server::realm { 'org.apache.catalina.realm.LockOutRealm': + realm_ensure => 'present', +} + +-> tomcat::config::server::realm { 'org.apache.catalina.realm.JNDIRealm': + realm_ensure => 'present', + parent_realm => 'org.apache.catalina.realm.LockOutRealm', + additional_attributes => { + 'connectionURL' => 'ldap://localhost' + }, +} diff --git a/modules/services/unix/http/tomcat/examples/instance_with_role_and_user.pp b/modules/services/unix/http/tomcat/examples/instance_with_role_and_user.pp new file mode 100644 index 000000000..d31282f40 --- /dev/null +++ b/modules/services/unix/http/tomcat/examples/instance_with_role_and_user.pp @@ -0,0 +1,23 @@ +# This code fragment downloads tomcat 7.0.53, creates an instance and adds a role and user +# +class { 'tomcat': } +class { 'java': } + +tomcat::instance { 'mycat': + catalina_base => '/opt/apache-tomcat/mycat', + source_url => 'http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz', +} +-> tomcat::config::server::tomcat_users { + 'mycat-role-tester': + ensure => present, + catalina_base => '/opt/apache-tomcat/mycat', + element => 'role', + element_name => 'tester'; + 'mycat-user-example': + ensure => present, + catalina_base => '/opt/apache-tomcat/mycat', + element => 'user', + element_name => 'example', + password => 'very-secret-password', + roles => ['tester']; +} diff --git a/modules/services/unix/http/tomcat/examples/jsvc_install_from_source.pp b/modules/services/unix/http/tomcat/examples/jsvc_install_from_source.pp new file mode 100644 index 000000000..d2be93da0 --- /dev/null +++ b/modules/services/unix/http/tomcat/examples/jsvc_install_from_source.pp @@ -0,0 +1,37 @@ +# This code fragment downloads tomcat 8.0, compiles jsvc, then starts the service +# +class { 'tomcat': } +class { 'gcc': } +class { 'java': } + +tomcat::instance { 'test': + source_url => 'http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz' +} +-> staging::extract { 'commons-daemon-native.tar.gz': + source => "${::tomcat::catalina_home}/bin/commons-daemon-native.tar.gz", + target => "${::tomcat::catalina_home}/bin", + unless => "test -d ${::tomcat::catalina_home}/bin/commons-daemon-1.0.15-native-src", +} +-> exec { 'configure jsvc': + command => 'JAVA_HOME=/etc/alternatives/java_sdk configure', + creates => "${::tomcat::catalina_home}/bin/commons-daemon-1.0.15-native-src/unix/Makefile", + cwd => "${::tomcat::catalina_home}/bin/commons-daemon-1.0.15-native-src/unix", + path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:${::tomcat::catalina_home}/bin/commons-daemon-1.0.15-native-src/unix", + require => [ Class['gcc'], Class['java'] ], + provider => shell, +} +-> exec { 'make jsvc': + command => 'make', + creates => "${::tomcat::catalina_home}/bin/commons-daemon-1.0.15-native-src/unix/jsvc", + cwd => "${::tomcat::catalina_home}/bin/commons-daemon-1.0.15-native-src/unix", + path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:${::tomcat::catalina_home}/bin/commons-daemon-1.0.15-native-src/unix", + provider => shell, +} +-> file { 'jsvc': + ensure => link, + path => "${::tomcat::catalina_home}/bin/jsvc", + target => "${::tomcat::catalina_home}/bin/commons-daemon-1.0.15-native-src/unix/jsvc", +} +-> tomcat::service { 'default': + use_jsvc => true, +} diff --git a/modules/services/unix/http/tomcat/examples/multiple_instances.pp b/modules/services/unix/http/tomcat/examples/multiple_instances.pp new file mode 100644 index 000000000..e3e708994 --- /dev/null +++ b/modules/services/unix/http/tomcat/examples/multiple_instances.pp @@ -0,0 +1,38 @@ +class { 'tomcat': } +class { 'java': } + +tomcat::instance { 'tomcat8': + catalina_base => '/opt/apache-tomcat/tomcat8', + source_url => 'http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz' +} +-> tomcat::service { 'default': + catalina_base => '/opt/apache-tomcat/tomcat8', +} + +tomcat::instance { 'tomcat6': + source_url => 'http://apache.mirror.quintex.com/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz', + catalina_base => '/opt/apache-tomcat/tomcat6', +} +-> tomcat::config::server { 'tomcat6': + catalina_base => '/opt/apache-tomcat/tomcat6', + port => '8105', +} +-> tomcat::config::server::connector { 'tomcat6-http': + catalina_base => '/opt/apache-tomcat/tomcat6', + port => '8180', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8543' + }, +} +-> tomcat::config::server::connector { 'tomcat6-ajp': + catalina_base => '/opt/apache-tomcat/tomcat6', + port => '8109', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8543' + }, +} +-> tomcat::service { 'tomcat6': + catalina_base => '/opt/apache-tomcat/tomcat6' +} diff --git a/modules/services/unix/http/tomcat/locales/config.yaml b/modules/services/unix/http/tomcat/locales/config.yaml new file mode 100644 index 000000000..6663480ae --- /dev/null +++ b/modules/services/unix/http/tomcat/locales/config.yaml @@ -0,0 +1,25 @@ +--- +# This is the project-specific configuration file for setting up +# fast_gettext for your project. +gettext: + # This is used for the name of the .pot and .po files; they will be + # called .pot? + project_name: puppetlabs-tomcat + # This is used in comments in the .pot and .po files to indicate what + # project the files belong to and should bea little more desctiptive than + # + package_name: puppetlabs-tomcat + # The locale that the default messages in the .pot file are in + default_locale: en + # The email used for sending bug reports. + bugs_address: docs@puppet.com + # The holder of the copyright. + copyright_holder: Puppet, Inc. + # This determines which comments in code should be eligible for translation. + # Any comments that start with this string will be externalized. (Leave + # empty to include all.) + comments_tag: TRANSLATOR + # Patterns for +Dir.glob+ used to find all files that might contain + # translatable content, relative to the project root directory + source_files: + diff --git a/modules/services/unix/http/tomcat/locales/ja/puppetlabs-tomcat.po b/modules/services/unix/http/tomcat/locales/ja/puppetlabs-tomcat.po new file mode 100644 index 000000000..53572faee --- /dev/null +++ b/modules/services/unix/http/tomcat/locales/ja/puppetlabs-tomcat.po @@ -0,0 +1,21 @@ +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-21 14:19+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Eriko Kashiwagi , 2017\n" +"Language-Team: Japanese (Japan) (https://www.transifex.com/puppet/teams/29089/ja_JP/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja_JP\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Translate Toolkit 2.0.0\n" + +#. metadata.json +#: .summary +msgid "Installs, deploys, and configures Apache Tomcat web services." +msgstr "Apache Tomcat Webサービスをインストールし、デプロイし、構成します。" diff --git a/modules/services/unix/http/tomcat/locales/puppetlabs-tomcat.pot b/modules/services/unix/http/tomcat/locales/puppetlabs-tomcat.pot new file mode 100644 index 000000000..34595a2ef --- /dev/null +++ b/modules/services/unix/http/tomcat/locales/puppetlabs-tomcat.pot @@ -0,0 +1,18 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-21 14:19+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 2.0.0\n" + +#. metadata.json +#: .summary +msgid "Installs, deploys, and configures Apache Tomcat web services." +msgstr "" diff --git a/modules/services/unix/http/tomcat/manifests/config/context.pp b/modules/services/unix/http/tomcat/manifests/config/context.pp new file mode 100644 index 000000000..b159b240e --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/context.pp @@ -0,0 +1,32 @@ +# Definition: tomcat::config::context +# +# Configure attributes for the Context element in $CATALINA_BASE/conf/context.xml +# +# Parameters +# - $catalina_base is the base directory for the Tomcat installation. + + + +define tomcat::config::context ( + $catalina_base = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + $_watched_resource = 'set Context/WatchedResource/#text "WEB-INF/web.xml"' + + $changes = delete_undef_values([$_watched_resource]) + + if ! empty($changes) { + augeas { "context-${_catalina_base}": + lens => 'Xml.lns', + incl => "${_catalina_base}/conf/context.xml", + changes => $changes, + } + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/context/environment.pp b/modules/services/unix/http/tomcat/manifests/config/context/environment.pp new file mode 100644 index 000000000..dab8e7b1f --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/context/environment.pp @@ -0,0 +1,115 @@ +# Definition: tomcat::config::context::environment +# +# Configure Environment elements in $CATALINA_BASE/conf/context.xml +# +# Parameters: +# - $ensure specifies whether you are trying to add or remove the +# Environment element. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - $catalina_base is the base directory for the Tomcat installation. +# - $environment_name is the name of the Environment to be created, relative to +# the java:comp/env context. +# - $type is the fully qualified Java class name expected by the web application +# for this environment entry. +# - $value that will be presented to the application when requested from +# the JNDI context. +# - $description is an optional string for a human-readable description +# of this environment entry. +# - Set $override to false if you do not want an for +# the same environment entry name to override the value specified here. +# - An optional hash of $additional_attributes to add to the Environment. Should +# be of the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Environment. +define tomcat::config::context::environment ( + $ensure = 'present', + $catalina_base = $::tomcat::catalina_home, + $environment_name = $name, + $type = undef, + $value = undef, + $description = undef, + $override = undef, + $additional_attributes = {}, + $attributes_to_remove = [], +) { + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + if is_bool($override) { + $_override = bool2str($override) + } else { + $_override = $override + } + + validate_re($ensure, '^(present|absent|true|false)$') + validate_absolute_path($catalina_base) + + validate_string( + $environment_name, + $type, + $value, + $description, + ) + + validate_hash($additional_attributes) + validate_array($attributes_to_remove) + + $base_path = "Context/Environment[#attribute/name='${environment_name}']" + + if $ensure =~ /^(absent|false)$/ { + $changes = "rm ${base_path}" + } else { + if empty($type) { + fail('$type must be specified') + } + + if empty($value) { + fail('$value must be specified') + } + + $set_name = "set ${base_path}/#attribute/name ${environment_name}" + $set_type = "set ${base_path}/#attribute/type ${type}" + $set_value = "set ${base_path}/#attribute/value ${value}" + + if ! empty($_override) { + validate_re($_override, '(true|false)', '$override must be true or false') + $set_override = "set ${base_path}/#attribute/override ${_override}" + } else { + $set_override = "rm ${base_path}/#attribute/override" + } + + if ! empty($description) { + $set_description = "set ${base_path}/#attribute/description \'${description}\'" + } else { + $set_description = "rm ${base_path}/#attribute/description" + } + + if ! empty($additional_attributes) { + $set_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${base_path}/#attribute/"), "'") + } else { + $set_additional_attributes = undef + } + + if ! empty(any2array($attributes_to_remove)) { + $rm_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${base_path}/#attribute/") + } else { + $rm_attributes_to_remove = undef + } + + $changes = delete_undef_values(flatten([ + $set_name, + $set_type, + $set_value, + $set_override, + $set_description, + $set_additional_attributes, + $rm_attributes_to_remove, + ])) + } + + augeas { "context-${catalina_base}-environment-${name}": + lens => 'Xml.lns', + incl => "${catalina_base}/conf/context.xml", + changes => $changes, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/context/manager.pp b/modules/services/unix/http/tomcat/manifests/config/context/manager.pp new file mode 100644 index 000000000..7d2df53fd --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/context/manager.pp @@ -0,0 +1,69 @@ +# Definition: tomcat::config::context::manager +# +# Configure Manager elements in $CATALINA_BASE/conf/context.xml +# +# Parameters: +# - $catalina_base is the base directory for the Tomcat installation. +# - $ensure specifies whether you are trying to add or remove the +# Manager element. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - $manager_name is the name of the Manager to be created, relative to +# the java:comp/env context. +# - $type is the fully qualified Java class name expected by the web application +# when it performs a lookup for this manager +# - An optional hash of $additional_attributes to add to the Manager. Should +# be of the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Manager. +define tomcat::config::context::manager ( + $ensure = 'present', + $catalina_base = $::tomcat::catalina_home, + $manager_classname = $name, + $additional_attributes = {}, + $attributes_to_remove = [], +) { + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($ensure, '^(present|absent|true|false)$') + + if $manager_classname { + $_manager_classname = $manager_classname + } else { + $_manager_classname = $name + } + + $base_path = "Context/Manager[#attribute/className='${_manager_classname}']" + + if $ensure =~ /^(absent|false)$/ { + $changes = "rm ${base_path}" + } else { + $set_name = "set ${base_path}/#attribute/className '${_manager_classname}'" + + if ! empty($additional_attributes) { + $set_additional_attributes = + suffix(prefix(join_keys_to_values($additional_attributes, " '"), + "set ${base_path}/#attribute/"), "'") + } else { + $set_additional_attributes = undef + } + if ! empty(any2array($attributes_to_remove)) { + $rm_attributes_to_remove = + prefix(any2array($attributes_to_remove), "rm ${base_path}/#attribute/") + } else { + $rm_attributes_to_remove = undef + } + + $changes = delete_undef_values(flatten([ + $set_name, + $set_additional_attributes, + $rm_attributes_to_remove, + ])) + } + + augeas { "context-${catalina_base}-manager-${name}": + lens => 'Xml.lns', + incl => "${catalina_base}/conf/context.xml", + changes => $changes, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/context/resource.pp b/modules/services/unix/http/tomcat/manifests/config/context/resource.pp new file mode 100644 index 000000000..11d4c6732 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/context/resource.pp @@ -0,0 +1,75 @@ +# Definition: tomcat::config::context::resource +# +# Configure Resource elements in $CATALINA_BASE/conf/context.xml +# +# Parameters: +# - $catalina_base is the base directory for the Tomcat installation. +# - $ensure specifies whether you are trying to add or remove the +# Resource element. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - $resource_name is the name of the Resource to be created, relative to +# the java:comp/env context. +# - $type is the fully qualified Java class name expected by the web application +# when it performs a lookup for this resource +# - An optional hash of $additional_attributes to add to the Resource. Should +# be of the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Connector. +define tomcat::config::context::resource ( + $ensure = 'present', + $resource_name = $name, + $resource_type = undef, + $catalina_base = $::tomcat::catalina_home, + $additional_attributes = {}, + $attributes_to_remove = [], +) { + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($ensure, '^(present|absent|true|false)$') + + if $resource_name { + $_resource_name = $resource_name + } else { + $_resource_name = $name + } + + $base_path = "Context/Resource[#attribute/name='${_resource_name}']" + + if $ensure =~ /^(absent|false)$/ { + $changes = "rm ${base_path}" + } else { + # (MODULES-3353) does this need to be quoted? + $set_name = "set ${base_path}/#attribute/name ${_resource_name}" + if $resource_type { + $set_type = "set ${base_path}/#attribute/type ${resource_type}" + } else { + $set_type = undef + } + + if ! empty($additional_attributes) { + $set_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${base_path}/#attribute/"), "'") + } else { + $set_additional_attributes = undef + } + if ! empty(any2array($attributes_to_remove)) { + $rm_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${base_path}/#attribute/") + } else { + $rm_attributes_to_remove = undef + } + + + $changes = delete_undef_values(flatten([ + $set_name, + $set_type, + $set_additional_attributes, + $rm_attributes_to_remove, + ])) + } + + augeas { "context-${catalina_base}-resource-${name}": + lens => 'Xml.lns', + incl => "${catalina_base}/conf/context.xml", + changes => $changes, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/context/resourcelink.pp b/modules/services/unix/http/tomcat/manifests/config/context/resourcelink.pp new file mode 100644 index 000000000..c342895c4 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/context/resourcelink.pp @@ -0,0 +1,64 @@ +# Definition: tomcat::config::server::resourcelink +# +# Configure a ResourceLink element in the designated xml config. +# +# Parameters: +# - $ensure specifies whether you are trying to add or remove the +# ResourceLink element. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - $catalina_base is the base directory for the Tomcat instance. +# - $resourcelink_name is the name of the resource link to be created, relative +# to the java:comp/env context. Defaults to $name +# - $resourcelink_type is the fully qualified Java class name expected by the web +# application when it performs a lookup for this resource link. Required +define tomcat::config::context::resourcelink ( + $ensure = 'present', + $catalina_base = $::tomcat::catalina_home, + $resourcelink_name = $name, + $resourcelink_type = undef, + $additional_attributes = {}, + $attributes_to_remove = [], +) { + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Context configurations require Augeas >= 1.0.0') + } + + validate_re($ensure, '^(present|absent|true|false)$') + + $base_path = "Context/ResourceLink[#attribute/name='${resourcelink_name}']" + + if $ensure =~ /^(absent|false)$/ { + $augeaschanges = "rm ${base_path}" + } else { + $set_name = "set ${base_path}/#attribute/name ${resourcelink_name}" + if $resourcelink_type { + $set_type = "set ${base_path}/#attribute/type ${resourcelink_type}" + } else { + $set_type = undef + } + + if ! empty($additional_attributes) { + $set_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${base_path}/#attribute/"), "'") + } else { + $set_additional_attributes = undef + } + if ! empty(any2array($attributes_to_remove)) { + $rm_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${base_path}/#attribute/") + } else { + $rm_attributes_to_remove = undef + } + + $augeaschanges = delete_undef_values(flatten([ + $set_name, + $set_type, + $set_additional_attributes, + $rm_attributes_to_remove, + ])) + } + + augeas { "context-${catalina_base}-resourcelink-${name}": + lens => 'Xml.lns', + incl => "${catalina_base}/conf/context.xml", + changes => $augeaschanges, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/properties.pp b/modules/services/unix/http/tomcat/manifests/config/properties.pp new file mode 100644 index 000000000..1839f4ea9 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/properties.pp @@ -0,0 +1,22 @@ +## manage the catalina.properties file +# private +define tomcat::config::properties ( + $catalina_base, + $catalina_home, + $user, + $group, +) { + tag(sha1($catalina_base)) + tag(sha1($catalina_home)) + concat { "${catalina_base}/conf/catalina.properties": + ensure_newline => true, + owner => $user, + group => $group, + mode => '0640', + } + concat::fragment { "${catalina_base} properties base file from catalina_home ${$catalina_home}/conf/catalina.properties": + target => "${catalina_base}/conf/catalina.properties", + source => "${catalina_home}/conf/catalina.properties", + order => '01', + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/properties/property.pp b/modules/services/unix/http/tomcat/manifests/config/properties/property.pp new file mode 100644 index 000000000..9e065a688 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/properties/property.pp @@ -0,0 +1,11 @@ +## manage additional entries for the properties file, typically catalina.properties +define tomcat::config::properties::property ( + $catalina_base, + $value, + $property = $name, +) { + concat::fragment { "${catalina_base}/conf/catalina.properties property ${property}": + target => "${catalina_base}/conf/catalina.properties", + content => "${property}=${value}", + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server.pp b/modules/services/unix/http/tomcat/manifests/config/server.pp new file mode 100644 index 000000000..5f64bd982 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server.pp @@ -0,0 +1,81 @@ +# Definition: tomcat::config::server +# +# Configure attributes for the Server element in $CATALINA_BASE/conf/server.xml +# +# Parameters +# - $catalina_base is the base directory for the Tomcat installation. +# - $class_name is the optional className attribute. +# - $class_name_ensure specifies whether you are trying to set or remove the +# className attribute. Valid values are 'true', 'false', 'present', or +# 'absent'. Defaults to 'present'. +# - $address is the optional address attribute. +# - $address_ensure specifies whether you are trying to set of remove the +# address attribute. Valid values are 'true', 'false', 'present', or +# 'absent'. Defaults to 'present'. +# - The $port to wait for shutdown commands on. +# - The $shutdown command that must be sent to $port. +define tomcat::config::server ( + $catalina_base = undef, + $class_name = undef, + $class_name_ensure = 'present', + $address = undef, + $address_ensure = 'present', + $port = undef, + $shutdown = undef, + $server_config = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($class_name_ensure, '^(present|absent|true|false)$') + validate_re($address_ensure, '^(present|absent|true|false)$') + + if $class_name_ensure =~ /^(absent|false)$/ { + $_class_name = 'rm Server/#attribute/className' + } elsif $class_name { + $_class_name = "set Server/#attribute/className ${class_name}" + } else { + $_class_name = undef + } + + if $address_ensure =~ /^(absent|false)$/ { + $_address = 'rm Server/#attribute/address' + } elsif $address { + $_address = "set Server/#attribute/address ${address}" + } else { + $_address = undef + } + + if $port { + $_port = "set Server/#attribute/port ${port}" + } else { + $_port = undef + } + + if $shutdown { + $_shutdown = "set Server/#attribute/shutdown ${shutdown}" + } else { + $_shutdown = undef + } + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${_catalina_base}/conf/server.xml" + } + + $changes = delete_undef_values([$_class_name, $_address, $_port, $_shutdown]) + + if ! empty($changes) { + augeas { "server-${_catalina_base}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $changes, + } + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/connector.pp b/modules/services/unix/http/tomcat/manifests/config/server/connector.pp new file mode 100644 index 000000000..7e813113e --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/connector.pp @@ -0,0 +1,94 @@ +# Definition: tomcat::config::server::connector +# +# Configure Connector elements in $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $catalina_base is the base directory for the Tomcat installation. +# - $connector_ensure specifies whether you are trying to add or remove the +# Connector element. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - The $port attribute. This attribute is required unless $connector_ensure +# is set to false. +# - The $protocol attribute. Defaults to $name when not specified. +# - $parent_service is the Service element this Connector should be nested +# beneath. Defaults to 'Catalina'. +# - An optional hash of $additional_attributes to add to the Connector. Should +# be of the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Connector. +define tomcat::config::server::connector ( + $catalina_base = undef, + $connector_ensure = 'present', + $port = undef, + $protocol = $name, + $parent_service = 'Catalina', + $additional_attributes = {}, + $attributes_to_remove = [], + $purge_connectors = undef, + $server_config = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + $_purge_connectors = pick($purge_connectors, $::tomcat::purge_connectors) + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($connector_ensure, '^(present|absent|true|false)$') + validate_hash($additional_attributes) + validate_bool($_purge_connectors) + validate_re($_catalina_base, '^.*[^/]$', '$catalina_base must not end in a /!') + + $path = "Server/Service[#attribute/name='${parent_service}']" + + if $_purge_connectors { + $__purge_connectors = "rm Server//Connector[#attribute/protocol='${protocol}'][#attribute/port!='${port}']" + } else { + $__purge_connectors = undef + } + + if $_purge_connectors and ($connector_ensure =~ /^(absent|false)$/) { + fail('$connector_ensure must be set to \'true\' or \'present\' to use $purge_connectors') + } + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${_catalina_base}/conf/server.xml" + } + + if $connector_ensure =~ /^(absent|false)$/ { + if ! $port { + $base_path = "${path}/Connector[#attribute/protocol='${protocol}']" + } else { + $base_path = "${path}/Connector[#attribute/port='${port}']" + } + $changes = "rm ${base_path}" + } else { + if ! $port { + fail('$port must be specified unless $connector_ensure is set to \'absent\' or \'false\'') + } + + $base_path = "${path}/Connector[#attribute/port='${port}']" + $_port = "set ${base_path}/#attribute/port ${port}" + $_protocol_change = "set ${base_path}/#attribute/protocol ${protocol}" + if ! empty($additional_attributes) { + $_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${base_path}/#attribute/"), "'") + } else { + $_additional_attributes = undef + } + if ! empty(any2array($attributes_to_remove)) { + $_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${base_path}/#attribute/") + } else { + $_attributes_to_remove = undef + } + + $changes = delete_undef_values(flatten([ $__purge_connectors, $_port, $_protocol_change, $_additional_attributes, $_attributes_to_remove ])) + } + + augeas { "server-${_catalina_base}-${parent_service}-connector-${port}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $changes, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/context.pp b/modules/services/unix/http/tomcat/manifests/config/server/context.pp new file mode 100644 index 000000000..d19c9f8ef --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/context.pp @@ -0,0 +1,106 @@ +# Definition tomcat::config::server::context +# +# Configure a Context element in $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $catalina_base is the root of the Tomcat installation +# - $context_ensure specifies whether you are trying to add or remove the Context +# element. Valid values are 'true', 'false', 'present', or 'absent'. Defaults +# to 'present'. +# - $doc_base is the docBase attribute of the Context. +# If not specified, defaults to $name. +# - $parent_service is the Service element this Context should be nested beneath. +# Defaults to 'Catalina'. +# - $parent_engine is the `name` attribute to the Engine element the Host of this Context +# should be nested beneath. Only valid if $parent_host is specified. +# - $parent_host is the `name` attribute to the Host element this Context +# should be nested beneath. +# - An optional hash of $additional_attributes to add to the Context. Should be of +# the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Context. +# +define tomcat::config::server::context ( + $catalina_base = undef, + $context_ensure = 'present', + $doc_base = undef, + $parent_service = undef, + $parent_engine = undef, + $parent_host = undef, + $additional_attributes = {}, + $attributes_to_remove = [], + $server_config = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($context_ensure, '^(present|absent|true|false)$') + validate_hash($additional_attributes) + validate_array($attributes_to_remove) + + if $doc_base { + $_doc_base = $doc_base + } else { + $_doc_base = $name + } + + if $parent_service { + $_parent_service = $parent_service + } else { + $_parent_service = 'Catalina' + } + + if $parent_engine and ! $parent_host { + warning('context elements cannot be nested directly under engine elements, ignoring $parent_engine') + } + + if $parent_engine and $parent_host { + $_parent_engine = $parent_engine + } else { + $_parent_engine = undef + } + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${_catalina_base}/conf/server.xml" + } + + if $parent_host and ! $_parent_engine { + $path = "Server/Service[#attribute/name='${_parent_service}']/Engine/Host[#attribute/name='${parent_host}']/Context[#attribute/docBase='${_doc_base}']" + } elsif $parent_host and $_parent_engine { + $path = "Server/Service[#attribute/name='${_parent_service}']/Engine[#attribute/name='${_parent_engine}']/Host[#attribute/name='${parent_host}']/Context[#attribute/docBase='${_doc_base}']" + } else { + $path = "Server/Service[#attribute/name='${_parent_service}']/Engine/Host/Context[#attribute/docBase='${_doc_base}']" + } + + if $context_ensure =~ /^(absent|false)$/ { + $augeaschanges = "rm ${path}" + } else { + $context = "set ${path}/#attribute/docBase ${_doc_base}" + + if ! empty($additional_attributes) { + $_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${path}/#attribute/"), "'") + } else { + $_additional_attributes = undef + } + + if ! empty(any2array($attributes_to_remove)) { + $_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${path}/#attribute/") + } else { + $_attributes_to_remove = undef + } + + $augeaschanges = delete_undef_values(flatten([$context, $_additional_attributes, $_attributes_to_remove])) + } + + augeas { "${_catalina_base}-${_parent_service}-${_parent_engine}-${parent_host}-context-${name}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $augeaschanges, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/engine.pp b/modules/services/unix/http/tomcat/manifests/config/server/engine.pp new file mode 100644 index 000000000..19a4c1214 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/engine.pp @@ -0,0 +1,113 @@ +# Definition: tomcat::config::server::engine +# +# Configure Engine elements in $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $default_host is the defaultHost attribute for the Engine. This parameter is +# required. +# - $catalina_base is the base directory for the Tomcat installation. +# - $background_processor_delay is the optional backgroundProcessorDelay +# attribute. +# - $background_processor_delay_ensure specifies whether you are trying to add +# or remove the backgroundProcessorDelay attribute. Valid values are 'true', +# 'false', 'present', and 'absent'. Defaults to 'present'. +# - $class_name is the optional className attribute. +# - $class_name_ensure specifies whether you are trying to add or remove the +# className attribute. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - $engine_name is the name attribute. Defaults to $name. +# - $jvm_route is the optional jvmRoute attribute. +# - $jvm_route_ensure specifies whether you are trying to add or remove the +# jvmRoute attribute. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - $parent_service is the Service element this Engine should be nested beneath. +# Defaults to 'Catalina'. +# - $start_stop_threads is the optional startStopThreads attribute +# - $start_stop_threads_ensure specifies whether you are trying to add or remove +# the startStopThreads attribute. Valid values are 'true', 'false', 'present' +# and 'absent'. Defaults to 'present'. +define tomcat::config::server::engine ( + $default_host, + $catalina_base = undef, + $background_processor_delay = undef, + $background_processor_delay_ensure = 'present', + $class_name = undef, + $class_name_ensure = 'present', + $engine_name = undef, + $jvm_route = undef, + $jvm_route_ensure = 'present', + $parent_service = 'Catalina', + $start_stop_threads = undef, + $start_stop_threads_ensure = 'present', + $server_config = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($background_processor_delay_ensure, '^(present|absent|true|false)$') + validate_re($class_name_ensure, '^(present|absent|true|false)$') + validate_re($jvm_route_ensure, '^(present|absent|true|false)$') + validate_re($start_stop_threads_ensure, '^(present|absent|true|false)$') + + if $engine_name { + $_name = $engine_name + } else { + $_name = $name + } + + $base_path = "Server/Service[#attribute/name='${parent_service}']/Engine" + + $_name_change = "set ${base_path}/#attribute/name ${_name}" + $_default_host = "set ${base_path}/#attribute/defaultHost ${default_host}" + + if $background_processor_delay_ensure =~ /^(absent|false)$/ { + $_background_processor_delay = "rm ${base_path}/#attribute/backgroundProcessorDelay" + } elsif $background_processor_delay { + $_background_processor_delay = "set ${base_path}/#attribute/backgroundProcessorDelay ${background_processor_delay}" + } else { + $_background_processor_delay = undef + } + + if $class_name_ensure =~ /^(absent|false)$/ { + $_class_name = "rm ${base_path}/#attribute/className" + } elsif $class_name { + $_class_name = "set ${base_path}/#attribute/className ${class_name}" + } else { + $_class_name = undef + } + + if $jvm_route_ensure =~ /^(absent|false)$/ { + $_jvm_route = "rm ${base_path}/#attribute/jvmRoute" + } elsif $jvm_route { + $_jvm_route = "set ${base_path}/#attribute/jvmRoute ${jvm_route}" + } else { + $_jvm_route = undef + } + + if $start_stop_threads_ensure =~ /^(absent|false)$/ { + $_start_stop_threads = "rm ${base_path}/#attribute/startStopThreads" + } elsif $start_stop_threads { + $_start_stop_threads = "set ${base_path}/#attribute/startStopThreads ${start_stop_threads}" + } else { + $_start_stop_threads = undef + } + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${_catalina_base}/conf/server.xml" + } + + $changes = delete_undef_values([$_name_change, $_default_host, $_background_processor_delay, $_class_name, $_jvm_route, $_start_stop_threads]) + + augeas { "${_catalina_base}-${parent_service}-engine": + lens => 'Xml.lns', + incl => $_server_config, + changes => $changes, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/globalnamingresource.pp b/modules/services/unix/http/tomcat/manifests/config/server/globalnamingresource.pp new file mode 100644 index 000000000..9f2fea9b5 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/globalnamingresource.pp @@ -0,0 +1,83 @@ +# Definition: tomcat::config::server::globalnamingresource +# +# Configure GlobalNamingResources Resource elements in $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $catalina_base is the base directory for the Tomcat installation. +# - $resource_ensure specifies whether you are trying to add or remove the +# Resource element. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - An optional $resource_name that replaces the $name from the resource. +# - An optional string containing the $type of the element. Used verbatim +# to create a <${type} /> +# node. Should be used for "Environment" entries, for example. +# - An optional hash of $additional_attributes to add to the Resource. Should +# be of the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Resource. +define tomcat::config::server::globalnamingresource ( + $catalina_base = $::tomcat::catalina_home, + $resource_name = undef, + $type = 'Resource', + $ensure = 'present', + $additional_attributes = {}, + $attributes_to_remove = [], + $server_config = undef, +) { + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($ensure, '^(present|absent|true|false)$') + validate_hash($additional_attributes) + validate_re($catalina_base, '^.*[^/]$', '$catalina_base must not end in a /!') + + if $resource_name { + $_resource_name = $resource_name + } else { + $_resource_name = $name + } + + $base_path = "Server/GlobalNamingResources/${type}[#attribute/name='${_resource_name}']" + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${catalina_base}/conf/server.xml" + } + + if $ensure =~ /^(absent|false)$/ { + $changes = "rm ${base_path}" + } else { + if ! empty($additional_attributes) { + $set_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${base_path}/#attribute/"), "'") + } else { + $set_additional_attributes = undef + } + if ! empty(any2array($attributes_to_remove)) { + $rm_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${base_path}/#attribute/") + } else { + $rm_attributes_to_remove = undef + } + + $changes = delete_undef_values(flatten([ + $set_additional_attributes, + $rm_attributes_to_remove, + ])) + } + + # (MODULES-3353) This should use $set_name in $changes like + # t:config::context::resource and others instead of an additional augeas + # resource + augeas { "server-${catalina_base}-globalresource-${name}-definition": + lens => 'Xml.lns', + incl => $_server_config, + changes => "set ${base_path}/#attribute/name '${_resource_name}'", + before => Augeas["server-${catalina_base}-globalresource-${name}"], + } + + augeas { "server-${catalina_base}-globalresource-${name}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $changes, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/host.pp b/modules/services/unix/http/tomcat/manifests/config/server/host.pp new file mode 100644 index 000000000..392afbb6f --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/host.pp @@ -0,0 +1,98 @@ +# Definition: tomcat::config::server::host +# +# Configure Host elements in $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $app_base is the appBase attribute for the Host. This parameter is required +# unless $host_ensure is set to 'false' or 'absent'. +# - $catalina_base is the base directory for the Tomcat installation. +# - $host_ensure specifies whether you are trying to add or remove the Host +# element. Valid values are 'true', 'false', 'present', and 'absent'. Defaults +# to 'present'. +# - $host_name is the name attribute for the Host. Defaults to $name. +# - $parent_service is the Service element this Host should be nested beneath. +# Defaults to 'Catalina' +# - An optional hash of $additional_attributes to add to the Host. Should be of +# the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Host. +# - $aliases is an optional array of aliases for the Host. If omitted, the +# set of Alias elements within the Host element will not be altered. +# Otherwise, the set of Alias elements will be set to exactly match the +# contents of this array. An empty array can be used to ensure that there +# are no Alias elements within the Host element. +define tomcat::config::server::host ( + $app_base = undef, + $catalina_base = undef, + $host_ensure = 'present', + $host_name = undef, + $parent_service = 'Catalina', + $additional_attributes = {}, + $attributes_to_remove = [], + $server_config = undef, + $aliases = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($host_ensure, '^(present|absent|true|false)$') + validate_hash($additional_attributes) + + if $host_name { + $_host_name = $host_name + } else { + $_host_name = $name + } + + $base_path = "Server/Service[#attribute/name='${parent_service}']/Engine/Host[#attribute/name='${_host_name}']" + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${_catalina_base}/conf/server.xml" + } + + if $host_ensure =~ /^(absent|false)$/ { + $changes = "rm ${base_path}" + } else { + if ! $app_base { + fail('$app_base must be specified if you aren\'t removing the host') + } + + $_host_name_change = "set ${base_path}/#attribute/name ${_host_name}" + $_app_base = "set ${base_path}/#attribute/appBase ${app_base}" + + if ! empty($additional_attributes) { + $_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${base_path}/#attribute/"), "'") + } else { + $_additional_attributes = undef + } + + if ! empty(any2array($attributes_to_remove)) { + $_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${base_path}/#attribute/") + } else { + $_attributes_to_remove = undef + } + + if $aliases { + validate_array($aliases) + $_clear_aliases = "rm ${base_path}/Alias" + $_add_aliases = suffix(prefix($aliases, "set ${base_path}/Alias[last()+1]/#text '"), "'") + } else { + $_clear_aliases = undef + $_add_aliases = undef + } + + $changes = delete_undef_values(flatten([$_host_name_change, $_app_base, $_additional_attributes, $_attributes_to_remove, $_clear_aliases, $_add_aliases])) + } + + augeas { "${_catalina_base}-${parent_service}-host-${name}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $changes, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/listener.pp b/modules/services/unix/http/tomcat/manifests/config/server/listener.pp new file mode 100644 index 000000000..be99c186a --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/listener.pp @@ -0,0 +1,98 @@ +# Definition: tomcat::config::server::listener +# +# Configure Listener elements in $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $catalina_base is the base directory for the Tomcat installation. +# - $listener_ensure specifies whether you are trying to add or remove the +# Listener element. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - $class_name is the Java class name of the implementation to use. +# Defaults to $name. +# - $parent_service is the Service element this Listener should be nested +# beneath. Only valid if $parent_host or $parent_engine is specified. Defaults +# to 'Catalina' if $parent_host or $parent_engine was specified. +# - $parent_engine is the `name` attribute to the Engine element this Listener +# should be nested beneath. +# - $parent_host is the `name` attribute to the Engine element this Listener +# should be nested beneath. +# - An optional hash of $additional_attributes to add to the Listener. Should +# be of the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Listener. +define tomcat::config::server::listener ( + $catalina_base = $::tomcat::catalina_home, + $listener_ensure = 'present', + $class_name = undef, + $parent_service = undef, + $parent_engine = undef, + $parent_host = undef, + $additional_attributes = {}, + $attributes_to_remove = [], + $server_config = undef, +) { + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($listener_ensure, '^(present|absent|true|false)$') + validate_hash($additional_attributes) + validate_array($attributes_to_remove) + + if $parent_service and ! ($parent_host or $parent_engine) { + warning('listener elements cannot be nested directly under service elements, ignoring $parent_service') + } + + if ! $parent_service and ($parent_engine or $parent_host) { + $_parent_service = 'Catalina' + } else { + $_parent_service = $parent_service + } + + if $class_name { + $_class_name = $class_name + } else { + $_class_name = $name + } + + if $parent_engine and ! $parent_host { + $path = "Server/Service[#attribute/name='${_parent_service}']/Engine[#attribute/name='${parent_engine}']/Listener[#attribute/className='${_class_name}']" + } elsif $parent_engine and $parent_host { + $path = "Server/Service[#attribute/name='${_parent_service}']/Engine[#attribute/name='${parent_engine}']/Host[#attribute/name='${parent_host}']/Listener[#attribute/className='${_class_name}']" + } elsif $parent_host { + $path = "Server/Service[#attribute/name='${_parent_service}']/Engine/Host[#attribute/name='${parent_host}']/Listener[#attribute/className='${_class_name}']" + } else { + $path = "Server/Listener[#attribute/className='${_class_name}']" + } + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${catalina_base}/conf/server.xml" + } + + if $listener_ensure =~ /^(absent|false)$/ { + $augeaschanges = "rm ${path}" + } else { + $listener = "set ${path}/#attribute/className ${_class_name}" + + if ! empty($additional_attributes) { + $_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${path}/#attribute/"), "'") + } else { + $_additional_attributes = undef + } + + if ! empty(any2array($attributes_to_remove)) { + $_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${path}/#attribute/") + } else { + $_attributes_to_remove = undef + } + + $augeaschanges = delete_undef_values(flatten([$listener, $_additional_attributes, $_attributes_to_remove])) + } + + augeas { "${catalina_base}-${_parent_service}-${parent_engine}-${parent_host}-listener-${name}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $augeaschanges, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/realm.pp b/modules/services/unix/http/tomcat/manifests/config/server/realm.pp new file mode 100644 index 000000000..9b38d747c --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/realm.pp @@ -0,0 +1,116 @@ +# Definition: tomcat::config::server::realm +# +# Configure Realm elements in $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $catalina_base is the base directory for the Tomcat installation. +# - $class_name is the Java class name of the Realm implementation to use. +# - $realm_ensure specifies whether you are adding or removing a +# Realm element. Valid values are 'true', 'false', 'present', and +# 'absent'. Defaults to 'present'. +# - $parent_service is the `name` attribute for the Service element this Realm +# should be nested beneath. Defaults to 'Catalina'. +# - $parent_engine is the `name` attribute for the Engine element this Realm +# should be nested beneath. Defaults to 'Catalina'. +# - $parent_host is the `name` attribute for the Host element this Realm +# should be nested beneath. +# - $parent_realm is the `name` attribute for the Realm element this Realm +# should be nested beneath. +# - An optional hash of $additional_attributes to add to the Realm. Should +# be of the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Realm. +define tomcat::config::server::realm ( + $catalina_base = undef, + $class_name = $name, + $realm_ensure = 'present', + $parent_service = 'Catalina', + $parent_engine = 'Catalina', + $parent_host = undef, + $parent_realm = undef, + $additional_attributes = {}, + $attributes_to_remove = [], + $purge_realms = undef, + $server_config = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + $_purge_realms = pick($purge_realms, $::tomcat::purge_realms) + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + validate_re($realm_ensure, '^(present|absent|true|false)$') + validate_hash($additional_attributes) + validate_array($attributes_to_remove) + validate_bool($_purge_realms) + + if $_purge_realms and ($realm_ensure =~ /^(absent|false)$/) { + fail('$realm_ensure must be set to \'true\' or \'present\' to use $purge_realms') + } + + if $_purge_realms { + # Perform deletions in reverse depth order as workaround for + # https://github.com/hercules-team/augeas/issues/319 + $__purge_realms = [ + 'rm //Realm//Realm', + 'rm //Context//Realm', + 'rm //Host//Realm', + 'rm //Engine//Realm', + 'rm //Server//Realm', + ] + } else { + $__purge_realms = undef + } + + $engine_path = "Server/Service[#attribute/name='${parent_service}']/Engine[#attribute/name='${parent_engine}']" + + # The Realm may be nested under a Host element. + if $parent_host { + $host_path = "${engine_path}/Host[#attribute/name='${parent_host}']" + } else { + $host_path = $engine_path + } + + # The Realm could also be nested under another Realm element if the parent realm is a CombinedRealm. + if $parent_realm { + $path = "${host_path}/Realm[#attribute/className='${parent_realm}']/Realm" + } + else { + $path = "${host_path}/Realm" + } + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${_catalina_base}/conf/server.xml" + } + + if $realm_ensure =~ /^(absent|false)$/ { + $changes = "rm ${path}[#attribute/className='${class_name}']" + } + else { + + $_class_name = "set ${path}[#attribute/className='${class_name}']/#attribute/className ${class_name}" + + if ! empty($additional_attributes) { + $_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${path}[#attribute/className='${class_name}']/#attribute/"), "'") + } else { + $_additional_attributes = undef + } + if ! empty(any2array($attributes_to_remove)) { + $_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${path}[#attribute/className='${class_name}']/#attribute/") + } else { + $_attributes_to_remove = undef + } + + $changes = delete_undef_values(flatten([ $__purge_realms, $_class_name, $_additional_attributes, $_attributes_to_remove ])) + } + + augeas { "${_catalina_base}-${parent_service}-${parent_engine}-${parent_host}-${parent_realm}-realm-${name}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $changes, + } + +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/service.pp b/modules/services/unix/http/tomcat/manifests/config/server/service.pp new file mode 100644 index 000000000..2f38d3323 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/service.pp @@ -0,0 +1,60 @@ +# Definition: tomcat::config::server::service +# +# Configure a Service element nested in the Server element in +# $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $catalina_base is the root of the Tomcat installation. +# - $class_name is the optional className attribute +# - $class_name_ensure specifies whether you are trying to set or remove the +# className attribute. Valid values are 'true', 'false', 'present', or +# 'absent'. Defaults to 'present'. +# - $service_ensure specifies whether you are trying to add or remove the +# service element. Valid values are 'true', 'false', 'present', or 'absent'. +# Defaults to 'present'. +define tomcat::config::server::service ( + $catalina_base = undef, + $class_name = undef, + $class_name_ensure = 'present', + $service_ensure = 'present', + $server_config = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($service_ensure, '^(present|absent|true|false)$') + validate_re($class_name_ensure, '^(present|absent|true|false)$') + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${_catalina_base}/conf/server.xml" + } + + if $service_ensure =~ /^(absent|false)$/ { + $changes = "rm Server/Service[#attribute/name='${name}']" + } else { + if $class_name_ensure =~ /^(absent|false)$/ { + $_class_name = "rm Server/Service[#attribute/name='${name}']/#attribute/className" + } elsif $class_name { + $_class_name = "set Server/Service[#attribute/name='${name}']/#attribute/className ${class_name}" + } else { + $_class_name = undef + } + $_service = "set Server/Service[#attribute/name='${name}']/#attribute/name ${name}" + $changes = delete_undef_values([$_service, $_class_name]) + } + + if ! empty($changes) { + augeas { "server-${_catalina_base}-service-${name}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $changes, + } + } +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/tomcat_users.pp b/modules/services/unix/http/tomcat/manifests/config/server/tomcat_users.pp new file mode 100644 index 000000000..d01fe0d6d --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/tomcat_users.pp @@ -0,0 +1,111 @@ +# Definition tomcat::config::server::tomcat_users +# +# Configures roles and users in $CATALINA_BASE/conf/tomcat-users.xml +# or any other specified file +# +# Parameters: +# - $catalina_base is the base directory for the Tomcat installation +# - $element specifies the element type. Valid values are 'user' or 'role'. +# Defaults to 'user'. +# - $element_name sets the 'username' or 'rolename'. Depends on the $element. +# Defaults to $name. +# - $ensure specifies whether you are trying to add or remove the element. +# Valid values are 'present', 'absent', 'true', and 'false'. Defaults to +# 'present'. +# - $file: The path to the file to manage. Must be fully qualified. +# Defaults to $CATALINA_BASE/conf/tomcat-users.xml. +# - Set $manage_file to true for managing the file. It sets file permission, +# owner, group and create a basic tomcat-users XML if file does not exist yet. +# - $owner specifies the owner of the file if $manage_file is true. Default: $tomcat::user +# - $group specifies the group of the file if $manage_file is true. Default: $tomcat::group +# - $password specifies the password for a user ($element = 'user'). +# - $roles specifies the roles for a user ($element = 'user'). +# +define tomcat::config::server::tomcat_users ( + $catalina_base = $::tomcat::catalina_home, + $element = 'user', + $element_name = undef, + $ensure = present, + $file = undef, + $manage_file = true, + $owner = undef, + $group = undef, + $password = undef, + $roles = [], +) { + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + $_owner = pick($owner, $::tomcat::user) + $_group = pick($group, $::tomcat::group) + + validate_re($element, '^(user|role)$') + validate_re($ensure, '^(present|absent|true|false)$') + validate_array($roles) + validate_bool($manage_file) + + if $element == 'role' and ( $password or ! empty($roles) ) { + warning('$password and $roles are useless when $element is set to \'role\'') + } + + if $element == 'user' { + $element_identifier = 'username' + } else { + $element_identifier = 'rolename' + } + + if $element_name { + $_element_name = $element_name + } else { + $_element_name = $name + } + + if $file { + $_file = $file + } else { + $_file = "${catalina_base}/conf/tomcat-users.xml" + } + + if $manage_file { + ensure_resource('file', $_file, { + ensure => file, + path => $_file, + replace => false, + content => '', + owner => $_owner, + group => $_group, + mode => '0640', + }) + } + + $path = "tomcat-users/${element}[#attribute/${element_identifier}='${_element_name}']" + + if $ensure =~ /^(absent|false)$/ { + $add_entry = undef + $remove_entry = "rm ${path}" + $add_password = undef + $add_roles = undef + } else { + $add_entry = "set ${path}/#attribute/${element_identifier} '${_element_name}'" + $remove_entry = undef + if $element == 'user' { + $add_password = "set ${path}/#attribute/password '${password}'" + $add_roles = join(["set ${path}/#attribute/roles '",join($roles, ','),"'"]) + } else { + $add_password = undef + $add_roles = undef + } + } + + $changes = delete_undef_values([$remove_entry, $add_entry, $add_password, $add_roles]) + + augeas { "${catalina_base}-tomcat_users-${element}-${_element_name}-${name}": + lens => 'Xml.lns', + incl => $_file, + changes => $changes, + require => File[$_file], + } + +} diff --git a/modules/services/unix/http/tomcat/manifests/config/server/valve.pp b/modules/services/unix/http/tomcat/manifests/config/server/valve.pp new file mode 100644 index 000000000..34af87f77 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/config/server/valve.pp @@ -0,0 +1,89 @@ +# Definition tomcat::config::server::valve +# +# Configure a Valve element in $CATALINA_BASE/conf/server.xml +# +# Parameters: +# - $catalina_base is the root of the Tomcat installation +# - $class_name is the className attribute. If not specified, defaults to $name. +# - $parent_host is the Host element this Valve should be nested beneath. If not +# specified, the Valve will be nested beneath the Engine under +# $parent_service. +# - $parent_context is the Context element this Valve should be nested beneath +# under the host element. If not specified, the Valve will be nested beneath +# the parent host +# - $parent_service is the Service element this Valve should be nested beneath. +# Defaults to 'Catalina'. +# - $valve_ensure specifies whether you are trying to add or remove the Vavle +# element. Valid values are 'true', 'false', 'present', or 'absent'. Defaults +# to 'present'. +# - An optional hash of $additional_attributes to add to the Valve. Should be of +# the format 'attribute' => 'value'. +# - An optional array of $attributes_to_remove from the Valve. +define tomcat::config::server::valve ( + $catalina_base = undef, + $class_name = undef, + $parent_host = undef, + $parent_service = 'Catalina', + $parent_context = undef, + $valve_ensure = 'present', + $additional_attributes = {}, + $attributes_to_remove = [], + $server_config = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + + if versioncmp($::augeasversion, '1.0.0') < 0 { + fail('Server configurations require Augeas >= 1.0.0') + } + + validate_re($valve_ensure, '^(present|absent|true|false)$') + validate_hash($additional_attributes) + + if $class_name { + $_class_name = $class_name + } else { + $_class_name = $name + } + + if $parent_host { + if $parent_context { + $base_path = "Server/Service[#attribute/name='${parent_service}']/Engine/Host[#attribute/name='${parent_host}']/Context[#attribute/docBase='${parent_context}']/Valve[#attribute/className='${_class_name}']" + } else { + $base_path = "Server/Service[#attribute/name='${parent_service}']/Engine/Host[#attribute/name='${parent_host}']/Valve[#attribute/className='${_class_name}']" + } + } else { + $base_path = "Server/Service[#attribute/name='${parent_service}']/Engine/Valve[#attribute/className='${_class_name}']" + } + + if $server_config { + $_server_config = $server_config + } else { + $_server_config = "${_catalina_base}/conf/server.xml" + } + + if $valve_ensure =~ /^(absent|false)$/ { + $changes = "rm ${base_path}" + } else { + $_class_name_change = "set ${base_path}/#attribute/className ${_class_name}" + if ! empty($additional_attributes) { + $_additional_attributes = suffix(prefix(join_keys_to_values($additional_attributes, " '"), "set ${base_path}/#attribute/"), "'") + } else { + $_additional_attributes = undef + } + if ! empty(any2array($attributes_to_remove)) { + $_attributes_to_remove = prefix(any2array($attributes_to_remove), "rm ${base_path}/#attribute/") + } else { + $_attributes_to_remove = undef + } + + $changes = delete_undef_values(flatten([$_class_name_change, $_additional_attributes, $_attributes_to_remove])) + } + + augeas { "${_catalina_base}-${parent_service}-${parent_host}-valve-${name}": + lens => 'Xml.lns', + incl => $_server_config, + changes => $changes, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/init.pp b/modules/services/unix/http/tomcat/manifests/init.pp new file mode 100644 index 000000000..1c210dcb9 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/init.pp @@ -0,0 +1,57 @@ +# == Class: tomcat +# +# Class to manage installation and configuration of Tomcat. +# +# === Parameters +# +# [*catalina_home*] +# The base directory for the Tomcat installation. Default: /opt/apache-tomcat +# +# [*user*] +# The user to run Tomcat as. Default: tomcat +# +# [*group*] +# The group to run Tomcat as. Default: tomcat +# +# [*manage_user*] +# Boolean specifying whether or not to manage the user. Defaults to true. +# +# [*purge_connectors*] +# Boolean specifying whether to purge all Connector elements from server.xml. Defaults to false. +# +# [*purge_realms*] +# Boolean specifying whether to purge all Realm elements from server.xml. Defaults to false. +# +# [*manage_group*] +# Boolean specifying whether or not to manage the group. Defaults to true. +# +# [*manage_properties*] +# Boolean specifying whether or not to manage the catalina.properties file. Defaults to true. +class tomcat ( + $catalina_home = $::tomcat::params::catalina_home, + $user = $::tomcat::params::user, + $group = $::tomcat::params::group, + $install_from_source = true, + $purge_connectors = false, + $purge_realms = false, + $manage_user = true, + $manage_group = true, + $manage_home = true, + $manage_base = true, + $manage_properties = true, +) inherits ::tomcat::params { + validate_bool($install_from_source) + validate_bool($purge_connectors) + validate_bool($purge_realms) + validate_bool($manage_user) + validate_bool($manage_group) + validate_bool($manage_home) + validate_bool($manage_base) + + case $::osfamily { + 'windows','Solaris','Darwin': { + fail("Unsupported osfamily: ${::osfamily}") + } + default: { } + } +} diff --git a/modules/services/unix/http/tomcat/manifests/install.pp b/modules/services/unix/http/tomcat/manifests/install.pp new file mode 100644 index 000000000..fef24e8eb --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/install.pp @@ -0,0 +1,58 @@ +# +define tomcat::install ( + $catalina_home = $name, + $install_from_source = undef, + + # source options + $source_url = undef, + $source_strip_first_dir = true, + $environment = undef, + $user = undef, + $group = undef, + $manage_user = undef, + $manage_group = undef, + $manage_home = undef, + + # package options + $package_ensure = undef, + $package_name = undef, + $package_options = undef, +) { + include ::tomcat + $_install_from_source = pick($install_from_source, $::tomcat::install_from_source) + $_user = pick($user, $::tomcat::user) + $_group = pick($group, $::tomcat::group) + $_manage_user = pick($manage_user, $::tomcat::manage_user) + $_manage_group = pick($manage_group, $::tomcat::manage_group) + $_manage_home = pick($manage_home, $::tomcat::manage_home) + validate_bool($_install_from_source, $source_strip_first_dir) + tag(sha1($catalina_home)) + + if $_install_from_source { + if $_manage_user { + ensure_resource('user', $_user, { + ensure => present, + gid => $_group, + }) + } + if $_manage_group { + ensure_resource('group', $_group, { + ensure => present, + }) + } + tomcat::install::source { $name: + catalina_home => $catalina_home, + manage_home => $_manage_home, + source_url => $source_url, + source_strip_first_dir => $source_strip_first_dir, + environment => $environment, + user => $_user, + group => $_group, + } + } else { + tomcat::install::package { $package_name: + package_ensure => $package_ensure, + package_options => $package_options, + } + } +} diff --git a/modules/services/unix/http/tomcat/manifests/install/package.pp b/modules/services/unix/http/tomcat/manifests/install/package.pp new file mode 100644 index 000000000..cba2e4218 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/install/package.pp @@ -0,0 +1,22 @@ +# Definition: tomcat::install::package +# +# Private define to install Tomcat from a package. +# +# Parameters: +# - $package_ensure is the ensure passed to the package resource. +# - The $package_name you want to install. +# - $package_options to pass extra options to the package resource. +define tomcat::install::package ( + $package_ensure, + $package_options, + $package_name = $name, +) { + if $caller_module_name != $module_name { + fail("Use of private class ${name} by ${caller_module_name}") + } + + package { $package_name: + ensure => $package_ensure, + install_options => $package_options, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/install/source.pp b/modules/services/unix/http/tomcat/manifests/install/source.pp new file mode 100644 index 000000000..6ebdac42e --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/install/source.pp @@ -0,0 +1,58 @@ +# Definition: tomcat::install::source +# +# Private define to install Tomcat from source. +# +# Parameters: +# - $catalina_home is the root of the Tomcat installation. +# - The $source_url to install from. +# - $source_strip_first_dir is a boolean specifying whether or not to strip +# the first directory when unpacking the source tarball. Defaults to true +# when installing from source on non-Solaris systems. Requires puppet/staging +# > 0.4.0 +# - $environment is variables for settings such as http_proxy, https_proxy, or ftp_proxy +define tomcat::install::source ( + $catalina_home, + $manage_home, + $source_url, + $source_strip_first_dir, + $user, + $group, + $environment = undef, +) { + tag(sha1($catalina_home)) + include ::staging + + if $caller_module_name != $module_name { + fail("Use of private class ${name} by ${caller_module_name}") + } + + if $source_strip_first_dir { + $_strip = 1 + } + + $filename = regsubst($source_url, '.*/(.*)', '\1') + + if $manage_home { + file { $catalina_home: + ensure => directory, + owner => $user, + group => $group, + } + } + + ensure_resource('staging::file',$filename, { + 'source' => $source_url, + 'environment' => $environment, + }) + + staging::extract { "${name}-${filename}": + source => "${::staging::path}/tomcat/${filename}", + target => $catalina_home, + require => Staging::File[$filename], + unless => "test -f ${catalina_home}/NOTICE", + user => $user, + group => $group, + environment => $environment, + strip => $_strip, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/instance.pp b/modules/services/unix/http/tomcat/manifests/instance.pp new file mode 100644 index 000000000..91b6a9fa2 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/instance.pp @@ -0,0 +1,176 @@ +# Definition: tomcat::instance +# +# This define installs an instance of Tomcat. +# +# Parameters: +# - $catalina_home is the root of the Tomcat installation. This parameter only +# affects the instance when $install_from_source is true. Default: +# $tomcat::catalina_home +# - $catalina_base is the base directory for the Tomcat instance if different +# from $catalina_home. This parameter only affects the instance when +# $install_from_source is true. Default: $catalina_home +# - $install_from_source is a boolean specifying whether or not to install from +# source. Defaults to true. +# - The $source_url to install from. Required if $install_from_source is true. +# - $source_strip_first_dir is a boolean specifying whether or not to strip +# the first directory when unpacking the source tarball. Defaults to true +# when installing from source. Requires puppet/staging > 0.4.0 +# - $package_ensure when installing from package, what the ensure should be set +# to in the package resource. +# - $package_name is the name of the package you want to install. Required if +# $install_from_source is false. +# - $package_options to pass extra options to the package resource. +# - $user is the owner of the tomcat home and base. Default: $tomcat::user +# - $group is the group of the tomcat home and base. Default: $tomcat::group +define tomcat::instance ( + $catalina_home = undef, + $catalina_base = undef, + $user = undef, + $group = undef, + $manage_user = undef, + $manage_group = undef, + $manage_service = undef, + $manage_base = undef, + $manage_properties = undef, + $java_home = undef, + $use_jsvc = undef, + $use_init = undef, + + #used for single installs. Deprecated? + $install_from_source = undef, + $source_url = undef, + $source_strip_first_dir = undef, + $package_ensure = undef, + $package_name = undef, + $package_options = undef, +) { + include tomcat + $_catalina_home = pick($catalina_home, $::tomcat::catalina_home) + $_catalina_base = pick($catalina_base, $_catalina_home) #default to home + tag(sha1($_catalina_home)) + tag(sha1($_catalina_base)) + $_user = pick($user, $::tomcat::user) + $_group = pick($group, $::tomcat::group) + $_manage_user = pick($manage_user, $::tomcat::manage_user) + $_manage_group = pick($manage_group, $::tomcat::manage_group) + $_manage_base = pick($manage_base, $::tomcat::manage_base) + $_manage_properties = pick($manage_properties, $::tomcat::manage_properties) + + if $source_url and $install_from_source == undef { + # XXX Backwards compatibility mode enabled; install_from_source used to default + # to true. + $_install_from_source = true + } else { + # XXX If install_from_source is undef, then we're in multi-instance mode. If + # it's true or false, then we're in backwards-compatible mode. + $_install_from_source = $install_from_source + } + + tomcat::instance::dependencies { $name: + catalina_home => $_catalina_home, + catalina_base => $_catalina_base, + } + + if $_install_from_source != undef { + # XXX This file resource is for backwards compatibility. Previously the base + # class created this directory for source installs, even though it may never + # be used. Users may have created source installs under this directory, so + # it must exist. tomcat::install::source will take care of creating base. + if $_catalina_base != $_catalina_home and $_manage_base { + ensure_resource('file',$_catalina_home, { + ensure => directory, + owner => $_user, + group => $_group, + }) + } + # XXX This is for backwards compatibility. Declare a tomcat install, but install + # the software into the base instead of the home. + tomcat::install { $name: + catalina_home => $_catalina_base, + install_from_source => $_install_from_source, + source_url => $source_url, + source_strip_first_dir => $source_strip_first_dir, + user => $_user, + group => $_group, + manage_user => $_manage_user, + manage_group => $_manage_group, + manage_home => $_manage_base, + package_ensure => $package_ensure, + package_name => $package_name, + package_options => $package_options, + } + $_manage_service = pick($manage_service, false) + } else { + if $_catalina_home != $_catalina_base { + if $_manage_user { + ensure_resource('user', $_user, { + ensure => present, + gid => $_group, + }) + } + if $_manage_group { + ensure_resource('group', $_group, { + ensure => present, + }) + } + + if $_manage_base { + # Configure additional instances in custom catalina_base + file { $_catalina_base: + ensure => directory, + owner => $_user, + group => $_group, + } + } + $dir_list = [ + "${_catalina_base}/bin", + "${_catalina_base}/conf", + "${_catalina_base}/lib", + "${_catalina_base}/logs", + "${_catalina_base}/temp", + "${_catalina_base}/webapps", + "${_catalina_base}/work", + ] + # Ensure install finishes before creating instances from it. + $home_sha = sha1($_catalina_home) + Tomcat::Install <| tag == $home_sha |> -> File[$dir_list] + file { $dir_list: + ensure => directory, + owner => $_user, + group => $_group, + mode => '2770', + } + $copy_to_base_list = [ + "${_catalina_base}/conf/catalina.policy", + "${_catalina_base}/conf/context.xml", + "${_catalina_base}/conf/logging.properties", + "${_catalina_base}/conf/server.xml", + "${_catalina_base}/conf/web.xml", + ] + tomcat::instance::copy_from_home { $copy_to_base_list: + catalina_home => $_catalina_home, + user => $_user, + group => $_group, + } + if $_manage_properties { + tomcat::config::properties { "${_catalina_base} catalina.properties": + catalina_home => $_catalina_home, + catalina_base => $_catalina_base, + user => $_user, + group => $_group, + } + } + } + $_manage_service = pick($manage_service, true) + } + if $_manage_service { + tomcat::service { $name: + catalina_home => $_catalina_home, + catalina_base => $_catalina_base, + java_home => $java_home, + use_jsvc => $use_jsvc, + use_init => $use_init, + user => $_user, + } + } +} diff --git a/modules/services/unix/http/tomcat/manifests/instance/copy_from_home.pp b/modules/services/unix/http/tomcat/manifests/instance/copy_from_home.pp new file mode 100644 index 000000000..5b352ba6c --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/instance/copy_from_home.pp @@ -0,0 +1,25 @@ +# Definition: tomcat::instance::copy_from_home +# +# Private define to copy a conf file from catalina_home to catalina_base +# +define tomcat::instance::copy_from_home ( + $catalina_home, + $user, + $group, +) { + tag(sha1($catalina_home)) + $filename = basename($name) + + if $caller_module_name != $module_name { + fail("Use of private class ${name} by ${caller_module_name}") + } + + file { $name: + ensure => file, + mode => '0660', + owner => $user, + group => $group, + source => "${catalina_home}/conf/${filename}", + replace => false, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/instance/dependencies.pp b/modules/services/unix/http/tomcat/manifests/instance/dependencies.pp new file mode 100644 index 000000000..bff9ab712 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/instance/dependencies.pp @@ -0,0 +1,47 @@ +# private +define tomcat::instance::dependencies ( + $catalina_home, + $catalina_base, +) { + $home_sha = sha1($catalina_home) + $base_sha = sha1($catalina_base) + + Tomcat::Install <| tag == $base_sha or tag == $home_sha |> + -> Tomcat::Service <| tag == $base_sha |> + + Tomcat::Install <| tag == $base_sha or tag == $home_sha |> + -> Tomcat::Instance::Copy_from_home <| tag == $base_sha |> + -> Tomcat::Service <| tag == $base_sha |> + + Tomcat::Install <| tag == $base_sha or tag == $home_sha |> + -> Tomcat::Service <| tag == $base_sha |> + -> Tomcat::Config::Properties <| tag == $base_sha |> + Tomcat::Instance::Copy_from_home <| tag == $base_sha |> + -> Tomcat::Config::Properties <| tag == $base_sha |> + + Tomcat::Install <| tag == $base_sha or tag == $home_sha |> + -> Tomcat::Config::Server <| tag == $base_sha |> + ~> Tomcat::Service <| tag == $base_sha |> + Tomcat::Instance::Copy_from_home <| tag == $base_sha |> + -> Tomcat::Config::Server <| tag == $base_sha |> + + Tomcat::Install <| tag == $base_sha or tag == $home_sha |> + -> Tomcat::Config::Server::Realm <| tag == $base_sha |> + ~> Tomcat::Service <| tag == $base_sha |> + Tomcat::Instance::Copy_from_home <| tag == $base_sha |> + -> Tomcat::Config::Server::Realm <| tag == $base_sha |> + + Tomcat::Install <| tag == $base_sha or tag == $home_sha |> + -> Tomcat::Config::Server::Connector <| tag == $base_sha |> + ~> Tomcat::Service <| tag == $base_sha |> + Tomcat::Instance::Copy_from_home <| tag == $base_sha |> + -> Tomcat::Config::Server::Connector <| tag == $base_sha |> + + Tomcat::Install <| tag == $base_sha or tag == $home_sha |> + -> Tomcat::Setenv::Entry <| tag == $base_sha |> + -> Tomcat::Service <| tag == $base_sha |> + + Tomcat::Install <| tag == $base_sha or tag == $home_sha |> + -> Tomcat::War <| tag == $base_sha |> + -> Tomcat::Service <| tag == $base_sha |> +} diff --git a/modules/services/unix/http/tomcat/manifests/params.pp b/modules/services/unix/http/tomcat/manifests/params.pp new file mode 100644 index 000000000..627f9f8de --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/params.pp @@ -0,0 +1,13 @@ +# Class: tomcat::params +# +# This class manages Tomcat parameters. +# +# Parameters: +# - $catalina_home is the root of the Tomcat installation. +# - The $user Tomcat runs as. +# - The $group Tomcat runs as. +class tomcat::params { + $catalina_home = '/opt/apache-tomcat' + $user = 'tomcat' + $group = 'tomcat' +} diff --git a/modules/services/unix/http/tomcat/manifests/service.pp b/modules/services/unix/http/tomcat/manifests/service.pp new file mode 100644 index 000000000..b278fd177 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/service.pp @@ -0,0 +1,177 @@ +# Definition: tomcat::service +# +# Service management for Tomcat. +# +# Parameters: +# - $catalina_home is the root of the Tomcat installation. +# - $catalina_base is the base directory for the Tomcat installation. +# - Whether or not to $use_jsvc for service management. Boolean defaulting to +# false. If both $use_jsvc and $use_init are false, +# $CATALINA_BASE/bin/catalina.sh start and $CATALIN/A_BASE/bin/catalina.sh +# stop are used for service management. +# - If using jsvc, optionally set java_home. Has no affect unless +# $use_jsvc = true. +# - $service_ensure is passed on to the service resource. +# - $service_enable specifies whether the tomcat service should be enabled on +# on boot. Valid options are 'true' or 'false'. Defaults to 'undef', will be +# programmatically set to 'true' if $use_init is true AND +# $service_ensure == 'running' +# - Whether or not to $use_init for service management. Boolean defaulting to +# false. If both $use_jsvc and $use_init are false, +# $CATALINA_BASE/bin/catalina.sh start and $CATALINA_BASE/bin/catalina.sh +# stop are used for service management. +# - The $service_name to use for the packaged init script +# - The $start_command to use for the service +# - The $stop_command to use for the service +# - $user is the user of the jsvc process. +define tomcat::service ( + $catalina_home = undef, + $catalina_base = undef, + $use_jsvc = false, + $use_init = false, + $java_home = undef, + $service_ensure = running, + $service_enable = undef, + $service_name = undef, + $start_command = undef, + $stop_command = undef, + $user = undef, +) { + include tomcat + $_user = pick($user, $::tomcat::user) + # XXX Backwards compatibility: If the user declares a base but not a home, we + # assume they are in compatibility mode + if $catalina_base { + $_catalina_home = pick($catalina_home, $catalina_base) + } else { + $_catalina_home = pick($catalina_home, $tomcat::catalina_home) + } + $_catalina_base = pick($catalina_base, $_catalina_home) #default to home + tag(sha1($_catalina_home)) + tag(sha1($_catalina_base)) + + validate_bool($use_jsvc) + validate_bool($use_init) + + if $use_init and ! $use_jsvc and ! $service_name { + fail('service_name must be specified when using the package init script') + } + + if $use_init and ! $use_jsvc and $catalina_home { + warning('catalina_home has no effect when using the package init script; ignoring') + } + + if $use_jsvc and $service_name { + warning('service_name has no effect when using jsvc; ignoring') + } + + if ! $use_init and $service_enable != undef { + warning('service_enable has no effect without an init script; ignoring') + } + + if ! $use_jsvc and $java_home { + warning('java_home has no effect when not using jsvc; ignoring') + } + + if $use_jsvc and $use_init { + $_service_name = "tomcat-${name}" + $_hasstatus = true + $_hasrestart = true + $_start = "service tomcat-${name} start" + $_stop = "service tomcat-${name} stop" + $_status = "service tomcat-${name} status" + $_provider = undef + # Template uses: + # - $_catalina_home + # - $_catalina_base + # - $java_home + # - $_user + file { "/etc/init.d/tomcat-${name}": + mode => '0755', + content => template('tomcat/jsvc-init.erb'), + } + } elsif $use_jsvc { + if $java_home { + $_jsvc_home = "-home ${java_home} " + } else { + $_jsvc_home = undef + } + $_service_name = "tomcat-${name}" + $_hasstatus = false + $_hasrestart = false + if $start_command { + $_start = $start_command + } else { + $_start = "export CATALINA_HOME=${_catalina_home}; export CATALINA_BASE=${_catalina_base}; \ + \$CATALINA_HOME/bin/jsvc \ + ${_jsvc_home}-user ${_user} \ + -classpath \$CATALINA_HOME/bin/bootstrap.jar:\$CATALINA_HOME/bin/tomcat-juli.jar \ + -outfile \$CATALINA_BASE/logs/catalina.out \ + -errfile \$CATALINA_BASE/logs/catalina.err \ + -pidfile \$CATALINA_BASE/logs/jsvc.pid \ + -Dcatalina.home=\$CATALINA_HOME \ + -Dcatalina.base=\$CATALINA_BASE \ + -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ + -Djava.util.logging.config.file=\$CATALINA_BASE/conf/logging.properties \ + org.apache.catalina.startup.Bootstrap" + } + if $stop_command { + $_stop = $stop_command + } else { + $_stop = "export CATALINA_HOME=${_catalina_home}; export CATALINA_BASE=${_catalina_base}; + \$CATALINA_HOME/bin/jsvc \ + -pidfile \$CATALINA_BASE/logs/jsvc.pid \ + -stop org.apache.catalina.startup.Bootstrap" + } + $_status = "ps p `cat ${_catalina_base}/logs/jsvc.pid` > /dev/null" + $_provider = 'base' + } elsif $use_init { + $_service_name = $service_name + $_hasstatus = true + $_hasrestart = true + $_start = $start_command + $_stop = $stop_command + $_status = undef + $_provider = undef + } else { + $_service_name = "tomcat-${name}" + $_hasstatus = false + $_hasrestart = false + $_start = $start_command ? { + undef => "su -s /bin/bash -c 'CATALINA_HOME=${_catalina_home} CATALINA_BASE=${_catalina_base} ${_catalina_home}/bin/catalina.sh start' ${_user}", + default => $start_command + } + $_stop = $stop_command ? { + undef => "su -s /bin/bash -c 'CATALINA_HOME=${_catalina_home} CATALINA_BASE=${_catalina_base} ${_catalina_home}/bin/catalina.sh stop' ${_user}", + default => $stop_command + } + $_status = "ps aux | grep 'catalina.base=${_catalina_base} ' | grep -v grep" + $_provider = 'base' + } + + if $use_init { + if $service_enable != undef { + validate_bool($service_enable) + $_service_enable = $service_enable + } else { + $_service_enable = $service_ensure ? { + 'running' => true, + true => true, + default => undef, + } + } + } else { + $_service_enable = undef + } + + service { $_service_name: + ensure => $service_ensure, + enable => $_service_enable, + hasstatus => $_hasstatus, + hasrestart => $_hasrestart, + start => $_start, + stop => $_stop, + status => $_status, + provider => $_provider, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/setenv/entry.pp b/modules/services/unix/http/tomcat/manifests/setenv/entry.pp new file mode 100644 index 000000000..daae1c793 --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/setenv/entry.pp @@ -0,0 +1,81 @@ +# Definition tomcat::setenv::entry +# +# This define adds an entry to the setenv.sh script. +# +# Parameters: +# - $value is the value of the parameter you're setting +# - $ensure whether the fragment should be present or absent. +# - $config_file is the path to the config file to edit +# - $param is the parameter you're setting. Defaults to $name. +# - $quote_char is the optional character to quote the value with. +# - $order is the optional order to the param in the file. Defaults to 10 +# - $doexport is the optional prefix before the variable. +# - (Deprecated) $base_path is the path to create the setenv.sh script under. Should be +# either $catalina_base/bin or $catalina_home/bin. +define tomcat::setenv::entry ( + $value, + $ensure = 'present', + $catalina_home = undef, + $config_file = undef, + $param = $name, + $quote_char = undef, + $order = '10', + $addto = undef, + $doexport = true, + $user = undef, + $group = undef, + # Deprecated + $base_path = undef, +) { + include tomcat + $_user = pick($user, $::tomcat::user) + $_group = pick($group, $::tomcat::group) + $_catalina_home = pick($catalina_home, $::tomcat::catalina_home) + $home_sha = sha1($_catalina_home) + tag($home_sha) + + Tomcat::Install <| tag == $home_sha |> + -> Tomcat::Setenv::Entry[$name] + + if $base_path { + warning('The $base_path parameter is deprecated; please use catalina_home or config_file instead') + $_config_file = "${base_path}/setenv.sh" + } else { + $_config_file = $config_file ? { + undef => "${_catalina_home}/bin/setenv.sh", + default => $config_file, + } + } + + if ! $quote_char { + $_quote_char = '' + } else { + $_quote_char = $quote_char + } + + if ! defined(Concat[$_config_file]) { + concat { $_config_file: + owner => $_user, + group => $_group, + mode => '0755', + ensure_newline => true, + } + } + + if $doexport { + $_doexport = 'export' + } else { + $_doexport = '' + } + + if $addto { + $_content = inline_template('<%= @_doexport %> <%= @param %>=<%= @_quote_char %><%= Array(@value).join(" ") %><%= @_quote_char}"\n" %> ; <%= @_doexport %> <%= @addto %>="$<%= @addto %> $<%= @param %>"') + } else { + $_content = inline_template('<%= @_doexport %> <%= @param %>=<%= @_quote_char %><%= Array(@value).join(" ") %><%= @_quote_char+"\n" %>') + } + concat::fragment { "setenv-${name}": + target => $_config_file, + content => $_content, + order => $order, + } +} diff --git a/modules/services/unix/http/tomcat/manifests/war.pp b/modules/services/unix/http/tomcat/manifests/war.pp new file mode 100644 index 000000000..25022b33e --- /dev/null +++ b/modules/services/unix/http/tomcat/manifests/war.pp @@ -0,0 +1,83 @@ +# Definition: tomcat::war +# +# Manage deployment of WAR files. +# +# Parameters: +# - $catalina_base is the base directory for the Tomcat installation +# - $app_base is the path relative to $catalina_base to deploy the WAR to. +# Defaults to 'webapps'. +# - The $deployment_path can optionally be specified. Only one of $app_base and +# $deployment_path can be specified. +# - $war_ensure specifies whether you are trying to add or remove the WAR. +# Valid values are 'present', 'absent', 'true', and 'false'. Defaults to +# 'present'. +# _ Optionally specify a $war_name. Defaults to $name. +# - $war_purge is a boolean specifying whether or not to purge the exploded WAR +# directory. Defaults to true. Only applicable when $war_ensure is 'absent' +# or 'false'. Note: if tomcat is running and autodeploy is on, setting +# $war_purge to false won't stop tomcat from auto-undeploying exploded WARs. +# - $war_source is the source to deploy the WAR from. Currently supports +# http(s)://, puppet://, and ftp:// paths. $war_source must be specified +# unless $war_ensure is set to 'false' or 'absent'. +define tomcat::war( + $catalina_base = undef, + $app_base = undef, + $deployment_path = undef, + $war_ensure = 'present', + $war_name = undef, + $war_purge = true, + $war_source = undef, +) { + include tomcat + $_catalina_base = pick($catalina_base, $::tomcat::catalina_home) + tag(sha1($_catalina_base)) + validate_re($war_ensure, '^(present|absent|true|false)$') + validate_bool($war_purge) + + if $app_base and $deployment_path { + fail('Only one of $app_base and $deployment_path can be specified.') + } + + if $war_name { + $_war_name = $war_name + } else { + $_war_name = $name + } + + validate_re($_war_name, '\.war$') + + if $deployment_path { + $_deployment_path = $deployment_path + } else { + if $app_base { + $_app_base = $app_base + } else { + $_app_base = 'webapps' + } + $_deployment_path = "${_catalina_base}/${_app_base}" + } + + if $war_ensure =~ /^(absent|false)$/ { + file { "${_deployment_path}/${_war_name}": + ensure => absent, + force => false, + } + if $war_purge { + $war_dir_name = regsubst($_war_name, '\.war$', '') + if $war_dir_name != '' { + file { "${_deployment_path}/${war_dir_name}": + ensure => absent, + force => true, + } + } + } + } else { + if ! $war_source { + fail('$war_source must be specified if you aren\'t removing the WAR') + } + staging::file { $name: + source => $war_source, + target => "${_deployment_path}/${_war_name}", + } + } +} diff --git a/modules/services/unix/http/tomcat/metadata.json b/modules/services/unix/http/tomcat/metadata.json new file mode 100644 index 000000000..a7337ee6f --- /dev/null +++ b/modules/services/unix/http/tomcat/metadata.json @@ -0,0 +1,80 @@ +{ + "name": "puppetlabs-tomcat", + "version": "1.7.0", + "author": "puppetlabs", + "summary": "Installs, deploys, and configures Apache Tomcat web services.", + "license": "Apache-2.0", + "source": "http://github.com/puppetlabs/puppetlabs-tomcat", + "project_page": "https://github.com/puppetlabs/puppetlabs-tomcat", + "issues_url": "https://tickets.puppetlabs.com/browse/MODULES", + "dependencies": [ + {"name":"puppetlabs/stdlib","version_requirement":">= 4.6.0 < 5.0.0"}, + {"name":"puppetlabs/concat","version_requirement":">= 1.1.0 < 3.0.0"}, + {"name":"puppet/staging","version_requirement":">= 0.4.1 < 3.0.0"} + ], + "data_provider": null, + "operatingsystem_support": [ + { + "operatingsystem": "RedHat", + "operatingsystemrelease": [ + "5", + "6", + "7" + ] + }, + { + "operatingsystem": "CentOS", + "operatingsystemrelease": [ + "5", + "6", + "7" + ] + }, + { + "operatingsystem": "OracleLinux", + "operatingsystemrelease": [ + "5", + "6", + "7" + ] + }, + { + "operatingsystem": "Scientific", + "operatingsystemrelease": [ + "5", + "6", + "7" + ] + }, + { + "operatingsystem": "Debian", + "operatingsystemrelease": [ + "6", + "7", + "8" + ] + }, + { + "operatingsystem": "Ubuntu", + "operatingsystemrelease": [ + "10.04", + "12.04", + "14.04", + "16.04" + ] + }, + { + "operatingsystem": "SLES", + "operatingsystemrelease": [ + "11", + "12" + ] + } + ], + "requirements": [ + { + "name": "puppet", + "version_requirement": ">= 3.0.0 < 5.0.0" + } + ] +} diff --git a/modules/services/unix/http/tomcat/readmes/README_ja_JP.md b/modules/services/unix/http/tomcat/readmes/README_ja_JP.md new file mode 100644 index 000000000..888b6a01a --- /dev/null +++ b/modules/services/unix/http/tomcat/readmes/README_ja_JP.md @@ -0,0 +1,1764 @@ +# tomcat + +#### 目次 + +1. [概要](#概要) +2. [モジュールの説明 - モジュールの機能と役立つ理由](#モジュールの説明) +3. [セットアップ - tomcat導入の基本](#セットアップ) + * [セットアップ要件](#要件) + * [tomcatを開始する](#tomcatを開始する) +4. [使用方法 - 設定オプションとその他の機能](#使用方法) + * [複数のバージョン、複数インスタンスのtomcatを実行したい](#複数のバージョン、複数インスタンスのtomcatを実行したい) + * [WARファイルをデプロイしたい](#warファイルをデプロイしたい) + * [構成の一部を削除したい](#構成の一部を削除したい) + * [既存のConnectorまたはRealmを管理したい](#既存のconnectorまたはrealmを管理したい) +5. [リファレンス - モジュールの内部で何がどのように行われているかのぞいてみよう](#リファレンス) + * [クラス](#クラス) + * [定義タイプ](#定義タイプ) + * [パラメータ](#パラメータ) + * [tomcat](#tomcat-1) + * [tomcat::config::properties::property](#tomcatconfigpropertiesproperty) + * [tomcat::config::server](#tomcatconfigserver) + * [tomcat::config::server::connector](#tomcatconfigserverconnector) + * [tomcat::config::server::context](#tomcatconfigservercontext) + * [tomcat::config::server::engine](#tomcatconfigserverengine) + * [tomcat::config::server::globalnamingresource](#tomcatconfigserverglobalnamingresource) + * [tomcat::config::server::host](#tomcatconfigserverhost) + * [tomcat::config::server::listener](#tomcatconfigserverlistener) + * [tomcat::config::server::realm](#tomcatconfigserverrealm) + * [tomcat::config::server::service](#tomcatconfigserverservice) + * [tomcat::config::server::tomcat_users](#tomcatconfigservertomcat_users) + * [tomcat::config::server::valve](#tomcatconfigservervalve) + * [tomcat::config::context](#tomcatconfigcontext) + * [tomcat::config::context::environment](#tomcatconfigcontextenvironment) + * [tomcat::config::context::manager](#tomcatconfigcontextmanager) + * [tomcat::config::context::resource](#tomcatconfigcontextresource) + * [tomcat::config::context::resourcelink](#tomcatconfigcontextresourcelink) + * [tomcat::install](#tomcatinstall) + * [tomcat::instance](#tomcatinstance) + * [tomcat::service](#tomcatservice) + * [tomcat::setenv::entry](#tomcatsetenventry) + * [tomcat::war](#tomcatwar) +6. [制限事項 - OS互換性など](#制限事項) +7. [開発 -モジュールに貢献するためのガイド](#開発) + +## 概要 + +tomcatモジュールを利用すると、Puppetを使用してTomcat Webサービスをインストール、デプロイ、構成できます。 + +## モジュールの説明 + +TomcatはJava Webサービスを提供します。tomcatモジュールを使用すると、Puppetを使用してTomcatをインストールし、その構成ファイルを管理し、Webアプリをデプロイできます。複数のバージョンにまたがる複数のTomcatインスタンスをサポートしています。 + +## セットアップ + +### 要件 + +tomcatモジュールには、[puppetlabs-stdlib](https://forge.puppetlabs.com/puppetlabs/stdlib)バージョン4.0以上が必要です。Puppet Enterpriseでは、モジュールをインストールする前にこの要件を満たす必要があります。stdlibをアップデートするには、以下を実行します。 + +```bash +puppet module upgrade puppetlabs-stdlib +``` + +### tomcatを開始する + +tomcatモジュールでTomcatを立ち上げる最も簡単な方法は、次のようにTomcatソースをインストールして、サービスを起動することです。 + +```puppet +tomcat::install { '/opt/tomcat': + source_url => 'https://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.x/bin/apache-tomcat-7.0.x.tar.gz', +} +tomcat::instance { 'default': + catalina_home => '/opt/tomcat', +} +``` + +> 注: [バージョンリスト](http://tomcat.apache.org/whichversion.html)でインストールするバージョンを照合してください。 + +## 使用方法 + +### 複数のバージョン、複数インスタンスのtomcatを実行したい + +```puppet +class { 'java': } + +tomcat::install { '/opt/tomcat8': + source_url => 'https://www.apache.org/dist/tomcat/tomcat-8/v8.0.x/bin/apache-tomcat-8.0.x.tar.gz' +} +tomcat::instance { 'tomcat8-first': + catalina_home => '/opt/tomcat8', + catalina_base => '/opt/tomcat8/first', +} +tomcat::instance { 'tomcat8-second': + catalina_home => '/opt/tomcat8', + catalina_base => '/opt/tomcat8/second', +} +# 2つ目のインスタンスのサーバおよびHTTPコネクタのデフォルトポートを変更 +tomcat::config::server { 'tomcat8-second': + catalina_base => '/opt/tomcat8/second', + port => '8006', +} +tomcat::config::server::connector { 'tomcat8-second-http': + catalina_base => '/opt/tomcat8/second', + port => '8081', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8443' + }, +} + +tomcat::install { '/opt/tomcat6': + source_url => 'http://www-eu.apache.org/dist/tomcat/tomcat-6/v6.0.x/bin/apache-tomcat-6.0.x.tar.gz', +} +tomcat::instance { 'tomcat6': + catalina_home => '/opt/tomcat6', +} +# tomcat 6のサーバとHTTP/AJPコネクタを変更 +tomcat::config::server { 'tomcat6': + catalina_base => '/opt/tomcat6', + port => '8105', +} +tomcat::config::server::connector { 'tomcat6-http': + catalina_base => '/opt/tomcat6', + port => '8180', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8543' + }, +} +tomcat::config::server::connector { 'tomcat6-ajp': + catalina_base => '/opt/tomcat6', + port => '8109', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8543' + }, +} +``` + +> 注: [バージョンリスト](http://tomcat.apache.org/whichversion.html)でインストールするバージョンを照合してください。 + +### WARファイルをデプロイしたい + +既存のインストールファイルに次のコードを追加し、warソースの場所を指定します。 +```puppet +tomcat::war { 'sample.war': + catalina_base => '/opt/tomcat8/first', + war_source => '/opt/tomcat8/webapps/docs/appdev/sample/sample.war', +} +``` + +WARファイル名は`.war`で終わる必要があります。 + +`war_source`はローカルパス、または`puppet:///`、`http://`、`ftp://`のURLを指定できます。 + +### 構成の一部を削除したい + +異なる構成定義を追加することで、ensureパラメータ(名前は定義タイプにより異なる)を受け渡せます。 + +たとえばコネクタを削除するには、次の構成でコネクタが存在しないものとして処理します。 + +```puppet +tomcat::config::server::connector { 'tomcat8-jsvc': + connector_ensure => 'absent', + catalina_base => '/opt/tomcat8/first', + port => '8080', + protocol => 'HTTP/1.1', +} +``` + +### 既存のConnectorまたはRealmを管理したい + +`tomcat::config::server::realm`または`tomcat::config::server::connector`を使用してRealm要素またはHTTP Connector要素を記述し、`purge_realms`または`purge_connectors`を`true`に設定します。 + +```puppet +tomcat::config::server::realm { 'org.apache.catalina.realm.LockOutRealm': + realm_ensure => 'present', + purge_realms => true, +} +``` + +既存のConnectorまたはRealmはすべてPuppetにより削除され、指定したもののみが残ります。 + +## リファレンス + +### クラス + +#### パブリッククラス + +* `tomcat`: メインのクラスです。Tomcatをインストールおよび構成するためのデフォルト設定の一部を管理します。 + +#### プライベートクラス + +* `tomcat::params`: Tomcatパラメータを管理します。 + +### 定義タイプ + +#### パブリック定義タイプ + +* `tomcat::config::properties::property`: catalina.propertiesファイルにプロパティを追加します。 +* `tomcat::config::server`: `$CATALINA_BASE/conf/server.xml`の[Server要素](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html)の属性を構成します。 +* `tomcat::config::server::connector`: `$CATALINA_BASE/conf/server.xml`の[Connector要素](http://tomcat.apache.org/tomcat-8.0-doc/connectors.html)を構成します。 +* `tomcat::config::server::context`: `$CATALINA_BASE/conf/server.xml`の[Context要素](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html)を構成します。 +* `tomcat::config::server::engine`: `$CATALINA_BASE/conf/server.xml`の[Engine要素](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Introduction)を構成します。 +* `tomcat::config::server::globalnamingresource`: [Global Resource要素](http://tomcat.apache.org/tomcat-8.0-doc/config/globalresources.html)を構成します。 +* `tomcat::config::server::host`: `$CATALINA_BASE/conf/server.xml`の[Host要素](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html)を構成します。 +* `tomcat::config::server::listener`: `$CATALINA_BASE/conf/server.xml`の[Listener要素](http://tomcat.apache.org/tomcat-8.0-doc/config/listeners.html)を構成します。 +* `tomcat::config::server::realm`: `$CATALINA_BASE/conf/server.xml`の[Realm要素](http://tomcat.apache.org/tomcat-8.0-doc/config/realm.html)を構成します。 +* `tomcat::config::server::service`: `$CATALINA_BASE/conf/server.xml`の`Server`要素にネストされた[Service要素](http://tomcat.apache.org/tomcat-8.0-doc/config/service.html)要素を構成します。 +* `tomcat::config::server::tomcat_users`: `$CATALINA_BASE/conf/tomcat-users.xml`または指定した他のファイルの[UserDatabaseRealm] (http://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html#UserDatabaseRealm)または[MemoryRealm] (http://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html#MemoryRealm)のユーザおよびロール要素を構成します。 +* `tomcat::config::server::valve`: `$CATALINA_BASE/conf/server.xml`の[Valve](http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html)要素を構成します。 +* `tomcat::config::context`: `$CATALINA_BASE/conf/context.xml`の[Context](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html)要素を構成します。 +* `tomcat::config::context::manager`: `$CATALINA_BASE/conf/context.xml`の[Manager](https://tomcat.apache.org/tomcat-8.0-doc/config/manager.html)要素を構成します。 +* `tomcat::config::context::environment`: `$CATALINA_BASE/conf/context.xml`の[Environment](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Environment_Entries)要素を構成します。 +* `tomcat::config::context::resource`: `$CATALINA_BASE/conf/context.xml`の[Resource](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Resource_Definitions)要素を構成します。 +* `tomcat::config::context::resourcelink`: `$CATALINA_BASE/conf/context.xml`の[ResourceLink](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Resource_Links)要素を構成します。 +* `tomcat::install`: Tomcatインスタンスをインストールします。 +* `tomcat::instance`: Tomcatインスタンスを構成します。 +* `tomcat::service`: Tomcatサービス管理を提供します。 +* `tomcat::setenv::entry`: Tomcat構成ファイル(`setenv.sh`または`/etc/sysconfig/tomcat`など)にエントリを追加します。 +* `tomcat::war`: WARファイルのデプロイを管理します。 + +#### プライベート定義タイプ + +* `tomcat::install::package`: パッケージからTomcatをインストールします。 +* `tomcat::install::source`: ソースからTomcatをインストールします。 +* `tomcat::instance::copy_from_home`: インストールファイルから必要なファイルをインスタンスにコピーします。 +* `tomcat::instance::dependencies`: インスタンスのpuppet依存関係チェーンを宣言します。 +* `tomcat::config::properties`: インスタンスのcatalina.propertiesを作成します。 + +### パラメータ + +特に指定のない限り、すべてのパラメータの指定は任意です。 + +#### tomcat +ベースクラスは、`catalina_home`のデフォルトのように、他の定義タイプ(`tomcat::install`や`tomcat::instance`など)によって使用されるデフォルト値を設定します。 + +##### `catalina_home` + +Tomcatのインストール先のデフォルトルートディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '/opt/apache-tomcat'。 + +##### `group` + +Tomcatを実行するデフォルトグループを指定します。 + +有効なオプション: 有効なグループ名を含む文字列。 + +デフォルト値: 'tomcat'。 + +##### `install_from_source` + +デフォルトでTomcatをソースからインストールするかどうかを指定します。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `true`。 + +##### `manage_group` + +指定されたグループが存在しない場合、定義タイプがデフォルトでそのグループを作成するかどうかを指定します。Puppetのネイティブ[`group`リソースタイプ](https://docs.puppetlabs.com/references/latest/type.html#group)をデフォルトのパラメータとともに使用します。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `true`。 + +##### `manage_user` + +指定されたユーザが存在しない場合、定義タイプがデフォルトでそのユーザを作成するかどうかを指定します。Puppetのネイティブ[`user`リソースタイプ](https://docs.puppetlabs.com/references/latest/type.html#user)をデフォルトのパラメータとともに使用します。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `true`。 + +##### `manage_base` +すべての`tomcat::install`インスタンスに対して、`manage_base`のデフォルト値を指定します。 + +デフォルト値: `true`。 + +##### `manage_home` +すべての`tomcat::instance`インスタンスに対して、`manage_home`のデフォルト値を指定します。 + +デフォルト値: `true`。 + +##### `manage_properties` +すべての`tomcat::instance`インスタンスに対して、`manage_properties`のデフォルト値を指定します。 + +デフォルト値: `true`。 + +##### `purge_connectors` + +定義されたプロトコルと一致するが、異なるポートを持つ未管理のConnector要素をデフォルトで構成ファイルからパージするかどうかを指定します。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `false`。 + +##### `purge_realms` + +未管理のRealm要素をデフォルトで構成ファイルからパージするかどうかを指定します。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `false`。1つのサーバ構成に2つのRealmが定義されている場合、1つ目のRealmのみに`purge_realms`を使用し、Realm間の順序が必ず守られるようにします。 + +##### `user` + +Tomcatを実行するデフォルトユーザを指定します。 + +有効なオプション: 有効なユーザ名を含む文字列。 + +デフォルト値: 'tomcat'。 + +#### tomcat::config::properties::property + +特定のcatalinaベースのcatalina.propertiesファイルに追加エントリを指定します。 + +##### `property` + +プロパティの名前です。 + +デフォルト値: `$name`。 + +##### `catalina_base` + +catalina.propertiesファイルのあるcatalinaベースです。`${catalina_base}/conf/catalina.properties`で各リソースの値が管理されます。 + +必須指定です。 + +##### `value` +プロパティの値です。 + +必須指定です。 + +#### tomcat::config::server + +##### `address` + +シャットダウンコマンドをリッスンするTCP/IPアドレスを指定します。[address XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +デフォルト値: `undef`。 + +##### `address_ensure` + +[address XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `catalina_base` + +管理対象のTomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$tomcat::catalina_home'。 + +##### `class_name` + +使用するサーバインプリメンテーションのJavaクラス名を指定します。構成ファイルの[className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes)にマッピングします。 + +有効なオプション: Javaクラス名を含む文字列。 + +デフォルト値: `undef`。 + +##### `class_name_ensure` + +[className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `port` + +指定されたシャットダウンコマンドをリッスンするポートを指定します。[port XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes)にマッピングします。 + +有効なオプション: ポート番号を含む文字列。 + +デフォルト値: `undef`。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +##### `shutdown` + +指定されたアドレスおよびポートから受信した場合にTomcatをシャットダウンするコマンドを指定します。[shutdown XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/server.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +デフォルト値: `undef`。 + +#### tomcat::config::server::connector + +##### `additional_attributes` + +Connectorに追加するその他の属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `{}`。 + +##### `attributes_to_remove` + +Connectorコネクタから削除する属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `[]`。 + +##### `catalina_base` + +管理対象のTomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat/catalina_home'。 + +##### `connector_ensure` + +[Connector XML要素](http://tomcat.apache.org/tomcat-8.0-doc/connectors.html)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `parent_service` + +ConnectorをどのService要素下にネストするかを指定します。 + +有効なオプション: Serviceのname属性を含む文字列。 + +デフォルト値: 'Catalina'。 + +##### `port` + +*`connector_ensure`が`true`か'present'に設定されている場合、必須です。* サーバソケットを作成するTCPポートを指定します。[port XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/http.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +##### `protocol` + +受信トラフィックの処理に使用するプロトコルを指定します。[protocol XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/http.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +デフォルト値: `$name`。 + +##### `purge_connectors` + +定義されたプロトコルと一致するが、異なるポートを持つ未管理のConnector要素を構成ファイルからパージするかどうかを指定します。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `false`。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +#### tomcat::config::server::context + +##### `additional_attributes` + +Contextに追加するその他の属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `{}`。 + +##### `attributes_to_remove` + +Contextから削除する属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `[]`。 + +##### `catalina_base` + +管理対象のTomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat/catalina_home'。 + +##### `context_ensure` + +[Context XML要素](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `doc_base` + +Document Base (Context Root)ディレクトリ、もしくはアーカイブファイルを指定します。[docBase XML attribute](http://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Common_Attributes)にマッピングします。 + +有効なオプション: パス(絶対パスまたは所有HostのappBaseディレクトリからの相対パス)を含む文字列。 + +デフォルト値: `$name`。 + +##### `parent_engine` + +ContextをどのEngine要素下にネストするかを指定します。`parent_host`が指定されている場合のみ有効です。 + +有効なオプション: Engineのname属性を含む文字列。 + +デフォルト値: `undef`。 + +##### `parent_host` + +ContextをどのHost要素下にネストするかを指定します。 + +有効なオプション: Hostのname属性を含む文字列。 + +デフォルト値: `undef`。 + +##### `parent_service` + +ContextをどのService XML要素下にネストするかを指定します。 + +有効なオプション: Serviceのname属性を含む文字列。 + +デフォルト値: 'Catalina'。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +#### tomcat::config::server::engine + +##### `background_processor_delay` + +このエンジンとその子コンテナで、backgroundProcessメソッドを呼び出す際の遅延時間を指定します。[backgroundProcessorDelay XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)にマッピングします。 + +有効なオプション: 整数(秒単位)。 + +デフォルト値: `undef`。 + +##### `background_processor_delay_ensure` + +[backgroundProcessorDelay XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `catalina_base` + +管理対象のTomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `class_name` + +使用するサーバインプリメンテーションのJavaクラス名を指定します。[className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)にマッピングします。 + +有効なオプション: Javaクラス名を含む文字列。 + +デフォルト値: `undef`。 + +##### `class_name_ensure` + +[className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `default_host` + +*必須指定です。* サーバ上に存在するがこの構成ファイルに定義されていないホスト名を宛先とするリクエストを処理するホストを指定します。Engineの[defaultHost XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)にマッピングします。 + +有効なオプション: ホスト名を含む文字列。 + +##### `engine_name` + +Engineの論理名を指定します。ログやエラーに使用されます。[name XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +デフォルト値: 定義タイプに受け渡された`name`。 + +##### `jvm_route` + +負荷分散のセッションアフィニティを有効にする識別子を指定します。[jvmRoute XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +デフォルト値: `undef`。 + +##### `jvm_route_ensure` + +[jvmRoute XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `parent_service` + +EngineをどのService要素下にネストするかを指定します。 + +有効なオプション: Serviceのname属性を含む文字列。 + +デフォルト値: 'Catalina'。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +##### `start_stop_threads` + +子Host要素を並列起動するために、Engineが使用するスレッド数を設定します。[startStopThreads XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +デフォルト値: `undef`。 + +##### `start_stop_threads_ensure` + +[startStopThreads XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/engine.html#Common_Attributes)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +#### tomcat::config::server::globalnamingresource + +'$CATALINA_BASE/conf/server.xml'のGlobalNamingResources Resource要素を構成します。 + +##### `ensure` + +指定したXML要素が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `resource_name` + +Puppetリソースの`$name`から通常取得されるglobalnamingresource名をオーバーライドします(任意指定)。 + +##### `catalina_base` + +Tomcatインスタンスのベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `type` + +作成する要素のタイプを指定します。 + +有効なオプション: `Resource`、`Environment`、またはその他の有効なノード。 + +デフォルト値: `Resource`。 + +>注: 入力した値がそのまま構成に使用されます。大文字小文字が正しいことを確認してください。 + +##### `additional_attributes` + +Hostに追加するその他の属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `{}`。 + +##### `attributes_to_remove` + +Hostから削除する属性を指定します。 + +有効なオプション: `'< attribute >' => '< value >'`ペアの配列。 + +デフォルト値: `[]`。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +#### tomcat::config::server::host + +##### `additional_attributes` + +Hostに追加するその他の属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `{}`。 + +##### `aliases` + +そのHostの[Host Name Aliases](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html#Host_Name_Aliases)リストを指定する任意指定の配列です。省略した場合、現在定義されているAliasは変更されません。指定した場合、Aliasのリストにはこの配列の内容がそのまま設定されます。そのため、たとえば、空の配列を指定すると、あるHostがAliasを設定しないよう明示的に強制できます。 + +##### `app_base` + +*[`host_ensure`](#host_ensure)が`false`または'absent'に設定されている場合を除き、指定は必須です。* 仮想ホストのApplication Baseディレクトリを指定します。[appBase XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +##### `attributes_to_remove` + +Hostから削除する属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアの配列。 + +デフォルト値: `[]`。 + +##### `catalina_base` + +管理対象のTomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `host_ensure` + +仮想ホスト([Host XML要素](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html#Introduction))が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `host_name` + +DNSサーバに登録されている仮想ホストのネットワーク名を指定します。[name XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/host.html#Common_Attributes)にマッピングします。 + +有効なオプション: 文字列。 + +デフォルト値: 定義タイプに受け渡された'name'。 + +##### `parent_service` + +HostをどのService要素下にネストするかを指定します。 + +有効なオプション: Serviceのname属性を含む文字列。 + +デフォルト値: 'Catalina'。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +#### tomcat::config::server::listener + +##### `additional_attributes` + +Listenerに追加するその他の属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `{}`。 + +##### `attributes_to_remove` + +Listenerから削除する属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `[]`。 + +##### `catalina_base` + +Tomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `class_name` + +使用するサーバインプリメンテーションのJavaクラス名を指定します。Listener要素の[className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/listeners.html#Common_Attributes)にマッピングします。 + +有効なオプション: Javaクラス名を含む文字列。 + +デフォルト値: `$name`。 + +##### `listener_ensure` + +[Listener XML要素](http://tomcat.apache.org/tomcat-8.0-doc/config/listeners.html)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `parent_engine` + +ListenerをどのEngine要素下にネストするかを指定します。 + +有効なオプション: Engineのname属性を含む文字列。 + +デフォルト値: `undef`。 + +##### `parent_host` + +ListenerをどのHost要素下にネストするかを指定します。 + +有効なオプション: Hostのname属性を含む文字列。 + +デフォルト値: `undef`。 + +##### `parent_service` + +ListenerをどのService要素下にネストするかを指定します。`parent_engine`または`parent_host`が指定されている場合のみ有効です。 + +有効なオプション: Serviceのname属性を含む文字列。 + +デフォルト値: 'Catalina'。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +#### tomcat::config::server::realm + +##### `additional_attributes` + +Realm要素に追加するその他の属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `{}`。 + +##### `attributes_to_remove` + +Realm要素から削除する属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアの配列。 + +デフォルト値: `[]`。 + +##### `catalina_base` + +Tomcatインストール先のベースディレクトリを指定します。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `class_name` + +使用するRealmインプリメンテーションのJavaクラス名を指定します。 [className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#Common_Attributes)にマッピングします。 + +有効なオプション: Javaクラス名を含む文字列。 + +デフォルト値: 定義タイプに受け渡された`name`。 + +##### `parent_engine` + +RealmをどのEngine要素下にネストするかを指定します。 + +有効なオプション: Engineのname属性を含む文字列。 + +デフォルト値: 'Catalina'。 + +##### `parent_host` + +RealmをどのHost要素下にネストするかを指定します。 + +有効なオプション: Hostのname属性を含む文字列。 + +デフォルト値: `undef`。 + +##### `parent_realm` + +RealmをどのRealm要素下にネストするかを指定します。 + +有効なオプション: Realm要素のclassName属性を含む文字列。 + +デフォルト値: `undef`。 + +##### `parent_service` + +このRealm要素をどのService要素下にネストするかを指定します。 + +有効なオプション: Serviceのname属性を含む文字列。 + +デフォルト値: 'Catalina'。 + +##### `purge_realms` + +未管理のRealm要素を構成ファイルからパージするかどうかを指定します。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `false`。 + +##### `realm_ensure` + +Realm要素が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +#### tomcat::config::server::service + +##### `catalina_base` + +Tomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `class_name` + +使用するサーバインプリメンテーションのJavaクラス名を指定します。[className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/service.html#Common_Attributes)にマッピングします。 + +有効なオプション: Javaクラス名を含む文字列。 + +デフォルト値: `undef`。 + +##### `class_name_ensure` + +[className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/service.html#Common_Attributes)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +##### `service_ensure` + +[Service要素](http://tomcat.apache.org/tomcat-8.0-doc/config/service.html#Introduction)が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +#### tomcat::config::server::tomcat_users + +##### `catalina_base` + +Tomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `element` + +管理する要素のタイプを指定します。 + +有効なオプション: 'user'または'role'。 + +デフォルト値: `user`。 + +##### `element_name` + +要素のユーザ名(`element`が'role'に設定されている場合はロール名)を設定します。 + +有効なオプション: 文字列。 + +デフォルト値: `$name`。 + +##### `ensure` + +指定したXML要素が構成ファイルに存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `file` + +管理する構成ファイルを指定します。 + +有効なオプション: 完全修飾パスを含む文字列。 + +デフォルト値: '$CATALINA_BASE/conf/tomcat-users.xml'。 + +##### `group` + +構成ファイルのグループを指定します。 + +デフォルト値: `$::tomcat::group`。 + +##### `manage_file` + +指定された構成ファイルが存在しない場合、そのファイルを作成するかどうかを指定します。Puppeのネイティブ[`file`リソースタイプ](https://docs.puppetlabs.com/references/latest/type.html#file)をデフォルトのパラメータとともに使用します。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `true`。 + +##### `owner` + +構成ファイルの所有者を指定します。 + +デフォルト値: `$::tomcat::user`。 + +##### `password` + +ユーザ要素のパスワードを指定します。 + +有効なオプション: 文字列。 + +デフォルト値: `undef`。 + +##### `roles` + +1つまたは複数のロールを指定します。`element`が'role'または'user'に設定されている場合のみ有効です。 + +有効なオプション: 文字列の配列。 + +デフォルト値: `[]`。 + +#### tomcat::config::server::valve + +##### `additional_attributes` + +Valveに追加するその他の属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `{}`。 + +##### `attributes_to_remove` + +Valveから削除する属性を指定します。 + +有効なオプション: '< attribute >' => '< value >'ペアのハッシュ値。 + +デフォルト値: `[]`。 + +##### `catalina_base` + +Tomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: `$::tomcat::catalina_home`。 + +##### `class_name` + +使用するサーバインプリメンテーションのJavaクラス名を指定します。[className XML属性](http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Access_Logging/Attributes)にマッピングします。 + +有効なオプション: Javaクラス名を含む文字列。 + +デフォルト値: 定義タイプに受け渡された'name'。 + +##### `parent_host` + +Valveをどの仮想ホスト下にネストするかを指定します。 + +有効なオプション: Host要素の名前を含む文字列。 + +デフォルト値: ホストを指定しない場合、Valve要素は指定された親ServiceのEngine下にネストされます。 + +##### `parent_service` + +ValveをどのService要素下にネストするかを指定します。 + +有効なオプション: Service要素の名前を含む文字列。 + +デフォルト値: 'Catalina'。 + +##### `parent_context` + +ValveをどのContext要素下にネストするかを指定します。 + +有効なオプション: Context要素の名前(docbase属性と一致)を含む文字列。 + +デフォルト値: コンテキストを指定しない場合、Valve要素は、Parent Host (定義されている場合)下または指定された親ServiceのEngine下にネストされます。 + +##### `server_config` + +管理対象のserver.xmlファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '${catalina_base}/config/server.xml'。 + +##### `valve_ensure` + +Valveが構成ファイルに存在するかどうかを指定します。[Valve XML要素](http://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Introduction)にマッピングします。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +#### tomcat::config::context + +他の`tomcat::config::context::*`定義タイプのために、`${catalina_base}/conf/context.xml`の構成Context要素を指定します。 + +##### `catalina_base` + +Tomcatインストール先のルートディレクトリを指定します。 + +#### tomcat::config::context::manager +指定されたxml構成のManager要素を指定します。 + +##### `ensure` + +Manager要素を追加しようとしているのか、削除しようとしているのかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `catalina_base` + +Tomcatインストール先のルートディレクトリを指定します。 + +デフォルト値: '$tomcat::catalina_home'。 + +##### `manager_classname` + +作成するManagerの名前です。 + +デフォルト値: `$name`。 + +##### `additional_attributes` + +Managerに追加するその他の属性を指定します。 + +'attribute' => 'value'形式のハッシュ値である必要があります。 + +任意指定 + +##### `attributes_to_remove` + +Managerから削除する属性を指定します。 + +'attribute' => 'value'形式のハッシュ値である必要があります。 + +任意指定 + +#### tomcat::config::context::environment + +`${catalina_base}/conf/context.xml`のEnvironment要素を指定します。 + +##### `ensure` + +Environment要素を追加しようとしているのか、削除しようとしているのかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `environment_name` + +作成するEnvironmentエントリの名前。`java:comp/env`コンテキストに対して相対的な名前です。 + +デフォルト値: `$name`。 + +##### `type` + +この環境エントリについてWebアプリケーションから予測される完全修飾Javaクラス名。 + +環境エントリを作成する場合は必須です。 + +##### `value` + +JNDIコンテキストからリクエストされたときに、アプリケーションに表示される値。 + +環境エントリを作成する場合は必須です。 + +##### `description` + +この環境エントリについて人間が読める形式で説明する任意指定の文字列です。 + +##### `override` + +同じ環境エントリ名に対する``がここで指定した値をオーバーライドしないようにする(`false`に設定)、任意指定の文字列またはブール値。 + +デフォルトでは、オーバーライドは許可されます。 + +##### `catalina_base` + +Tomcatインストール先のルートディレクトリを指定します。 + +デフォルト値: '$tomcat::catalina_home'。 + +##### `additional_attributes` + +Environmentに追加するその他の属性を指定します。 + +'attribute' => 'value'形式のハッシュ値である必要があります。 + +任意指定 + +##### `attributes_to_remove` + +Environmentから削除する属性を指定します。 + +'attribute' => 'value'形式のハッシュ値である必要があります。 + +任意指定 + +#### tomcat::config::context::resource +`${catalina_base}/conf/context.xml`のResource要素を指定します。 + +##### `ensure` + +Resource要素の追加または削除のどちらを試みるか指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `resource_name` + +作成するResourceの名前。`java:comp/env`コンテキストに対して相対的な名前です。 + +デフォルト値: `$name`。 + +##### `resource_type` + +このリソースのルックアップを実行するときにWebアプリケーションから期待される完全修飾Javaクラス名。リソースを作成する場合は必須です。 + +##### `catalina_base` + +Tomcatインストール先のルートディレクトリを指定します。 + +デフォルト値: '$tomcat::catalina_home'。 + +##### `additional_attributes` + +Valveに追加するその他の属性を指定します。 + +'attribute' => 'value'形式のハッシュ値である必要があります。 + +任意指定 + +##### `attributes_to_remove` + +Valveから削除する属性を指定します。 + +'attribute' => 'value'形式のハッシュ値である必要があります。 + +任意指定 + +#### tomcat::config::context::resourcelink + +指定されたxml構成のResourceLink 要素を指定します。 + +##### `ensure` + +ResourceLink要素の追加または削除のどちらを試みるかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `catalina_base` + +Tomcatインストール先のルートディレクトリを指定します。 + +デフォルト値: `$tomcat::catalina_home`。 + +##### `resourcelink_name` + +作成するResourceLinkの名前。`java:comp/env`コンテキストに対して相対的な名前です。 + +デフォルト値: `$name`。 + +##### `resourcelink_type` + +このリソースリンクのルックアップを実行するときにWebアプリケーションから期待される完全修飾Javaクラス名。 + +##### `additional_attributes` + +Valveに追加するその他の属性を指定します。 + +'attribute' => 'value'形式のハッシュ値である必要があります。 + +任意指定 + +##### `attributes_to_remove` + +Valveから削除する属性を指定します。 + +'attribute' => 'value'形式のハッシュ値である必要があります。 + +任意指定 + +#### `tomcat::install` + +ソースApache Tomcat tarballから、指定されたディレクトリにソフトウェアをインストールします。tomcatパッケージをインストールする場合にも使用できます。 + +その後、 `tomcat::instance`を使用して、`tomcat::instance::catalina_home`を`tomcat::install`によって管理されているディレクトリに指定することで、Tomcatインスタンスをインストールファイルから作成できます。 + +##### `catalina_home` + +インスタンスの作成元となるTomcatインストールディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `install_from_source` + +ソースからインストールするか、パッケージからインストールするか指定します。`true`に設定した場合、`source_url`、`source_strip_first_dir`、`user`、`group`、`manage_user`、`manage_group`パラメータが使用されます。`false`に設定した場合、`package_ensure`、`package_name`、`package_options`パラメータが使用されます。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `true`。 + +##### `source_url` + +シングルインスタンスモードの場合: *`install_from_source`が`true`に設定されている場合は必須です。* インストール元のソースURLを指定します。 to install from. + +有効なオプション: `puppet://`、`http(s)://`、または`ftp://`のURLを含む文字列。 + +##### `source_strip_first_dir` + +展開時にtarballの最上位ディレクトリを除去するかどうかを指定します。 `install_from_source`が`true`に設定されているときのみ有効です。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `true`。 + +##### `environment` + +http_proxy、https_proxy、ftp_proxyなどを設定するための環境変数です。これらはステージングモジュールを介して、配下のexecに渡されるので、execタイプ`environment`と同じ形式に従います。 + +https://docs.puppet.com/puppet/latest/reference/type.html#exec-attribute-environment + +##### `user` + +ソースインストールディレクトリの所有者を指定します。 + +デフォルト値: `$::tomcat::user`。 + +##### `group` + +ソースインストールディレクトリのグループを指定します。 + +デフォルト値: `$::tomcat::group`。 + +##### `manage_user` + +ユーザをこのモジュールで管理するかどうかを指定します。 + +デフォルト値: `$::tomcat::manage_user`。 + +##### `manage_group` + +グループをこのモジュールで管理するかどうかを指定します。 + +デフォルト値: `$::tomcat::manage_group`。 + +##### `manage_home` + +catalina_homeディレクトリをpuppetで管理するかどうかを指定します。ネットワークファイルシステム環境では推奨されないことがあります。 + +デフォルト値: `true`。 + +##### `package_ensure` + +指定されたパッケージをインストールするかどうかを指定します。`install_from_source`が`false`に設定されている場合のみ有効です。Puppetのネイティブ[`package`リソースタイプ](https://docs.puppetlabs.com/references/latest/type.html#package)の`ensure`パラメータにマッピングします。 + +デフォルト値: 'present'。 + +##### `package_name` + +*`install_from_source`が`false`に設定されている場合は必須です。* インストールするパッケージを指定します。 + +有効なオプション: 有効なパッケージ名を含む文字列。 + +##### `package_options` + +*`install_from_source`が`true`に設定されている場合は使用されません。* 生成されたパッケージリソースに使用する追加オプションを指定します。指定できる値については、[`package`リソースタイプ](https://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options)の説明を参照してください。 + +#### tomcat::instance + +tomcatインスタンスを宣言します。 + +単一のtomcatインストールで1つのインスタンスを実行する場合(「シングルインスタンス」)、または、 単一のtomcatインストールでそれぞれ独自のディレクトリ構造を持つ複数のインスタンスを実行する場合(「マルチインスタンス」)の2通りの使用方法があります。 + +- single-instance: `catalina_home`と`catalina_base`の両方が`tomcat::install`ディレクトリを指している状態で`tomcat::instance`が宣言された場合、シングルインスタンス構成です。 +- multi-instance: `catalina_home`が`tomcat::install`と同じディレクトリを指し、`catalina_base`が別のディレクトリを指した状態で`tomcat::instance`が宣言された場合、Apache Tomcatソフトウェアのインスタンスとして構成されることになります。この方法で、単一のインストールで複数のインスタンスを作成できます。`tomcat::install`宣言では、`tomcat::instance`宣言がインストールディレクトリにアクセスできるユーザおよび/またはグループを使用する必要があります。 + +##### `catalina_base` + +Tomcatインスタンスの`$CATALINA_BASE`を指定します。この場所で、ログ、構成ファイル、'webapps'ディレクトリが管理されます。シングルインスタンスのインストールの場合、`catalina_home`パラメータと同一になります。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: `$catalina_home`。 + +##### `catalina_home` + +Apache Tomcatソフトウェアが`tomcat::install`リソースによってインストールされるディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `user` + +インスタンスディレクトリおよびファイルの所有者を指定します。 + +デフォルト値: `$::tomcat::user`。 + +##### `group` + +インスタンスディレクトリおよびファイルのグループを指定します。 + +デフォルト値: `$::tomcat::group`。 + +##### `manage_user` + +ユーザをこのモジュールで管理するかどうかを指定します。 + +デフォルト値: `$::tomcat::manage_user`。 + +##### `manage_group` + +グループをこのモジュールで管理するかどうかを指定します。 + +デフォルト値: `$::tomcat::manage_group`。 + +##### `manage_base` + +catalina_baseディレクトリをpuppetで管理するかどうかを指定します。ネットワークファイルシステム環境では推奨されないことがあります。 + +デフォルト値: `true`。 + +##### `manage_service` + +このインスタンスに対応する`tomcat::service`を宣言するかどうかを指定します。 + +有効なオプション: `true`、`false`。 + +デフォルト値: `true` (マルチインスタンスをインストールする場合)、 `false` (シングルインスタンスをインストールする場合)。 + +##### `manage_properties` + +`catalina.properties`ファイルを作成および管理しているかどうかを指定します。`true`の場合、このファイルに加えられたカスタム変更が実行中にオーバーライドされます。 + +有効なオプション: `true`、`false`。 + +デフォルト値: `true`。 + +##### `java_home` + +`tomcat::service`インスタンスの宣言時にjava homeを使用するかどうかを指定します。[tomcat::service](#tomcatservice)を参照してください。 + +##### `use_jsvc` + +`tomcat::service`インスタンスの宣言時にjsvcを使用するかどうかを指定します。 + +>注: このモジュールはjsvcのコンパイル/インストールは行いません。[tomcat::service](#tomcatservice)を参照してください。 + +##### `use_init` + +`tomcat::service`インスタンスの宣言時にinitスクリプトを管理するかどうかを指定します。[tomcat::service](#tomcatservice)を参照してください。 + +#### tomcat::service + +##### `catalina_base` + +Tomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `catalina_home` + +Tomcatインストール先のルートディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home'。 + +##### `java_home` + +Javaのインストール場所を指定します。`use_jsvc`が`true`に設定されているときのみ適用されます。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: `undef`。 + +>注: このパラメータにhomeパスを指定しない場合、Puppetは`-home`スイッチをTomcatに受け渡しません。これにより、一部のシステムで問題が生じる可能性があるため、このパラメータを指定することを推奨します。 + +##### `service_enable` + +Tomcatサービスを起動時に有効化するかどうかを指定します。`use_init`が`true`に設定されている場合のみ有効です。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `use_init`が`true`で、`service_ensure`が'running'または`true`に設定されている場合、`true`。 + +##### `service_ensure` + +Tomcatサービスが実行中かどうかを指定します。Puppetのネイティブ[`service`リソースタイプ](https://docs.puppetlabs.com/references/latest/type.html#service)の`ensure`パラメータにマッピングします。 + +有効なオプション: 'running'、'stopped'、`true`、`false`。 + +デフォルト値: 'present'。 + +##### `service_name` + +*`use_init`が`true`に設定されている場合は必須です。* Tomcatサービスの名前を指定します。 + +有効なオプション: 文字列。 + +##### `start_command` + +サービスを起動するコマンドを指定します。Designates a command to start the service. + +有効なオプション: 文字列。 + +デフォルト値: `use_init`および`use_jsvc`の値によって決まります。 + +##### `stop_command` + +サービスを停止するコマンドを指定します。 + +有効なオプション: 文字列。 + +デフォルト値: `use_init`および`use_jsvc`の値によって決まります。 + +##### `use_init` + +サービスの管理にパッケージで提供されたinitスクリプトを使用するかどうかを指定します。 + + * `$CATALINA_HOME/bin/catalina.sh start` + * `$CATALINA_HOME/bin/catalina.sh stop` + +有効なオプション: `true`と`false`。 + +デフォルト値: `false`。 + +>注: tomcatモジュールはinitスクリプトを提供しません。`use_jsvc`と`use_init`の両方が`false`に設定されている場合、tomcatは次のコマンドを使用してサービスの管理を行います。 + +##### `use_jsvc` + +サービスの管理にJsvcを使用するかどうかを指定します。`use_jsvc`と`use_init`の両方が`false`に設定されている場合、tomcatは次のコマンドを使用してサービスの管理を行います。 + + * `$CATALINA_HOME/bin/catalina.sh start` + * `$CATALINA_HOME/bin/catalina.sh stop` + +有効なオプション: `true`と`false`。 + +デフォルト値: `false`。 + +##### `user` + +`use_init => true`のときのjsvcプロセスのユーザ。 + +#### tomcat::setenv::entry + +##### `base_path` + +**廃止されました。** 代わりに`config_file`を使用してください。 + +##### `config_file` + +編集する構成ファイルを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: '$::tomcat::catalina_home/bin/setenv.sh。 + +##### `ensure` + +フラグメントが構成ファイルに存在するかどうかを指定します。 + +有効なオプション: 'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `group` + +構成ファイルのグループを指定します。 + +デフォルト値: `$::tomcat::group`。 + +##### `order` + +構成ファイル内のパラメータの順序を指定します(`order`値が小さいパラメータが先に表示されます)。 + +有効なオプション: 整数、または整数を含む文字列。 + +デフォルト値: `10`。 + +###### `addto` + +`param`の先頭に付加される追加の環境変数を定義します。 + +##### `param` + +管理するパラメータを指定します。 + +有効なオプション: 文字列。 + +デフォルト値: 定義タイプに受け渡された`name`。 + +##### `quote_char` + +指定された値の前後に付加する文字を指定します。 + +有効なオプション: 文字列(通常、シングルクォーテーションまたはダブルクォーテーション)。 + +デフォルト値: (空白)。 + +##### `user` + +構成ファイルの所有者を指定します。 + +デフォルト値: `$::tomcat::user`。 + +##### `value` + +*必須です。* 管理対象のパラメータの値を提供します。 + +有効なオプション: 文字列または配列。配列を渡す場合、半角空白1つで値を区切ります。 + +##### `doexport` + +エントリにエクスポートをアペンドするかどうかを指定します。 + +有効なオプション: `true`または`false`。 + +デフォルト値: `true`。 + +#### `tomcat::war` + +##### `app_base` + +WARをデプロイする場所を指定します。`deployment_path`と組み合わせて使用することはできません。 + +有効なオプション: `$CATALINA_BASE`からの相対パスを含む文字列。 + +デフォルト値: `app_base`を指定しない場合、Puppetは指定された`deployment_path`にWARをデプロイします。それも指定されていない場合は、WARは`${catalina_base}/webapps`にデプロイされます。 + +##### `catalina_base` + +Tomcatインストール先のベースディレクトリを指定します。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: `$::tomcat::catalina_home`。 + +##### `deployment_path` + +WARをデプロイする場所を指定します。`app_base`と組み合わせて使用することはできません。 + +有効なオプション: 絶対パスを含む文字列。 + +デフォルト値: `deployment_path`を指定しない場合、Puppetは指定された`app_base`にWARをデプロイします。それも指定されていない場合は、WARは`${catalina_base}/webapps`にデプロイされます。 + +##### `war_ensure` + +WARが存在するかどうかを指定します。 + +有効なオプション: `true`、`false`、'present'、'absent'。 + +デフォルト値: 'present'。 + +##### `war_name` + +WARの名前を指定します。 + +有効なオプション: '.war'で終わるファイル名を含む文字列。 + +デフォルト値: 定義タイプに受け渡された`name`。 + +##### `war_purge` + +展開されたWARディレクトリをパージするかどうかを指定します。`war_ensure`が'absent'または`false`の場合のみ適用されます。 + +有効なオプション: `true`と`false`。 + +デフォルト値: `true`。 + +>注: Tomcatが実行中でautoDeployが`true`に設定されている場合、このパラメータを`false`に指定しても、展開されたWARディレクトリがTomcatによって削除されるのを回避することはできません。 + +##### `war_source` + +*`war_ensure`が`false`または'absent'に設定されている場合を除き、必須です。* WARのデプロイ元のソースを指定します。 + +有効なオプション: `puppet://`、`http(s)://`、または`ftp://`のURLを含む文字列。 + +## 制限事項 + +このモジュールでは、Unix系システムでのTomcatインストールのみサポートされています。`tomcat::config::server*`定義タイプには、Augeasバージョン1.0.0以降が必要です。 + +### マルチインスタンス + +一部のTomcatパッケージでは、複数のインスタンスをインストールすることが許可されていません。Tomcatをソースからインストールすることで、この制約を回避できます。 + +## 開発 + +Puppet ForgeのPuppet Labsモジュールは、オープンプロジェクトです。プロジェクトをさらに発展させるには、コミュニティへの貢献が不可欠です。Puppetが役立つ可能性のある膨大な数のプラットフォーム、無数のハードウェア、ソフトウェア、デプロイメント構成に我々がアクセスすることはできません。 + +お使いの環境でモジュールが動作するよう、変更点をできる限り簡単に貢献していただけるよう心がけています。全体を把握しやすくするため、貢献する方々に守っていただきたいいくつかの指針があります。 + +詳細については、[モジュール貢献ガイド](https://docs.puppetlabs.com/forge/contributing.html)を参照してください。 + +### 貢献者のご紹介 + +すでに貢献してくださった方々のリストを[貢献者リスト](https://github.com/puppetlabs/puppetlabs-tomcat/graphs/contributors)でご覧いただけます。 + +### テストの実行 + +機能検証のため、本プロジェクトには[rspec-puppet](http://rspec-puppet.com/)と[beaker-rspec](https://github.com/puppetlabs/beaker-rspec)の両方についてのテストが含まれています。詳細な情報については、それぞれのドキュメントをご覧ください。 + +クイックスタートガイド: + +```bash +gem install bundler +bundle install +bundle exec rake spec +bundle exec rspec spec/acceptance +RS_DEBUG=yes bundle exec rspec spec/acceptance +``` \ No newline at end of file diff --git a/modules/services/unix/http/tomcat/secgen_metadata.xml b/modules/services/unix/http/tomcat/secgen_metadata.xml new file mode 100644 index 000000000..3a92b4b44 --- /dev/null +++ b/modules/services/unix/http/tomcat/secgen_metadata.xml @@ -0,0 +1,31 @@ + + + + Apache Tomcat Server + Thomas Shaw + Puppetlabs + Apache v2 + Puppetlabs Apache Tomcat module + + httpd + tomcat + linux + + + https://forge.puppet.com/puppetlabs/tomcat + tomcat + Apache v2 + + + httpd + + + + update + + + java + + \ No newline at end of file diff --git a/modules/services/unix/http/tomcat/spec/acceptance/acceptance_1a_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_1a_spec.rb new file mode 100644 index 000000000..209bfd520 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_1a_spec.rb @@ -0,0 +1,230 @@ +require 'spec_helper_acceptance' + +#fact based two stage confine + +#confine array +confine_array = [ + (fact('operatingsystem') == 'Ubuntu' && fact('operatingsystemrelease') == '10.04'), + (fact('osfamily') == 'RedHat' && fact('operatingsystemmajrelease') == '5'), + (fact('operatingsystem') == 'Debian' && fact('operatingsystemmajrelease') == '6'), + fact('osfamily') == 'Suse' +] + +stop_test = false +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} || confine_array.any? + +describe 'Acceptance case one', :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + context 'Initial install Tomcat and verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{'tomcat':} + class{'java':} + class{'gcc':} + + if $::operatingsystemmajrelease == '16.04' { + $java_home = "/usr/lib/jvm/java-8-openjdk-${::architecture}" + } else { + $java_home = $::osfamily ? { + 'RedHat' => '/etc/alternatives/java_sdk', + 'Debian' => "/usr/lib/jvm/java-7-openjdk-${::architecture}", + default => undef + } + } + + tomcat::instance { 'tomcat_one': + source_url => '#{TOMCAT8_RECENT_SOURCE}', + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + }-> + staging::extract { 'commons-daemon-native.tar.gz': + source => "/opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-native.tar.gz", + target => "/opt/apache-tomcat/tomcat8-jsvc/bin", + unless => "test -d /opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-1.0.15-native-src", + }-> + exec { 'configure jsvc': + command => "JAVA_HOME=${java_home} configure --with-java=${java_home}", + creates => "/opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-1.0.15-native-src/unix/Makefile", + cwd => "/opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-1.0.15-native-src/unix", + path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-1.0.15-native-src/unix", + require => [ Class['gcc'], Class['java'] ], + provider => shell, + }-> + exec { 'make jsvc': + command => 'make', + creates => "/opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-1.0.15-native-src/unix/jsvc", + cwd => "/opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-1.0.15-native-src/unix", + path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-1.0.15-native-src/unix", + provider => shell, + }-> + file { 'jsvc': + ensure => link, + path => "/opt/apache-tomcat/tomcat8-jsvc/bin/jsvc", + target => "/opt/apache-tomcat/tomcat8-jsvc/bin/commons-daemon-1.0.15-native-src/unix/jsvc", + }-> + tomcat::config::server { 'tomcat8-jsvc': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + port => '80', + }-> + tomcat::config::server::connector { 'tomcat8-jsvc': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + port => '80', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '443' + }, + notify => Tomcat::Service['jsvc-default'], + }-> + tomcat::config::server::connector { 'tomcat8-ajp': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + port => '8309', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '443' + }, + connector_ensure => 'false', + }-> + tomcat::war { 'war_one.war': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + war_source => '#{SAMPLE_WAR}', + }-> + tomcat::setenv::entry { 'JAVA_HOME': + base_path => '/opt/apache-tomcat/tomcat8-jsvc/bin', + value => $java_home, + }-> + tomcat::service { 'jsvc-default': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + java_home => $java_home, + use_jsvc => true, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should be serving a page on port 80' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + end + + context 'Stop tomcat with verification!!!' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::service{ 'jsvc-default': + service_ensure => stopped, + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + use_jsvc => true, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be serving a page on port 80' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 7) + end + end + + context 'Start Tomcat with verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + + if $::operatingsystemmajrelease == '16.04' { + $java_home = "/usr/lib/jvm/java-8-openjdk-${::architecture}" + } else { + $java_home = $::osfamily ? { + 'RedHat' => '/etc/alternatives/java_sdk', + 'Debian' => "/usr/lib/jvm/java-7-openjdk-${::architecture}", + default => undef + } + } + + tomcat::service{ 'jsvc-default': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + service_ensure => true, + use_jsvc => true, + java_home => $java_home, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should be serving a page on port 80' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + end + + context 'un-deploy the war with verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::war { 'war_one.war': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + war_source => '#{SAMPLE_WAR}', + war_ensure => 'false', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not have deployed the war' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/The requested resource is not available./) + end + end + it 'Should still have the server running on port 80' do + shell('curl localhost:80', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Apache Tomcat/) + end + end + end + + context 'remove the connector with verification' do + + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + + if $::operatingsystemmajrelease == '16.04' { + $java_home = "/usr/lib/jvm/java-8-openjdk-${::architecture}" + } else { + $java_home = $::osfamily ? { + 'RedHat' => '/etc/alternatives/java_sdk', + 'Debian' => "/usr/lib/jvm/java-7-openjdk-${::architecture}", + default => undef + } + } + + tomcat::config::server::connector { 'tomcat8-jsvc': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + port => '80', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '443' + }, + connector_ensure => 'absent', + notify => Tomcat::Service['jsvc-default'] + } + tomcat::service { 'jsvc-default': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + java_home => $java_home, + use_jsvc => true, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be able to serve pages over port 80' do + shell('curl localhost:80', :acceptable_exit_codes => 7) + end + end + +end diff --git a/modules/services/unix/http/tomcat/spec/acceptance/acceptance_1b_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_1b_spec.rb new file mode 100644 index 000000000..456c151f8 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_1b_spec.rb @@ -0,0 +1,236 @@ +require 'spec_helper_acceptance' + +#fact based two stage confine + +#confine array +confine_array = [ + (fact('operatingsystem') == 'Ubuntu' && fact('operatingsystemrelease') == '10.04'), + (fact('osfamily') == 'RedHat' && fact('operatingsystemmajrelease') == '5'), + (fact('operatingsystem') == 'Debian' && fact('operatingsystemmajrelease') == '6'), + fact('osfamily') == 'Suse' +] + +stop_test = false +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} || confine_array.any? + +describe 'Acceptance case one', docker: true, :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + context 'Initial install Tomcat and verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{'java':} + class{'gcc':} + + if $::operatingsystemmajrelease == '16.04' { + $java_home = "/usr/lib/jvm/java-8-openjdk-${::architecture}" + } else { + $java_home = $::osfamily ? { + 'RedHat' => '/etc/alternatives/java_sdk', + 'Debian' => "/usr/lib/jvm/java-7-openjdk-${::architecture}", + default => undef + } + } + + class jsvc { + staging::extract { 'commons-daemon-native.tar.gz': + source => "/opt/apache-tomcat/bin/commons-daemon-native.tar.gz", + target => "/opt/apache-tomcat/bin", + unless => "test -d /opt/apache-tomcat/bin/commons-daemon-1.0.15-native-src", + } + -> exec { 'configure jsvc': + command => "JAVA_HOME=${java_home} configure --with-java=${java_home}", + creates => "/opt/apache-tomcat/bin/commons-daemon-1.0.15-native-src/unix/Makefile", + cwd => "/opt/apache-tomcat/bin/commons-daemon-1.0.15-native-src/unix", + path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/apache-tomcat/bin/commons-daemon-1.0.15-native-src/unix", + require => [ Class['gcc'], Class['java'] ], + provider => shell, + } + -> exec { 'make jsvc': + command => 'make', + creates => "/opt/apache-tomcat/bin/commons-daemon-1.0.15-native-src/unix/jsvc", + cwd => "/opt/apache-tomcat/bin/commons-daemon-1.0.15-native-src/unix", + path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/apache-tomcat/bin/commons-daemon-1.0.15-native-src/unix", + provider => shell, + } + -> file { 'jsvc': + ensure => link, + path => "/opt/apache-tomcat/bin/jsvc", + target => "/opt/apache-tomcat/bin/commons-daemon-1.0.15-native-src/unix/jsvc", + } + } + + # The default + tomcat::install { '/opt/apache-tomcat': + user => 'tomcat8', + group => 'tomcat8', + source_url => '#{TOMCAT8_RECENT_SOURCE}', + } + -> class { 'jsvc': } -> + tomcat::instance { 'tomcat_one': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + user => 'tomcat8', + group => 'tomcat8', + java_home => $java_home, + use_jsvc => true, + } + tomcat::config::server { 'tomcat8-jsvc': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + port => '80', + } + tomcat::config::server::connector { 'tomcat8-jsvc': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + port => '80', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '443' + }, + } + tomcat::config::server::connector { 'tomcat8-ajp': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + connector_ensure => absent, + port => '8309', + } + tomcat::war { 'war_one.war': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + war_source => '#{SAMPLE_WAR}', + } + tomcat::setenv::entry { 'JAVA_HOME': + user => 'tomcat8', + group => 'tomcat8', + value => $java_home, + } + EOS + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) + shell('sleep 15') + end + it 'Should be serving a page on port 80' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + end + + context 'Stop tomcat with verification!!!' do + it 'Should apply the manifest without error' do + pp = <<-EOS + if $::operatingsystemmajrelease == '16.04' { + $java_home = "/usr/lib/jvm/java-8-openjdk-${::architecture}" + } else { + $java_home = $::osfamily ? { + 'RedHat' => '/etc/alternatives/java_sdk', + 'Debian' => "/usr/lib/jvm/java-7-openjdk-${::architecture}", + default => undef + } + } + + tomcat::service { 'jsvc-default': + service_ensure => stopped, + catalina_home => '/opt/apache-tomcat', + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + use_jsvc => true, + java_home => $java_home, + user => 'tomcat8', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be serving a page on port 80' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 7) + end + end + + context 'Start Tomcat with verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + if $::operatingsystemmajrelease == '16.04' { + $java_home = "/usr/lib/jvm/java-8-openjdk-${::architecture}" + } else { + $java_home = $::osfamily ? { + 'RedHat' => '/etc/alternatives/java_sdk', + 'Debian' => "/usr/lib/jvm/java-7-openjdk-${::architecture}", + default => undef + } + } + + tomcat::service { 'jsvc-default': + service_ensure => running, + catalina_home => '/opt/apache-tomcat', + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + use_jsvc => true, + java_home => $java_home, + user => 'tomcat8', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should be serving a page on port 80' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + end + + context 'un-deploy the war with verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + tomcat::war { 'war_one.war': + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + war_source => '#{SAMPLE_WAR}', + war_ensure => absent, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not have deployed the war' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should eq("") + end + end + end + + context 'remove the connector with verification' do + + it 'Should apply the manifest without error' do + pp = <<-EOS + if $::operatingsystemmajrelease == '16.04' { + $java_home = "/usr/lib/jvm/java-8-openjdk-${::architecture}" + } else { + $java_home = $::osfamily ? { + 'RedHat' => '/etc/alternatives/java_sdk', + 'Debian' => "/usr/lib/jvm/java-7-openjdk-${::architecture}", + default => undef + } + } + + tomcat::config::server::connector { 'tomcat8-jsvc': + connector_ensure => 'absent', + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + port => '80', + notify => Tomcat::Service['jsvc-default'] + } + tomcat::service { 'jsvc-default': + service_ensure => running, + catalina_home => '/opt/apache-tomcat', + catalina_base => '/opt/apache-tomcat/tomcat8-jsvc', + java_home => $java_home, + use_jsvc => true, + user => 'tomcat8', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be able to serve pages over port 80' do + shell('curl localhost:80', :acceptable_exit_codes => 7) + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/acceptance/acceptance_2a_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_2a_spec.rb new file mode 100644 index 000000000..1dbdf0197 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_2a_spec.rb @@ -0,0 +1,215 @@ +require 'spec_helper_acceptance' + +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} + +describe 'Two different instances of Tomcat 6 in the same manifest', :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + context 'Initial install Tomcat and verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + Staging::File { + curl_option => '-k', + } + class { 'tomcat':} + class { 'java':} + tomcat::instance { 'tomcat6': + source_url => '#{TOMCAT6_RECENT_SOURCE}', + catalina_base => '/opt/apache-tomcat/tomcat6', + }-> + tomcat::config::server { 'tomcat6': + catalina_base => '/opt/apache-tomcat/tomcat6', + port => '8205', + }-> + tomcat::config::server::connector { 'tomcat6-http': + catalina_base => '/opt/apache-tomcat/tomcat6', + port => '8280', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8643' + }, + }-> + tomcat::config::server::connector { 'tomcat6-ajp': + catalina_base => '/opt/apache-tomcat/tomcat6', + port => '8209', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8643' + }, + }-> + tomcat::war { 'tomcat6-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat6', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6-sample.war', + }-> + tomcat::service { 'tomcat6': + catalina_base => '/opt/apache-tomcat/tomcat6' + } + + tomcat::instance { 'tomcat6039': + source_url => '#{TOMCAT_LEGACY_SOURCE}', + catalina_base => '/opt/apache-tomcat/tomcat6039', + }-> + tomcat::config::server { 'tomcat6039': + catalina_base => '/opt/apache-tomcat/tomcat6039', + port => '8305', + }-> + tomcat::config::server::connector { 'tomcat6039-http': + catalina_base => '/opt/apache-tomcat/tomcat6039', + port => '8380', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8743' + }, + }-> + tomcat::config::server::connector { 'tomcat6039-ajp': + catalina_base => '/opt/apache-tomcat/tomcat6039', + port => '8309', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8743' + }, + }-> + tomcat::war { 'tomcat6039-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat6039', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6039-sample.war', + }-> + tomcat::service { 'tomcat6039': + catalina_base => '/opt/apache-tomcat/tomcat6039' + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + # test the server + it 'tomcat6 should be serving a page on port 8280' do + shell('curl localhost:8280', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Apache Tomcat/) + end + end + it 'tomcat6039 should be serving a page on port 8380' do + shell('curl localhost:8380', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Apache Tomcat/) + end + end + #test the war + it 'tomcat6 should have war deployed by default' do + shell('curl localhost:8280/tomcat6-sample/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + it 'tomcat6039 should have war deployed by default' do + shell('curl localhost:8380/tomcat6039-sample/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + end + + context 'Stop tomcat service' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::service { 'tomcat6039': + catalina_base => '/opt/apache-tomcat/tomcat6039', + service_ensure => 'stopped', + } + tomcat::service { 'tomcat6': + catalina_base => '/opt/apache-tomcat/tomcat6', + service_ensure => 'false', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'tomcat6 should not be serving a page on port 8280' do + shell('curl localhost:8280', :acceptable_exit_codes => 7) + end + it 'tomcat6039 should not be serving a page on port 8380' do + shell('curl localhost:8380', :acceptable_exit_codes => 7) + end + end + + context 'Start Tomcat without war' do + it 'Should apply the manifest without error' do + pp = <<-EOS + Staging::File { + curl_option => '-k', + } + class{ 'tomcat':} + tomcat::war { 'tomcat6039-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat6039', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6039-sample.war', + war_ensure => 'absent', + }-> + tomcat::service { 'tomcat6039': + catalina_base => '/opt/apache-tomcat/tomcat6039', + service_ensure => 'true', + } + tomcat::war { 'tomcat6-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat6', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6-sample.war', + war_ensure => 'false', + }-> + tomcat::service { 'tomcat6': + catalina_base => '/opt/apache-tomcat/tomcat6', + service_ensure => 'running', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'tomcat6 should be display friendly message when war is not deployed' do + shell('curl localhost:8280/tomcat6-sample/hello.jsp') do |r| + r.stdout.should match(/The requested resource is not available/) + end + end + it 'tomcat6039 should be display friendly message when war is not deployed' do + shell('curl localhost:8380/tomcat6039-sample/hello.jsp') do |r| + r.stdout.should match(/The requested resource is not available/) + end + end + end + + context 'deploy the war' do + it 'Should apply the manifest without error' do + pp = <<-EOS + Staging::File { + curl_option => '-k', + } + class{ 'tomcat':} + tomcat::war { 'tomcat6-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat6', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6-sample.war', + war_ensure => 'present', + } + tomcat::war { 'tomcat6039-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat6039', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6039-sample.war', + war_ensure => 'true', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'tomcat6 should be serving a war on port 8280' do + shell('curl localhost:8280/tomcat6-sample/hello.jsp') do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + it 'tomcat6039 should be serving a war on port 8380' do + shell('curl localhost:8380/tomcat6039-sample/hello.jsp') do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + end + +end diff --git a/modules/services/unix/http/tomcat/spec/acceptance/acceptance_2b_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_2b_spec.rb new file mode 100644 index 000000000..b0346a057 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_2b_spec.rb @@ -0,0 +1,295 @@ +require 'spec_helper_acceptance' + +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} + +describe 'Two different installations with two instances each of Tomcat 6 in the same manifest', docker: true, :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + context 'Initial install Tomcat and verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + Staging::File { + curl_option => '-k', + } + class { 'java':} + tomcat::install { 'tomcat6': + catalina_home => '/opt/apache-tomcat6', + source_url => '#{TOMCAT6_RECENT_SOURCE}', + } + tomcat::instance { 'tomcat6-first': + catalina_home => '/opt/apache-tomcat6', + catalina_base => '/opt/tomcat6-first', + } + tomcat::instance { 'tomcat6-second': + catalina_home => '/opt/apache-tomcat6', + catalina_base => '/opt/tomcat6-second', + } + tomcat::config::server { 'tomcat6-first': + catalina_base => '/opt/tomcat6-first', + port => '8205', + } + tomcat::config::server { 'tomcat6-second': + catalina_base => '/opt/tomcat6-second', + port => '8206', + } + tomcat::config::server::connector { 'tomcat6-first-http': + catalina_base => '/opt/tomcat6-first', + port => '8280', + protocol => 'HTTP/1.1', + purge_connectors => true, + additional_attributes => { + 'redirectPort' => '8643' + }, + } + tomcat::config::server::connector { 'tomcat6-first-ajp': + catalina_base => '/opt/tomcat6-first', + port => '8209', + protocol => 'AJP/1.3', + purge_connectors => true, + additional_attributes => { + 'redirectPort' => '8643' + }, + } + tomcat::config::server::connector { 'tomcat6-second-http': + catalina_base => '/opt/tomcat6-second', + port => '8281', + protocol => 'HTTP/1.1', + purge_connectors => true, + additional_attributes => { + 'redirectPort' => '8644' + }, + } + tomcat::config::server::connector { 'tomcat6-second-ajp': + catalina_base => '/opt/tomcat6-second', + port => '8210', + protocol => 'AJP/1.3', + purge_connectors => true, + additional_attributes => { + 'redirectPort' => '8644' + }, + } + tomcat::war { 'first tomcat6-sample.war': + catalina_base => '/opt/tomcat6-first', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6-sample.war', + } + tomcat::war { 'second tomcat6-sample.war': + catalina_base => '/opt/tomcat6-second', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6-sample.war', + } + + + tomcat::install { 'tomcat6039': + catalina_home => '/opt/apache-tomcat6039', + source_url => '#{TOMCAT_LEGACY_SOURCE}', + } + tomcat::instance { 'tomcat6039-first': + catalina_home => '/opt/apache-tomcat6039', + catalina_base => '/opt/tomcat6039-first', + } + tomcat::instance { 'tomcat6039-second': + catalina_home => '/opt/apache-tomcat6039', + catalina_base => '/opt/tomcat6039-second', + } + tomcat::config::server { 'tomcat6039-first': + catalina_base => '/opt/tomcat6039-first', + port => '8305', + } + tomcat::config::server { 'tomcat6039-second': + catalina_base => '/opt/tomcat6039-second', + port => '8306', + } + tomcat::config::server::connector { 'tomcat6039-first-http': + catalina_base => '/opt/tomcat6039-first', + port => '8380', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8743' + }, + } + tomcat::config::server::connector { 'tomcat6039-second-http': + catalina_base => '/opt/tomcat6039-second', + port => '8381', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8744' + }, + } + tomcat::config::server::connector { 'tomcat6039-first-ajp': + catalina_base => '/opt/tomcat6039-first', + port => '8309', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8743' + }, + } + tomcat::config::server::connector { 'tomcat6039-second-ajp': + catalina_base => '/opt/tomcat6039-second', + port => '8310', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8744' + }, + } + tomcat::war { 'first tomcat6039-sample.war': + catalina_base => '/opt/tomcat6039-first', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6039-sample.war', + } + tomcat::war { 'second tomcat6039-sample.war': + catalina_base => '/opt/tomcat6039-second', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6039-sample.war', + } + EOS + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) + shell('sleep 15') + end + #test the war + it 'tomcat6-first should have war deployed by default' do + shell('curl localhost:8280/tomcat6-sample/hello.jsp', :acceptable_exit_codes => 0) do |r| + expect(r.stdout).to match(/Sample Application JSP Page/) + end + end + it 'tomcat6-second should have war deployed by default' do + shell('curl localhost:8281/tomcat6-sample/hello.jsp', :acceptable_exit_codes => 0) do |r| + expect(r.stdout).to match(/Sample Application JSP Page/) + end + end + it 'tomcat6039-first should have war deployed by default' do + shell('curl localhost:8380/tomcat6039-sample/hello.jsp', :acceptable_exit_codes => 0) do |r| + expect(r.stdout).to match(/Sample Application JSP Page/) + end + end + it 'tomcat6039-second should have war deployed by default' do + shell('curl localhost:8381/tomcat6039-sample/hello.jsp', :acceptable_exit_codes => 0) do |r| + expect(r.stdout).to match(/Sample Application JSP Page/) + end + end + end + + context 'Stop tomcat service' do + it 'Should apply the manifest without error' do + pp = <<-EOS + tomcat::service { 'tomcat6-first': + catalina_home => '/opt/apache-tomcat6', + catalina_base => '/opt/tomcat6-first', + service_ensure => 'false', + } + tomcat::service { 'tomcat6-second': + catalina_home => '/opt/apache-tomcat6', + catalina_base => '/opt/tomcat6-second', + service_ensure => 'false', + } + tomcat::service { 'tomcat6039-first': + catalina_home => '/opt/apache-tomcat6039', + catalina_base => '/opt/tomcat6039-first', + service_ensure => 'stopped', + } + tomcat::service { 'tomcat6039-second': + catalina_home => '/opt/apache-tomcat6039', + catalina_base => '/opt/tomcat6039-second', + service_ensure => 'stopped', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'tomcat6-first should not be serving a page on port 8280' do + shell('curl localhost:8280', :acceptable_exit_codes => 7) + end + it 'tomcat6-second should not be serving a page on port 8281' do + shell('curl localhost:8281', :acceptable_exit_codes => 7) + end + it 'tomcat6039-first should not be serving a page on port 8380' do + shell('curl localhost:8380', :acceptable_exit_codes => 7) + end + it 'tomcat6039-second should not be serving a page on port 8381' do + shell('curl localhost:8381', :acceptable_exit_codes => 7) + end + end + + context 'Start Tomcat without war' do + it 'Should apply the manifest without error' do + pp = <<-EOS + Staging::File { + curl_option => '-k', + } + tomcat::war { 'tomcat6039-sample.war': + catalina_base => '/opt/tomcat6039-first', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6039-sample.war', + war_ensure => 'absent', + }-> + tomcat::service { 'tomcat6039-first': + catalina_home => '/opt/apache-tomcat6039', + catalina_base => '/opt/tomcat6039-first', + service_ensure => 'true', + }-> + tomcat::war { 'tomcat6-sample.war': + catalina_base => '/opt/tomcat6-first', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6-sample.war', + war_ensure => 'false', + }-> + tomcat::service { 'tomcat6-first': + catalina_home => '/opt/apache-tomcat6', + catalina_base => '/opt/tomcat6-first', + service_ensure => 'running', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'tomcat6-first should not display message when war is not deployed' do + shell('curl localhost:8280/tomcat6-sample/hello.jsp') do |r| + expect(r.stdout).to_not match(/Sample Application JSP Page/) + end + end + it 'tomcat6039-first should not display message when war is not deployed' do + shell('curl localhost:8380/tomcat6039-sample/hello.jsp') do |r| + expect(r.stdout).to_not match(/Sample Application JSP Page/) + end + end + end + + context 'deploy the war' do + it 'Should apply the manifest without error' do + pp = <<-EOS + Staging::File { + curl_option => '-k', + } + tomcat::war { 'tomcat6-sample.war': + catalina_base => '/opt/tomcat6-first', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6-sample.war', + war_ensure => 'present', + } + tomcat::war { 'tomcat6039-sample.war': + catalina_base => '/opt/tomcat6039-first', + war_source => '#{SAMPLE_WAR}', + war_name => 'tomcat6039-sample.war', + war_ensure => 'true', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'tomcat6 should be serving a war on port 8280' do + shell('curl localhost:8280/tomcat6-sample/hello.jsp') do |r| + expect(r.stdout).to match(/Sample Application JSP Page/) + end + end + it 'tomcat6039 should be serving a war on port 8380' do + shell('curl localhost:8380/tomcat6039-sample/hello.jsp') do |r| + expect(r.stdout).to match(/Sample Application JSP Page/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/acceptance/acceptance_3a_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_3a_spec.rb new file mode 100644 index 000000000..6f9bbfc5c --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_3a_spec.rb @@ -0,0 +1,305 @@ +require 'spec_helper_acceptance' + +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} + +describe 'Tomcat Install source -defaults', :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + before :all do + shell("curl -k -o /tmp/sample.war '#{SAMPLE_WAR}'", :acceptable_exit_codes => 0) + end + + context 'Initial install Tomcat and verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'tomcat':} + class { 'java':} + tomcat::instance { 'tomcat7': + source_url => '#{TOMCAT7_RECENT_SOURCE}', + catalina_base => '/opt/apache-tomcat/tomcat7', + }-> + tomcat::config::server { 'tomcat7': + catalina_base => '/opt/apache-tomcat/tomcat7', + port => '8105', + }-> + tomcat::config::server::connector { 'tomcat7-http': + catalina_base => '/opt/apache-tomcat/tomcat7', + port => '8180', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8543' + }, + }-> + tomcat::config::server::connector { 'tomcat7-ajp': + catalina_base => '/opt/apache-tomcat/tomcat7', + port => '8109', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8543' + }, + }-> + tomcat::war { 'tomcat7-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat7', + war_source => '/tmp/sample.war', + war_name => 'tomcat7-sample.war', + }-> + tomcat::service { 'tomcat7': + catalina_base => '/opt/apache-tomcat/tomcat7', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should be serving a page on port 8180' do + shell('curl --retry 15 --retry-delay 4 localhost:8180') do |r| + r.stdout.should match(/Apache Tomcat/) + end + end + it 'Should be serving a JSP page from the war' do + shell('curl localhost:8180/tomcat7-sample/hello.jsp') do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + end + + context 'Stop tomcat' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'tomcat':} + tomcat::service{'tomcat7': + catalina_base => '/opt/apache-tomcat/tomcat7', + service_ensure => 'stopped', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be serving a page on port 8180' do + shell('curl localhost:8180', :acceptable_exit_codes => 7) + end + end + + context 'Start Tomcat' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'tomcat':} + tomcat::service{'tomcat7': + catalina_base => '/opt/apache-tomcat/tomcat7', + service_ensure => 'running', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should be serving a page on port 8180' do + shell('curl localhost:8180') do |r| + r.stdout.should match(/Apache Tomcat/) + end + end + end + + context 'un-deploy the war' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'tomcat':} + tomcat::war{'tomcat7-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat7', + war_source => '/tmp/sample.war', + war_ensure => 'false', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not have deployed the war' do + shell('curl localhost:8180/tomcat7-sample/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/The requested resource is not available/) + end + end + end + + context 'remove the connector' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'tomcat':} + tomcat::config::server::connector{'tomcat7-http': + catalina_base => '/opt/apache-tomcat/tomcat7', + port => '8180', + protocol => 'HTTP/1.1', + connector_ensure => 'false', + notify => Tomcat::Service['tomcat7'], + } + tomcat::service { 'tomcat7': + catalina_base => '/opt/apache-tomcat/tomcat7' + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be abble to serve pages over port 8180' do + shell('curl localhost:8180', :acceptable_exit_codes => 7) + end + end + + context 'Service Configuration' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::config::server::service{ 'org.apache.catalina.core.StandardService': + catalina_base => '/opt/apache-tomcat/tomcat7', + class_name => 'org.apache.catalina.core.StandardService', + class_name_ensure => 'true', + service_ensure => 'true', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'shoud have a service named FooBar and a class names FooBar' do + shell('cat /opt/apache-tomcat/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/<\/Service>/) + end + end + end + + context 'add a valve' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::config::server::valve{'logger': + catalina_base => '/opt/apache-tomcat/tomcat7', + class_name => 'org.apache.catalina.valves.AccessLogValve', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + shell('cat /opt/apache-tomcat/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/<\/Valve>/) + end + end + end + + context 'remove a valve' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::config::server::valve{'logger': + catalina_base => '/opt/apache-tomcat/tomcat7', + class_name => 'org.apache.catalina.valves.AccessLogValve', + valve_ensure => 'false', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + shell('cat /opt/apache-tomcat/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should_not match(/<\/Valve>/) + end + end + end + + context 'add engine and change settings' do + it 'Should apply the manifest to create the engine without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::config::server::engine{'org.apache.catalina.core.StandardEngine': + default_host => 'localhost', + catalina_base => '/opt/apache-tomcat/tomcat7', + background_processor_delay => 5, + parent_service => 'org.apache.catalina.core.StandardService', + start_stop_threads => 3, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + #validation + v = '<\/Engine>' + shell('cat /opt/apache-tomcat/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/#{v}/) + end + end + it 'Should apply the manifest to change the settings without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::config::server::engine{'org.apache.catalina.core.StandardEngine': + default_host => 'localhost', + catalina_base => '/opt/apache-tomcat/tomcat7', + background_processor_delay => 999, + parent_service => 'org.apache.catalina.core.StandardService', + start_stop_threads => 555, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + #validation + v = '<\/Engine>' + shell('cat /opt/apache-tomcat/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/#{v}/) + end + end + end + + context 'add a host then change settings' do + it 'Should apply the manifest to create the engine without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::config::server::host{'org.apache.catalina.core.StandardHost': + app_base => '/opt/apache-tomcat/tomcat7/webapps', + catalina_base => '/opt/apache-tomcat/tomcat7', + host_name => 'hulk-smash', + additional_attributes => { + astrological_sign => 'scorpio', + favorite-beer => 'PBR', + }, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + #validation + matches = ['','',''] + shell('cat /opt/apache-tomcat/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + matches.each do |m| + r.stdout.should match(/#{m}/) + end + end + end + it 'Should apply the manifest to remove a engine attribute without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::config::server::host{'org.apache.catalina.core.StandardHost': + app_base => '/opt/apache-tomcat/tomcat7/webapps', + catalina_base => '/opt/apache-tomcat/tomcat7', + host_name => 'hulk-smash', + additional_attributes => { + astrological_sign => 'scorpio', + }, + attributes_to_remove => { + favorite-beer => 'PBR', + }, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + #validation + v = '<\/Host>' + shell('cat /opt/apache-tomcat/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/#{v}/) + end + end + end + +end + + + + + + diff --git a/modules/services/unix/http/tomcat/spec/acceptance/acceptance_3b_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_3b_spec.rb new file mode 100644 index 000000000..ad733eff4 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_3b_spec.rb @@ -0,0 +1,298 @@ +require 'spec_helper_acceptance' + +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} + +describe 'Tomcat Install source -defaults', docker: true, :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + before :all do + shell("curl -k -o /tmp/sample.war '#{SAMPLE_WAR}'", :acceptable_exit_codes => 0) + end + + context 'Initial install Tomcat and verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'java':} + class { 'tomcat': + catalina_home => '/opt/apache-tomcat7', + } + tomcat::install { '/opt/apache-tomcat7': + source_url => '#{TOMCAT7_RECENT_SOURCE}', + } + tomcat::instance { 'tomcat7': + catalina_base => '/opt/apache-tomcat7/tomcat7', + } + tomcat::config::server { 'tomcat7': + catalina_base => '/opt/apache-tomcat7/tomcat7', + port => '8105', + } + tomcat::config::server::connector { 'tomcat7-http': + catalina_base => '/opt/apache-tomcat7/tomcat7', + port => '8180', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8543' + }, + } + tomcat::config::server::connector { 'tomcat7-ajp': + catalina_base => '/opt/apache-tomcat7/tomcat7', + port => '8109', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8543' + }, + } + tomcat::war { 'tomcat7-sample.war': + catalina_base => '/opt/apache-tomcat7/tomcat7', + war_source => '/tmp/sample.war', + war_name => 'tomcat7-sample.war', + } + EOS + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) + shell('sleep 15') + end + it 'Should be serving a page on port 8180' do + shell('curl --retry 15 --retry-delay 4 localhost:8180') do |r| + r.stdout.should eq("") + end + end + it 'Should be serving a JSP page from the war' do + shell('curl localhost:8180/tomcat7-sample/hello.jsp') do |r| + r.stdout.should match(/Sample Application JSP Page/) + end + end + end + + context 'Stop tomcat' do + it 'Should apply the manifest without error' do + pp = <<-EOS + tomcat::service { 'tomcat7': + catalina_home => '/opt/apache-tomcat7', + catalina_base => '/opt/apache-tomcat7/tomcat7', + service_ensure => stopped, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be serving a page on port 8180' do + shell('curl localhost:8180', :acceptable_exit_codes => 7) + end + end + + context 'Start Tomcat' do + it 'Should apply the manifest without error' do + pp = <<-EOS + tomcat::service { 'tomcat7': + catalina_home => '/opt/apache-tomcat7', + catalina_base => '/opt/apache-tomcat7/tomcat7', + service_ensure => running, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should be serving a page on port 8180' do + shell('curl localhost:8180') do |r| + r.stdout.should eq("") + end + end + end + + context 'un-deploy the war' do + it 'Should apply the manifest without error' do + pp = <<-EOS + tomcat::war { 'tomcat7-sample.war': + war_ensure => absent, + catalina_base => '/opt/apache-tomcat7/tomcat7', + war_source => '/tmp/sample.war', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not have deployed the war' do + shell('curl localhost:8180/tomcat7-sample/hello.jsp', :acceptable_exit_codes => 0) do |r| + r.stdout.should eq("") + end + end + end + + context 'remove the connector' do + it 'Should apply the manifest without error' do + pp = <<-EOS + tomcat::config::server::connector { 'tomcat7-http': + connector_ensure => absent, + catalina_base => '/opt/apache-tomcat7/tomcat7', + port => '8180', + notify => Tomcat::Service['tomcat7'], + } + tomcat::service { 'tomcat7': + catalina_home => '/opt/apache-tomcat7', + catalina_base => '/opt/apache-tomcat7/tomcat7' + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be abble to serve pages over port 8180' do + shell('curl localhost:8180', :acceptable_exit_codes => 7) + end + end + + context 'Service Configuration' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{ 'tomcat':} + tomcat::config::server::service { 'org.apache.catalina.core.StandardService': + catalina_base => '/opt/apache-tomcat7/tomcat7', + class_name => 'org.apache.catalina.core.StandardService', + class_name_ensure => 'true', + service_ensure => 'true', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'shoud have a service named FooBar and a class names FooBar' do + shell('cat /opt/apache-tomcat7/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/<\/Service>/) + end + end + end + + context 'add a valve' do + it 'Should apply the manifest without error' do + pp = <<-EOS + tomcat::config::server::valve { 'logger': + catalina_base => '/opt/apache-tomcat7/tomcat7', + class_name => 'org.apache.catalina.valves.AccessLogValve', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + shell('cat /opt/apache-tomcat7/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/<\/Valve>/) + end + end + end + + context 'remove a valve' do + it 'Should apply the manifest without error' do + pp = <<-EOS + tomcat::config::server::valve { 'logger': + catalina_base => '/opt/apache-tomcat7/tomcat7', + class_name => 'org.apache.catalina.valves.AccessLogValve', + valve_ensure => 'false', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + shell('cat /opt/apache-tomcat7/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should_not match(/<\/Valve>/) + end + end + end + + context 'add engine and change settings' do + it 'Should apply the manifest to create the engine without error' do + pp = <<-EOS + tomcat::config::server::engine{'org.apache.catalina.core.StandardEngine': + default_host => 'localhost', + catalina_base => '/opt/apache-tomcat7/tomcat7', + background_processor_delay => 5, + parent_service => 'org.apache.catalina.core.StandardService', + start_stop_threads => 3, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + #validation + v = '<\/Engine>' + shell('cat /opt/apache-tomcat7/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/#{v}/) + end + end + it 'Should apply the manifest to change the settings without error' do + pp = <<-EOS + tomcat::config::server::engine { 'org.apache.catalina.core.StandardEngine': + default_host => 'localhost', + catalina_base => '/opt/apache-tomcat7/tomcat7', + background_processor_delay => 999, + parent_service => 'org.apache.catalina.core.StandardService', + start_stop_threads => 555, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + #validation + v = '<\/Engine>' + shell('cat /opt/apache-tomcat7/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/#{v}/) + end + end + end + + context 'add a host then change settings' do + it 'Should apply the manifest to create the engine without error' do + pp = <<-EOS + tomcat::config::server::host { 'org.apache.catalina.core.StandardHost': + app_base => '/opt/apache-tomcat7/tomcat7/webapps', + catalina_base => '/opt/apache-tomcat7/tomcat7', + host_name => 'hulk-smash', + additional_attributes => { + astrological_sign => 'scorpio', + favorite-beer => 'PBR', + }, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + #validation + matches = ['','',''] + shell('cat /opt/apache-tomcat7/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + matches.each do |m| + r.stdout.should match(/#{m}/) + end + end + end + it 'Should apply the manifest to remove a engine attribute without error' do + pp = <<-EOS + tomcat::config::server::host { 'org.apache.catalina.core.StandardHost': + app_base => '/opt/apache-tomcat7/tomcat7/webapps', + catalina_base => '/opt/apache-tomcat7/tomcat7', + host_name => 'hulk-smash', + additional_attributes => { + astrological_sign => 'scorpio', + }, + attributes_to_remove => { + favorite-beer => 'PBR', + }, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + end + it 'should have changed the conf.xml file' do + #validation + v = '<\/Host>' + shell('cat /opt/apache-tomcat7/tomcat7/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/#{v}/) + end + end + end + +end + + + + + diff --git a/modules/services/unix/http/tomcat/spec/acceptance/acceptance_4a_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_4a_spec.rb new file mode 100644 index 000000000..510f0e63d --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_4a_spec.rb @@ -0,0 +1,98 @@ +require 'spec_helper_acceptance' + +#fact based two stage confine + +#confine array +confine_array = [ + (fact('operatingsystem') == 'Ubuntu' && fact('operatingsystemrelease') == '10.04'), + (fact('osfamily') == 'RedHat' && fact('operatingsystemmajrelease') == '5'), + (fact('operatingsystem') == 'Debian' && fact('operatingsystemmajrelease') == '6'), + fact('osfamily') == 'Suse' +] + +stop_test = false +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} || confine_array.any? + +describe 'Use two realms within a configuration', :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + before :all do + shell("curl -k -o /tmp/sample.war '#{SAMPLE_WAR}'", :acceptable_exit_codes => 0) + end + + context 'Initial install Tomcat and verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'tomcat':} + class { 'java':} + tomcat::instance { 'tomcat40': + source_url => '#{TOMCAT7_RECENT_SOURCE}', + catalina_base => '/opt/apache-tomcat/tomcat40', + }-> + tomcat::config::server { 'tomcat40': + catalina_base => '/opt/apache-tomcat/tomcat40', + port => '8105', + }-> + tomcat::config::server::connector { 'tomcat40-http': + catalina_base => '/opt/apache-tomcat/tomcat40', + port => '8180', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8543' + }, + }-> + tomcat::config::server::connector { 'tomcat40-ajp': + catalina_base => '/opt/apache-tomcat/tomcat40', + port => '8109', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8543' + }, + }-> + tomcat::war { 'tomcat40-sample.war': + catalina_base => '/opt/apache-tomcat/tomcat40', + war_source => '/tmp/sample.war', + war_name => 'tomcat40-sample.war', + }-> + tomcat::config::server::tomcat_users { 'memory tomcat role': + catalina_base => '/opt/apache-tomcat/tomcat40', + element => 'role', + element_name => 'tomcat', + }-> + tomcat::config::server::tomcat_users { 'memory tomcat user': + catalina_base => '/opt/apache-tomcat/tomcat40', + element_name => 'tomcat', + roles => ['tomcat'], + password => 'tomcat', + }-> + tomcat::config::server::realm { 'org.apache.catalina.realm.MemoryRealm': + realm_ensure => present, + server_config => '/opt/apache-tomcat/tomcat40/conf/server.xml', + }-> + tomcat::service { 'tomcat40': + catalina_base => '/opt/apache-tomcat/tomcat40', + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should contain two realms in config file' do + shell('cat /opt/apache-tomcat/tomcat40/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/<\/Realm>/) + end + end + it 'should be idempotent' do + pp = <<-EOS + tomcat::config::server::realm { 'org.apache.catalina.realm.MemoryRealm': + realm_ensure => present, + server_config => '/opt/apache-tomcat/tomcat40/conf/server.xml', + } + EOS + apply_manifest(pp, :catch_changes => true) + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/acceptance/acceptance_4b_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_4b_spec.rb new file mode 100644 index 000000000..b1e4c9578 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/acceptance_4b_spec.rb @@ -0,0 +1,99 @@ +require 'spec_helper_acceptance' + +#fact based two stage confine + +#confine array +confine_array = [ + (fact('operatingsystem') == 'Ubuntu' && fact('operatingsystemrelease') == '10.04'), + (fact('osfamily') == 'RedHat' && fact('operatingsystemmajrelease') == '5'), + (fact('operatingsystem') == 'Debian' && fact('operatingsystemmajrelease') == '6'), + fact('osfamily') == 'Suse' +] + +stop_test = false +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} || confine_array.any? + +describe 'Use two realms within a configuration', docker: true, :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + before :all do + shell("curl -k -o /tmp/sample.war '#{SAMPLE_WAR}'", :acceptable_exit_codes => 0) + end + + context 'Initial install Tomcat and verification' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'java':} + class { 'tomcat': catalina_home => '/opt/apache-tomcat40', } + tomcat::install { '/opt/apache-tomcat40': + source_url => '#{TOMCAT7_RECENT_SOURCE}', + } + tomcat::instance { 'tomcat40':} + tomcat::config::server { 'tomcat40': + catalina_base => '/opt/apache-tomcat40', + port => '8105', + } + tomcat::config::server::connector { 'tomcat40-http': + catalina_base => '/opt/apache-tomcat40', + port => '8180', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8543' + }, + } + tomcat::config::server::connector { 'tomcat40-ajp': + catalina_base => '/opt/apache-tomcat40', + port => '8109', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8543' + }, + } + tomcat::war { 'tomcat40-sample.war': + catalina_base => '/opt/apache-tomcat40', + war_source => '/tmp/sample.war', + war_name => 'tomcat40-sample.war', + } + tomcat::config::server::realm { 'org.apache.catalina.realm.MyRealm1': + realm_ensure => present, + catalina_base => '/opt/apache-tomcat40', + server_config => '/opt/apache-tomcat40/conf/server.xml', + additional_attributes => { + resourceName => "MyRealm1", + } + } + tomcat::config::server::realm { 'org.apache.catalina.realm.MyRealm2': + realm_ensure => present, + server_config => '/opt/apache-tomcat40/conf/server.xml', + additional_attributes => { + resourceName => "MyRealm2", + } + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should contain two realms in config file' do + shell('cat /opt/apache-tomcat40/conf/server.xml', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/<\/Realm>/) + r.stdout.should match(/<\/Realm>/) + end + end + it 'should be idempotent' do + pp = <<-EOS + tomcat::config::server::realm { 'org.apache.catalina.realm.MyRealm2': + realm_ensure => present, + server_config => '/opt/apache-tomcat40/conf/server.xml', + additional_attributes => { + resourceName => "MyRealm2", + } + } + EOS + apply_manifest(pp, :catch_changes => true) + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/acceptance/nodesets/centos-7-x64.yml b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/centos-7-x64.yml new file mode 100644 index 000000000..5eebdefbf --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/centos-7-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + centos-7-x64: + roles: + - agent + - default + platform: el-7-x86_64 + hypervisor: vagrant + box: puppetlabs/centos-7.2-64-nocm +CONFIG: + type: foss diff --git a/modules/services/unix/http/tomcat/spec/acceptance/nodesets/debian-8-x64.yml b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/debian-8-x64.yml new file mode 100644 index 000000000..fef6e63ca --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/debian-8-x64.yml @@ -0,0 +1,10 @@ +HOSTS: + debian-8-x64: + roles: + - agent + - default + platform: debian-8-amd64 + hypervisor: vagrant + box: puppetlabs/debian-8.2-64-nocm +CONFIG: + type: foss diff --git a/modules/services/unix/http/tomcat/spec/acceptance/nodesets/default.yml b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/default.yml new file mode 100644 index 000000000..dba339c46 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/default.yml @@ -0,0 +1,10 @@ +HOSTS: + ubuntu-1404-x64: + roles: + - agent + - default + platform: ubuntu-14.04-amd64 + hypervisor: vagrant + box: puppetlabs/ubuntu-14.04-64-nocm +CONFIG: + type: foss diff --git a/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/centos-7.yml b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/centos-7.yml new file mode 100644 index 000000000..a3333aac5 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/centos-7.yml @@ -0,0 +1,12 @@ +HOSTS: + centos-7-x64: + platform: el-7-x86_64 + hypervisor: docker + image: centos:7 + docker_preserve_image: true + docker_cmd: '["/usr/sbin/init"]' + # install various tools required to get the image up to usable levels + docker_image_commands: + - 'yum install -y crontabs tar wget openssl sysvinit-tools iproute which initscripts' +CONFIG: + trace_limit: 200 diff --git a/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/debian-8.yml b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/debian-8.yml new file mode 100644 index 000000000..df5c31944 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/debian-8.yml @@ -0,0 +1,11 @@ +HOSTS: + debian-8-x64: + platform: debian-8-amd64 + hypervisor: docker + image: debian:8 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get update && apt-get install -y net-tools wget locales strace lsof && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen' +CONFIG: + trace_limit: 200 diff --git a/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/ubuntu-14.04.yml b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/ubuntu-14.04.yml new file mode 100644 index 000000000..b1efa5839 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/nodesets/docker/ubuntu-14.04.yml @@ -0,0 +1,12 @@ +HOSTS: + ubuntu-1404-x64: + platform: ubuntu-14.04-amd64 + hypervisor: docker + image: ubuntu:14.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + # ensure that upstart is booting correctly in the container + - 'rm /usr/sbin/policy-rc.d && rm /sbin/initctl && dpkg-divert --rename --remove /sbin/initctl && apt-get update && apt-get install -y net-tools wget && locale-gen en_US.UTF-8' +CONFIG: + trace_limit: 200 diff --git a/modules/services/unix/http/tomcat/spec/acceptance/readme_spec.rb b/modules/services/unix/http/tomcat/spec/acceptance/readme_spec.rb new file mode 100644 index 000000000..98c47280f --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/acceptance/readme_spec.rb @@ -0,0 +1,110 @@ +require 'spec_helper_acceptance' + +#fact based two stage confine + +#confine array +confine_array = [ + (fact('operatingsystem') == 'Ubuntu' && fact('operatingsystemrelease') == '10.04'), + (fact('osfamily') == 'RedHat' && fact('operatingsystemmajrelease') == '5'), + (fact('operatingsystem') == 'Debian' && fact('operatingsystemmajrelease') == '6'), + fact('osfamily') == 'Suse' +] + +stop_test = false +stop_test = true if UNSUPPORTED_PLATFORMS.any?{ |up| fact('osfamily') == up} || confine_array.any? + +describe 'README examples', :unless => stop_test do + after :all do + shell('pkill -f tomcat', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/tomcat*', :acceptable_exit_codes => [0,1]) + shell('rm -rf /opt/apache-tomcat*', :acceptable_exit_codes => [0,1]) + end + + context 'Beginning with Tomcat' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class{'java':} + tomcat::install { '/opt/tomcat': + source_url => '#{TOMCAT7_RECENT_SOURCE}', + } + tomcat::instance { 'default': + catalina_home => '/opt/tomcat', + } + EOS + apply_manifest(pp, :catch_failures => true) + apply_manifest(pp, :catch_changes => true) + shell('sleep 15') + end + it 'has the server running on port 8080' do + shell('curl localhost:8080', :acceptable_exit_codes => 0) do |r| + r.stdout.should match(/Apache Tomcat/) + end + end + end + + context 'I want to run multiple instances of multiple versions of tomcat' do + it 'Should apply the manifest without error' do + pp = <<-EOS + class { 'java': } + + tomcat::install { '/opt/tomcat8': + source_url => '#{TOMCAT8_RECENT_SOURCE}' + } + tomcat::instance { 'tomcat8-first': + catalina_home => '/opt/tomcat8', + catalina_base => '/opt/tomcat8/first', + } + tomcat::instance { 'tomcat8-second': + catalina_home => '/opt/tomcat8', + catalina_base => '/opt/tomcat8/second', + } + # Change the default port of the second instance server and HTTP connector + tomcat::config::server { 'tomcat8-second': + catalina_base => '/opt/tomcat8/second', + port => '8006', + } + tomcat::config::server::connector { 'tomcat8-second-http': + catalina_base => '/opt/tomcat8/second', + port => '8081', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8443' + }, + } + + tomcat::install { '/opt/tomcat6': + source_url => '#{TOMCAT6_RECENT_SOURCE}', + } + tomcat::instance { 'tomcat6': + catalina_home => '/opt/tomcat6', + } + # Change tomcat 6's server and HTTP/AJP connectors + tomcat::config::server { 'tomcat6': + catalina_base => '/opt/tomcat6', + port => '8105', + } + tomcat::config::server::connector { 'tomcat6-http': + catalina_base => '/opt/tomcat6', + port => '8180', + protocol => 'HTTP/1.1', + additional_attributes => { + 'redirectPort' => '8543' + }, + } + tomcat::config::server::connector { 'tomcat6-ajp': + catalina_base => '/opt/tomcat6', + port => '8109', + protocol => 'AJP/1.3', + additional_attributes => { + 'redirectPort' => '8543' + }, + } + EOS + apply_manifest(pp, :catch_failures => true, :acceptable_exit_codes => [0,2]) + shell('sleep 15') + end + it 'Should not be serving a page on port 80' do + shell('curl localhost:80/war_one/hello.jsp', :acceptable_exit_codes => 7) + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/classes/init_spec.rb b/modules/services/unix/http/tomcat/spec/classes/init_spec.rb new file mode 100644 index 000000000..ea888f78a --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/classes/init_spec.rb @@ -0,0 +1,11 @@ +require 'spec_helper' +describe 'tomcat' do + let :facts do + { + :osfamily => 'Debian' + } + end + context 'with defaults for all parameters' do + it { is_expected.to contain_class('tomcat') } + end +end diff --git a/modules/services/unix/http/tomcat/spec/classes/tomcat_spec.rb b/modules/services/unix/http/tomcat/spec/classes/tomcat_spec.rb new file mode 100644 index 000000000..deb5cc181 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/classes/tomcat_spec.rb @@ -0,0 +1,97 @@ +require 'spec_helper' + +describe 'tomcat', :type => :class do + context "on a Debian OS" do + let :facts do + { + :osfamily => 'Debian' + } + end + it { is_expected.to contain_class("tomcat::params") } + end + + context "not installing from source" do + let :facts do + { + :osfamily => 'Debian' + } + end + let :params do + { + :install_from_source => false, + } + end + it { is_expected.not_to contain_file("/opt/apache-tomcat") } + end + + context "not managing user/group" do + let :facts do + { + :osfamily => 'Debian' + } + end + let :params do + { + :manage_user => false, + :manage_group => false + } + end + it { is_expected.not_to contain_user("tomcat") } + it { is_expected.not_to contain_group("tomcat") } + end + + context "with invalid $manage_user" do + let :facts do + { + :osfamily => 'Debian' + } + end + let :params do + { + :manage_user => 'foo' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /is not a boolean/) + end + end + + context "on windows" do + let :facts do + { + :osfamily => 'windows' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /Unsupported osfamily/) + end + end + context "on Solaris" do + let :facts do + { + :osfamily => 'Solaris' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /Unsupported osfamily/) + end + end + context "on OSX" do + let :facts do + { + :osfamily => 'Darwin' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /Unsupported osfamily/) + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/context/environment_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/context/environment_spec.rb new file mode 100644 index 000000000..679e8bad4 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/context/environment_spec.rb @@ -0,0 +1,199 @@ +require 'spec_helper' + +describe 'tomcat::config::context::environment', :type => :define do + let :pre_condition do + 'class {"tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'maxExemptions' + end + context 'Add Environment' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/foo', + :environment_name => 'maxExemptions', + :type => 'java.lang.Integer', + :value => '10', + :additional_attributes => { + 'foo' => 'bar', + 'bar' => 'foo', + }, + :attributes_to_remove => [ + 'foobar', + 'barfoo', + ] + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/foo-environment-maxExemptions').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/foo/conf/context.xml', + 'changes' => [ + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/name maxExemptions', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/type java.lang.Integer', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/value 10', + 'rm Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/override', + 'rm Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/description', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/foo \'bar\'', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/bar \'foo\'', + 'rm Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/foobar', + 'rm Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/barfoo', + ] + ) + } + end + context 'Remove Environment' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/foo', + :ensure => 'absent', + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/foo-environment-maxExemptions').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/foo/conf/context.xml', + 'changes' => [ + 'rm Context/Environment[#attribute/name=\'maxExemptions\']', + ] + ) + } + end + context 'No environment_name' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/foo', + :type => 'java.lang.Integer', + :value => '10', + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/foo-environment-maxExemptions').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/foo/conf/context.xml', + 'changes' => [ + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/name maxExemptions', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/type java.lang.Integer', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/value 10', + 'rm Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/override', + 'rm Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/description', + ] + ) + } + end + context 'Set override' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/foo', + :type => 'java.lang.Integer', + :value => '10', + :override => 'true', + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/foo-environment-maxExemptions').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/foo/conf/context.xml', + 'changes' => [ + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/name maxExemptions', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/type java.lang.Integer', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/value 10', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/override true', + 'rm Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/description', + ] + ) + } + end + context 'Set description' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/foo', + :type => 'java.lang.Integer', + :value => '10', + :description => 'foo bar', + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/foo-environment-maxExemptions').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/foo/conf/context.xml', + 'changes' => [ + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/name maxExemptions', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/type java.lang.Integer', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/value 10', + 'rm Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/override', + 'set Context/Environment[#attribute/name=\'maxExemptions\']/#attribute/description \'foo bar\'', + ] + ) + } + end + context 'Failing Tests' do + context 'Bad ensure' do + let :params do + { + :ensure => 'foobar', + :catalina_base => '/opt/apache-tomcat/foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'Empty catalina_base' do + let :params do + { + :catalina_base => '', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /is not an absolute path/) + end + end + context 'No type' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/foo', + :value => '10', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /\$type must be specified/) + end + end + context 'No value' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/foo', + :type => 'java.lang.Integer', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /\$value must be specified/) + end + end + context 'Bad override' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/foo', + :type => 'java.lang.Integer', + :value => '10', + :override => 'foobar', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /\$override must be true or false/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/context/manager_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/context/manager_spec.rb new file mode 100644 index 000000000..4cdb0e1d9 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/context/manager_spec.rb @@ -0,0 +1,58 @@ +require 'spec_helper' + +describe 'tomcat::config::context::manager', :type => :define do + let :pre_condition do + 'class {"tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'memcached' + end + context 'Add Manager' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :manager_classname => 'memcached', + :additional_attributes => { + 'barfoo' => 'foofoo', + 'fizz' => 'buzz', + }, + :attributes_to_remove => [ + 'foobar', + ], + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/test-manager-memcached').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/context.xml', + 'changes' => [ + 'set Context/Manager[#attribute/className=\'memcached\']/#attribute/className \'memcached\'', + 'set Context/Manager[#attribute/className=\'memcached\']/#attribute/barfoo \'foofoo\'', + 'set Context/Manager[#attribute/className=\'memcached\']/#attribute/fizz \'buzz\'', + 'rm Context/Manager[#attribute/className=\'memcached\']/#attribute/foobar', + ] + ) + } + end + context 'Remove Manager' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :ensure => 'absent', + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/test-manager-memcached').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/context.xml', + 'changes' => [ + 'rm Context/Manager[#attribute/className=\'memcached\']', + ] + ) + } + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/context/resource_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/context/resource_spec.rb new file mode 100644 index 000000000..d119d1ab8 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/context/resource_spec.rb @@ -0,0 +1,67 @@ +require 'spec_helper' + +describe 'tomcat::config::context::resource', :type => :define do + let :pre_condition do + 'class {"tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'jdbc' + end + context 'Add Resource' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :resource_type => 'net.sourceforge.jtds.jdbcx.JtdsDataSource', + :additional_attributes => { + 'auth' => 'Container', + 'closeMethod' => 'closeMethod', + 'validationQuery' => 'getdate()', + 'description' => 'description', + 'scope' => 'Shareable', + 'singleton' => 'true', + }, + :attributes_to_remove => [ + 'foobar', + ], + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/test-resource-jdbc').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/context.xml', + 'changes' => [ + 'set Context/Resource[#attribute/name=\'jdbc\']/#attribute/name jdbc', + 'set Context/Resource[#attribute/name=\'jdbc\']/#attribute/type net.sourceforge.jtds.jdbcx.JtdsDataSource', + 'set Context/Resource[#attribute/name=\'jdbc\']/#attribute/auth \'Container\'', + 'set Context/Resource[#attribute/name=\'jdbc\']/#attribute/closeMethod \'closeMethod\'', + 'set Context/Resource[#attribute/name=\'jdbc\']/#attribute/validationQuery \'getdate()\'', + 'set Context/Resource[#attribute/name=\'jdbc\']/#attribute/description \'description\'', + 'set Context/Resource[#attribute/name=\'jdbc\']/#attribute/scope \'Shareable\'', + 'set Context/Resource[#attribute/name=\'jdbc\']/#attribute/singleton \'true\'', + 'rm Context/Resource[#attribute/name=\'jdbc\']/#attribute/foobar', + ] + ) + } + end + context 'Remove Resource' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :ensure => 'absent', + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/test-resource-jdbc').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/context.xml', + 'changes' => [ + 'rm Context/Resource[#attribute/name=\'jdbc\']', + ] + ) + } + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/context/resourcelink_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/context/resourcelink_spec.rb new file mode 100644 index 000000000..4a58e4e9e --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/context/resourcelink_spec.rb @@ -0,0 +1,59 @@ +require 'spec_helper' + +describe 'tomcat::config::context::resourcelink', :type => :define do + let :pre_condition do + 'class {"tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'linkToGlobalResource' + end + context 'Add ResourceLink' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :resourcelink_type => 'java', + :additional_attributes => { + 'factory' => 'javax.naming.spi.ObjectFactory', + 'global' => 'simpleValue', + }, + :attributes_to_remove => [ + 'foobar', + ], + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/test-resourcelink-linkToGlobalResource').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/context.xml', + 'changes' => [ + 'set Context/ResourceLink[#attribute/name=\'linkToGlobalResource\']/#attribute/name linkToGlobalResource', + 'set Context/ResourceLink[#attribute/name=\'linkToGlobalResource\']/#attribute/type java', + 'set Context/ResourceLink[#attribute/name=\'linkToGlobalResource\']/#attribute/factory \'javax.naming.spi.ObjectFactory\'', + 'set Context/ResourceLink[#attribute/name=\'linkToGlobalResource\']/#attribute/global \'simpleValue\'', + 'rm Context/ResourceLink[#attribute/name=\'linkToGlobalResource\']/#attribute/foobar', + ] + ) + } + end + context 'Remove ResourceLink' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :ensure => 'absent', + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/test-resourcelink-linkToGlobalResource').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/context.xml', + 'changes' => [ + 'rm Context/ResourceLink[#attribute/name=\'linkToGlobalResource\']', + ] + ) + } + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/context_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/context_spec.rb new file mode 100644 index 000000000..d75cff127 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/context_spec.rb @@ -0,0 +1,47 @@ +require 'spec_helper' + +describe 'tomcat::config::context', :type => :define do + let :pre_condition do + 'class {"tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'Context' + end + context 'Set Context Wathced resource' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test' + } + end + it { is_expected.to contain_augeas('context-/opt/apache-tomcat/test').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/context.xml', + 'changes' => [ + 'set Context/WatchedResource/#text "WEB-INF/web.xml"', + ] + ) + } + end + + describe 'failing tests' do + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/connector_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/connector_spec.rb new file mode 100644 index 000000000..b7b3f55bd --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/connector_spec.rb @@ -0,0 +1,202 @@ +require 'spec_helper' + +describe 'tomcat::config::server::connector', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'HTTP/1.1' + end + context 'set all the things' do + let :params do + { + :port => '8180', + :catalina_base => '/opt/apache-tomcat/test', + :protocol => 'AJP/1.3', + :parent_service => 'Catalina2', + :server_config => '/opt/apache-tomcat/server.xml', + :additional_attributes => { + 'redirectPort' => '8543', + 'connectionTimeout' => '20000', + 'spaces' => 'foo bar', + }, + :attributes_to_remove => [ + 'foo', + 'bar', + 'baz' + ], + } + end + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test-Catalina2-connector-8180').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/port 8180', + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/protocol AJP/1.3', + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/redirectPort \'8543\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/connectionTimeout \'20000\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/spaces \'foo bar\'', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/foo', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/bar', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/baz', + ], + ) + } + end + context 'set all the things with purge_connectors' do + let :params do + { + :port => '8180', + :catalina_base => '/opt/apache-tomcat/test', + :protocol => 'AJP/1.3', + :purge_connectors => true, + :parent_service => 'Catalina2', + :additional_attributes => { + 'redirectPort' => '8543', + 'connectionTimeout' => '20000', + }, + :attributes_to_remove => [ + 'foo', + 'bar', + 'baz' + ], + } + end + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test-Catalina2-connector-8180' +).with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'rm Server//Connector[#attribute/protocol=\'AJP/1.3\'][#attribute/port!=\'8180\']', + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/port 8180', + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/protocol AJP/1.3', + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/redirectPort \'8543\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/connectionTimeout \'20000\'', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/foo', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/bar', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Connector[#attribute/port=\'8180\']/#attribute/baz', + ], + ) + } + end + context 'remove connector' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :connector_ensure => 'absent', + :port => '8180', + } + end + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test-Catalina-connector-8180').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'rm Server/Service[#attribute/name=\'Catalina\']/Connector[#attribute/port=\'8180\']', + ], + ) + } + end + context 'remove connector no port' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :connector_ensure => 'absent', + } + end + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test-Catalina-connector-').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'rm Server/Service[#attribute/name=\'Catalina\']/Connector[#attribute/protocol=\'HTTP/1.1\']', + ], + ) + } + end + context 'remove connector with purge_connectors' do + let :params do + { + :catalina_base => 'opt/apache-tomcat/test', + :connector_ensure => 'absent', + :purge_connectors => true, + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /\$connector_ensure must be set to 'true' or 'present' to use \$purge_connectors/) + end + end + context 'two connectors with same protocol' do + let :pre_condition do + 'class { "tomcat": } + tomcat::config::server::connector { "temp": + protocol => "HTTP/1.1", + port => "443", + } + ' + end + let :params do + { + :port => '8180', + } + end + it { is_expected.to compile } + end + describe 'failing tests' do + context 'bad connector_ensure' do + let :params do + { + :connector_ensure => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'bad additional_attributes' do + let :params do + { + :additional_attributes => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /is not a Hash/) + end + end + context 'no port' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/context_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/context_spec.rb new file mode 100644 index 000000000..32616a559 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/context_spec.rb @@ -0,0 +1,197 @@ +require 'spec_helper' + +describe 'tomcat::config::server::context', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'exampleapp.war' + end + context 'Add Context' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/exampleapp', + :context_ensure => 'present', + :doc_base => 'myapp.war', + :parent_service => 'Catalina', + :parent_engine => 'Catalina', + :parent_host => 'localhost', + :server_config => '/opt/apache-tomcat/server.xml', + :additional_attributes => { + 'path' => '/myapp', + }, + :attributes_to_remove => [ + 'foobar', + ], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/exampleapp-Catalina-Catalina-localhost-context-exampleapp.war').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine[#attribute/name=\'Catalina\']/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'myapp.war\']/#attribute/docBase myapp.war', + 'set Server/Service[#attribute/name=\'Catalina\']/Engine[#attribute/name=\'Catalina\']/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'myapp.war\']/#attribute/path \'/myapp\'', + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine[#attribute/name=\'Catalina\']/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'myapp.war\']/#attribute/foobar', + ] + ) + } + end + context 'No doc_base' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/exampleapp', + :context_ensure => 'present', + :parent_service => 'Catalina', + :parent_engine => 'Catalina', + :parent_host => 'localhost', + :additional_attributes => { + 'path' => '/exampleapp', + }, + :attributes_to_remove => [ + 'foobar', + ], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/exampleapp-Catalina-Catalina-localhost-context-exampleapp.war').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/exampleapp/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine[#attribute/name=\'Catalina\']/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'exampleapp.war\']/#attribute/docBase exampleapp.war', + 'set Server/Service[#attribute/name=\'Catalina\']/Engine[#attribute/name=\'Catalina\']/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'exampleapp.war\']/#attribute/path \'/exampleapp\'', + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine[#attribute/name=\'Catalina\']/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'exampleapp.war\']/#attribute/foobar', + ] + ) + } + end + context 'context with $parent_service' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/exampleapp', + :context_ensure => 'present', + :doc_base => 'myapp.war', + :parent_service => 'test', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/exampleapp-test---context-exampleapp.war').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/exampleapp/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'test\']/Engine/Host/Context[#attribute/docBase=\'myapp.war\']/#attribute/docBase myapp.war', + ] + ) + } + end + context 'context with $parent_host' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/exampleapp', + :context_ensure => 'present', + :doc_base => 'myapp.war', + :parent_host => 'localhost', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/exampleapp-Catalina--localhost-context-exampleapp.war').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/exampleapp/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'myapp.war\']/#attribute/docBase myapp.war', + ] + ) + } + end + context '$parent_engine, no $parent_host' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/exampleapp', + :context_ensure => 'present', + :doc_base => 'myapp.war', + :parent_engine => 'Catalina', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/exampleapp-Catalina---context-exampleapp.war').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/exampleapp/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/Host/Context[#attribute/docBase=\'myapp.war\']/#attribute/docBase myapp.war', + ] + ) + } + end + context 'Remove Context' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/exampleapp', + :context_ensure => 'absent', + :doc_base => 'myapp.war', + :parent_service => 'Catalina', + :parent_engine => 'Catalina', + :parent_host => 'localhost', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/exampleapp-Catalina-Catalina-localhost-context-exampleapp.war').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/exampleapp/conf/server.xml', + 'changes' => [ + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine[#attribute/name=\'Catalina\']/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'myapp.war\']', + ] + ) + } + end + describe 'Failing Tests' do + context 'bad context_ensure' do + let :params do + { + :context_ensure => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'Bad additional_attributes' do + let :params do + { + :additional_attributes => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /is not a Hash/) + end + end + context 'Bad attributes_to_remove' do + let :params do + { + :attributes_to_remove => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /is not an Array/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/engine_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/engine_spec.rb new file mode 100644 index 000000000..4d571b856 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/engine_spec.rb @@ -0,0 +1,156 @@ +require 'spec_helper' + +describe 'tomcat::config::server::engine', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'Catalina' + end + context 'default' do + let :params do + { + :default_host => 'localhost', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat-Catalina-engine').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/#attribute/name Catalina', + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/#attribute/defaultHost localhost', + ] + ) + } + end + context 'set all the things' do + let :params do + { + :default_host => 'localhost', + :catalina_base => '/opt/apache-tomcat/test', + :background_processor_delay => '10', + :class_name => 'foo', + :engine_name => 'Catalina2', + :jvm_route => 'bar', + :parent_service => 'Catalina2', + :start_stop_threads => '200', + :server_config => '/opt/apache-tomcat/server.xml', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina2-engine').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/#attribute/name Catalina2', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/#attribute/defaultHost localhost', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/#attribute/backgroundProcessorDelay 10', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/#attribute/className foo', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/#attribute/jvmRoute bar', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/#attribute/startStopThreads 200', + ] + ) + } + end + context 'remove all the things' do + let :params do + { + :default_host => 'localhost', + :background_processor_delay_ensure => 'false', + :class_name_ensure => 'absent', + :jvm_route_ensure => 'false', + :start_stop_threads_ensure => 'absent', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat-Catalina-engine').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/#attribute/name Catalina', + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/#attribute/defaultHost localhost', + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine/#attribute/backgroundProcessorDelay', + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine/#attribute/className', + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine/#attribute/jvmRoute', + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine/#attribute/startStopThreads', + ] + ) + } + end + describe 'failing tests' do + context 'bad background_processor_delay ensure' do + let :params do + { + :default_host => 'localhost', + :background_processor_delay_ensure => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'bad class_name_ensure' do + let :params do + { + :default_host => 'localhost', + :class_name_ensure => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'bad jvm_route_ensure' do + let :params do + { + :default_host => 'localhost', + :jvm_route_ensure => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'bad start_stop_threads ensure' do + let :params do + { + :default_host => 'localhost', + :start_stop_threads_ensure => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + let :params do + { + :default_host => 'localhost', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/host_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/host_spec.rb new file mode 100644 index 000000000..1d7556a28 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/host_spec.rb @@ -0,0 +1,170 @@ +require 'spec_helper' + +describe 'tomcat::config::server::host', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'localhost' + end + context 'defaults' do + let :params do + { + :app_base => 'webapps' + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat-Catalina-host-localhost').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/Host[#attribute/name=\'localhost\']/#attribute/name localhost', + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/Host[#attribute/name=\'localhost\']/#attribute/appBase webapps', + ] + ) + } + end + context 'set all the things' do + let :params do + { + :app_base => 'webapps2', + :catalina_base => '/opt/apache-tomcat/test', + :host_ensure => 'true', + :host_name => 'test.example.com', + :parent_service => 'Catalina2', + :server_config => '/opt/apache-tomcat/server.xml', + :additional_attributes => { + 'autoDeploy' => 'false', + 'unpackWARs' => 'false', + 'spaces' => 'foo bar', + }, + :attributes_to_remove => [ + 'foo', + 'bar', + 'baz', + ], + :aliases => [ + 'able', + 'baker', + 'charlie', + ], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina2-host-localhost').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/#attribute/name test.example.com', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/#attribute/appBase webapps2', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/#attribute/autoDeploy \'false\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/#attribute/unpackWARs \'false\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/#attribute/spaces \'foo bar\'', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/#attribute/foo', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/#attribute/bar', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/#attribute/baz', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/Alias', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/Alias[last()+1]/#text \'able\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/Alias[last()+1]/#text \'baker\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'test.example.com\']/Alias[last()+1]/#text \'charlie\'', + ] + ) + } + end + context 'empty array of aliases removes old aliases and does not add any' do + let :params do + { + :app_base => 'webapps', + :aliases => [], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat-Catalina-host-localhost').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/Host[#attribute/name=\'localhost\']/#attribute/name localhost', + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/Host[#attribute/name=\'localhost\']/#attribute/appBase webapps', + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine/Host[#attribute/name=\'localhost\']/Alias', + ] + ) + } + end + context 'remove the host' do + let :params do + { + :host_ensure => 'false' + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat-Catalina-host-localhost').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/conf/server.xml', + 'changes' => [ + 'rm Server/Service[#attribute/name=\'Catalina\']/Engine/Host[#attribute/name=\'localhost\']' + ] + ) + } + end + describe 'failing tests' do + context 'no app_base' do + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /\$app_base must be specified/) + end + end + context 'bad additional_attributes' do + let :params do + { + :additional_attributes => 'foo' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /is not a Hash/) + end + end + context 'invalid host_ensure' do + let :params do + { + :host_ensure => 'foo' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'invalid aliases' do + let :params do + { + :app_base => 'webapps', + :aliases => 'not_an_array', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /is not an Array/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/listener_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/listener_spec.rb new file mode 100644 index 000000000..7e2820598 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/listener_spec.rb @@ -0,0 +1,231 @@ +require 'spec_helper' + +describe 'tomcat::config::server::listener', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'JmxRemoteLifecycleListener' + end + context 'Add Listener' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :class_name => 'org.apache.catalina.mbeans.JmxRemoteLifecycleListener', + :listener_ensure => 'present', + :server_config => '/opt/apache-tomcat/server.xml', + :additional_attributes => { + 'rmiRegistryPortPlatform' => '10001', + 'rmiServerPortPlatform' => '10002', + 'spaces' => 'foo bar', + }, + :attributes_to_remove => [ + 'foo', + 'bar', + 'baz', + ], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test----listener-JmxRemoteLifecycleListener').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + 'set Server/Listener[#attribute/className=\'org.apache.catalina.mbeans.JmxRemoteLifecycleListener\']/#attribute/className org.apache.catalina.mbeans.JmxRemoteLifecycleListener', + 'set Server/Listener[#attribute/className=\'org.apache.catalina.mbeans.JmxRemoteLifecycleListener\']/#attribute/rmiRegistryPortPlatform \'10001\'', + 'set Server/Listener[#attribute/className=\'org.apache.catalina.mbeans.JmxRemoteLifecycleListener\']/#attribute/rmiServerPortPlatform \'10002\'', + 'set Server/Listener[#attribute/className=\'org.apache.catalina.mbeans.JmxRemoteLifecycleListener\']/#attribute/spaces \'foo bar\'', + 'rm Server/Listener[#attribute/className=\'org.apache.catalina.mbeans.JmxRemoteLifecycleListener\']/#attribute/foo', + 'rm Server/Listener[#attribute/className=\'org.apache.catalina.mbeans.JmxRemoteLifecycleListener\']/#attribute/bar', + 'rm Server/Listener[#attribute/className=\'org.apache.catalina.mbeans.JmxRemoteLifecycleListener\']/#attribute/baz', + ] + ) + } + end + context 'No class_name' do + let :title do + 'org.apache.catalina.core.AprLifecycleListener' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :listener_ensure => 'present', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test----listener-org.apache.catalina.core.AprLifecycleListener').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/Listener[#attribute/className=\'org.apache.catalina.core.AprLifecycleListener\']/#attribute/className org.apache.catalina.core.AprLifecycleListener', + ] + ) + } + end + context '$parent_engine, no $parent_service' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :listener_ensure => 'present', + :parent_engine => 'default', + :class_name => 'org.apache.catalina.core.AprLifecycleListener', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-default--listener-JmxRemoteLifecycleListener').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine[#attribute/name=\'default\']/Listener[#attribute/className=\'org.apache.catalina.core.AprLifecycleListener\']/#attribute/className org.apache.catalina.core.AprLifecycleListener', + ] + ) + } + end + context '$parent_engine' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :listener_ensure => 'present', + :parent_engine => 'default', + :parent_service => 'Catalina2', + :class_name => 'org.apache.catalina.core.AprLifecycleListener', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina2-default--listener-JmxRemoteLifecycleListener').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine[#attribute/name=\'default\']/Listener[#attribute/className=\'org.apache.catalina.core.AprLifecycleListener\']/#attribute/className org.apache.catalina.core.AprLifecycleListener', + ] + ) + } + end + context '$parent_host, no $parent_engine or $parent_service' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :listener_ensure => 'present', + :parent_host => 'localhost', + :class_name => 'org.apache.catalina.core.AprLifecycleListener', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina--localhost-listener-JmxRemoteLifecycleListener').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/Engine/Host[#attribute/name=\'localhost\']/Listener[#attribute/className=\'org.apache.catalina.core.AprLifecycleListener\']/#attribute/className org.apache.catalina.core.AprLifecycleListener', + ] + ) + } + end + context '$parent_host, no $parent_engine' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :listener_ensure => 'present', + :parent_host => 'localhost', + :parent_service => 'Catalina2', + :class_name => 'org.apache.catalina.core.AprLifecycleListener', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina2--localhost-listener-JmxRemoteLifecycleListener').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'localhost\']/Listener[#attribute/className=\'org.apache.catalina.core.AprLifecycleListener\']/#attribute/className org.apache.catalina.core.AprLifecycleListener', + ] + ) + } + end + context '$parent_host' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :listener_ensure => 'present', + :parent_engine => 'default', + :parent_host => 'localhost', + :parent_service => 'Catalina2', + :class_name => 'org.apache.catalina.core.AprLifecycleListener', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina2-default-localhost-listener-JmxRemoteLifecycleListener').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine[#attribute/name=\'default\']/Host[#attribute/name=\'localhost\']/Listener[#attribute/className=\'org.apache.catalina.core.AprLifecycleListener\']/#attribute/className org.apache.catalina.core.AprLifecycleListener', + ] + ) + } + end + context 'Remove Listener' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :class_name => 'org.apache.catalina.mbeans.JmxRemoteLifecycleListener', + :listener_ensure => 'absent', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test----listener-JmxRemoteLifecycleListener').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'rm Server/Listener[#attribute/className=\'org.apache.catalina.mbeans.JmxRemoteLifecycleListener\']' + ] + ) + } + end + context 'Failing Tests' do + context 'Bad listener_ensure' do + let :params do + { + :listener_ensure => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /does not match/) + end + end + context 'Bad additional_attributes' do + let :params do + { + :additional_attributes => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /is not a Hash/) + end + end + context 'Bad attributes_to_remove' do + let :params do + { + :attributes_to_remove => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /is not an Array/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/realm_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/realm_spec.rb new file mode 100644 index 000000000..692a07686 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/realm_spec.rb @@ -0,0 +1,362 @@ +require 'spec_helper' + +describe 'tomcat::config::server::realm', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'org.apache.catalina.realm.JNDIRealm' + end + context 'Add Realm' do + let :params do + { + :class_name => 'org.apache.catalina.realm.JNDIRealm', + :catalina_base => '/opt/apache-tomcat/test', + :realm_ensure => 'present', + :server_config => '/opt/apache-tomcat/server.xml', + :additional_attributes => { + 'connectionURL' => 'ldap://localhost', + 'roleName' => 'cn', + 'roleSearch' => 'member={0}', + 'spaces' => 'foo bar', + }, + :attributes_to_remove => [ + 'foo', + 'bar', + 'baz', + ], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina---realm-org.apache.catalina.realm.JNDIRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/connectionURL 'ldap://localhost'", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/roleName 'cn'", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/roleSearch 'member={0}'", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/spaces 'foo bar'", + "rm Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/foo", + "rm Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/bar", + "rm Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/baz", + ] + ) + } + end + context 'Purge Realms' do + let :params do + { + :purge_realms => true, + :class_name => 'org.apache.catalina.realm.JNDIRealm', + :catalina_base => '/opt/apache-tomcat/test', + :realm_ensure => 'true', + :additional_attributes => { + 'connectionURL' => 'ldap://localhost', + 'roleName' => 'cn', + }, + :attributes_to_remove => [ + 'foo', + 'bar', + ], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina---realm-org.apache.catalina.realm.JNDIRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "rm //Realm//Realm", + "rm //Context//Realm", + "rm //Host//Realm", + "rm //Engine//Realm", + "rm //Server//Realm", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/connectionURL 'ldap://localhost'", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/roleName 'cn'", + "rm Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/foo", + "rm Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/bar", + ] + ) + } + end + context 'No class_name' do + let :title do + 'org.apache.catalina.realm.JNDIRealm' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :realm_ensure => 'present', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina---realm-org.apache.catalina.realm.JNDIRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + ] + ) + } + end + context 'Duplicate class_name' do + let :title do + 'first' + end + let :pre_condition do + <<-END + tomcat::config::server::realm { 'second': + class_name => 'org.apache.catalina.realm.JNDIRealm', + catalina_base => '/opt/apache-tomcat/test', + realm_ensure => 'present', + } + END + end + let :params do + { + :class_name => 'org.apache.catalina.realm.JNDIRealm', + :catalina_base => '/opt/apache-tomcat/test', + :realm_ensure => 'present', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina---realm-first').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + ] + ) + } + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina---realm-second').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + ] + ) + } + end + context '$realm_ensure absent' do + let :title do + 'org.apache.catalina.realm.LockOutRealm' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :realm_ensure => 'absent', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina---realm-org.apache.catalina.realm.LockOutRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "rm Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.LockOutRealm']", + ] + ) + } + end + context '$realm_ensure false' do + let :title do + 'org.apache.catalina.realm.LockOutRealm' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :realm_ensure => 'false', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina---realm-org.apache.catalina.realm.LockOutRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "rm Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.LockOutRealm']", + ] + ) + } + end + context 'Add Realm with $parent_service and $parent_engine' do + let :title do + 'org.apache.catalina.realm.JNDIRealm' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :parent_service => 'NewService', + :parent_engine => 'AnotherEngine', + :realm_ensure => 'present', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-NewService-AnotherEngine---realm-org.apache.catalina.realm.JNDIRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "set Server/Service[#attribute/name='NewService']/Engine[#attribute/name='AnotherEngine']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + ] + ) + } + end + context 'Add Realm with $parent_host' do + let :title do + 'org.apache.catalina.realm.JNDIRealm' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :parent_host => 'localhost', + :realm_ensure => 'present', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina-localhost--realm-org.apache.catalina.realm.JNDIRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Host[#attribute/name='localhost']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + ] + ) + } + end + context 'Add Realm with $parent_host and $parent_realm' do + let :title do + 'org.apache.catalina.realm.JNDIRealm' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :parent_host => 'localhost', + :parent_realm => 'org.apache.catalina.realm.LockOutRealm', + :realm_ensure => 'present', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina-localhost-org.apache.catalina.realm.LockOutRealm-realm-org.apache.catalina.realm.JNDIRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Host[#attribute/name='localhost']/Realm[#attribute/className='org.apache.catalina.realm.LockOutRealm']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + ] + ) + } + end + context 'Add Realm with $parent_realm only' do + let :title do + 'org.apache.catalina.realm.JNDIRealm' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :parent_realm => 'org.apache.catalina.realm.LockOutRealm', + :realm_ensure => 'present', + :additional_attributes => { + 'connectionURL' => 'ldap://localhost', + 'roleName' => 'cn', + 'roleSearch' => 'member={0}', + 'spaces' => 'foo bar', + }, + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina-Catalina--org.apache.catalina.realm.LockOutRealm-realm-org.apache.catalina.realm.JNDIRealm').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.LockOutRealm']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/className org.apache.catalina.realm.JNDIRealm", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.LockOutRealm']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/connectionURL 'ldap://localhost'", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.LockOutRealm']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/roleName 'cn'", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.LockOutRealm']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/roleSearch 'member={0}'", + "set Server/Service[#attribute/name='Catalina']/Engine[#attribute/name='Catalina']/Realm[#attribute/className='org.apache.catalina.realm.LockOutRealm']/Realm[#attribute/className='org.apache.catalina.realm.JNDIRealm']/#attribute/spaces 'foo bar'", + ] + ) + } + end + context 'Failing Tests' do + context 'Bad realm_ensure' do + let :params do + { + :realm_ensure => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /does not match/) + end + end + context 'Bad additional_attributes' do + let :params do + { + :additional_attributes => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /is not a Hash/) + end + end + context 'Bad attributes_to_remove' do + let :params do + { + :attributes_to_remove => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /is not an Array/) + end + end + context 'Bad purge_realms' do + let :params do + { + :purge_realms => 'true', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /is not a boolean/) + end + end + context 'Purge realms with $realm_ensure => false' do + let :params do + { + :realm_ensure => 'false', + :purge_realms => true, + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /\$realm_ensure must be set to 'true' or 'present' to use \$purge_realms/) + end + end + context 'Purge realms with $realm_ensure => absent' do + let :params do + { + :realm_ensure => 'absent', + :purge_realms => true, + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /\$realm_ensure must be set to 'true' or 'present' to use \$purge_realms/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas >= 1.0.0/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/service_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/service_spec.rb new file mode 100644 index 000000000..e747b300b --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/service_spec.rb @@ -0,0 +1,131 @@ +require 'spec_helper' + +describe 'tomcat::config::server::service', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'Catalina' + end + context 'set classname' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :class_name => 'foo', + :class_name_ensure => 'true', + :server_config => '/opt/apache-tomcat/server.xml', + } + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test-service-Catalina').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/#attribute/name Catalina', + 'set Server/Service[#attribute/name=\'Catalina\']/#attribute/className foo', + ] + ) + } + end + end + context 'remove classname' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :class_name_ensure => 'false', + } + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test-service-Catalina').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/#attribute/name Catalina', + 'rm Server/Service[#attribute/name=\'Catalina\']/#attribute/className', + ] + ) + } + end + end + context 'service ensure without class_name' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :service_ensure => 'present' + } + end + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test-service-Catalina').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina\']/#attribute/name Catalina', + ] + ) + } + end + context 'remove service' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :service_ensure => 'false', + } + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test-service-Catalina').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'rm Server/Service[#attribute/name=\'Catalina\']', + ] + ) + } + end + end + context 'no changes' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + } + it { is_expected.to_not contain_augeas('server-/opt/apache-tomcat/test-service-Catalina') } + end + end + describe 'failing tests' do + context 'bad service_ensure' do + let :params do + { + :service_ensure => 'foo' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'bad class_name_ensure' do + let :params do + { + :class_name_ensure => 'foo' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/tomcat_users_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/tomcat_users_spec.rb new file mode 100644 index 000000000..16844f742 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/tomcat_users_spec.rb @@ -0,0 +1,247 @@ +require 'spec_helper' + +describe 'tomcat::config::server::tomcat_users', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'tomcat-users' + end + context 'Add User with manage_file' do + let :title do + 'user-foo' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :element => 'user', + :element_name => 'foo', + :ensure => 'present', + :manage_file => true, + :password => 'bar', + :roles => [ + 'foo_role', + 'bar_role', + ], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-tomcat_users-user-foo-user-foo').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/tomcat-users.xml', + 'changes' => [ + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/username \'foo\'', + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/password \'bar\'', + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/roles \'foo_role,bar_role\'', + ], + 'require' => 'File[/opt/apache-tomcat/test/conf/tomcat-users.xml]', + ) + } + it do + should contain_file('/opt/apache-tomcat/test/conf/tomcat-users.xml').with({ + 'ensure' => 'file', + 'owner' => 'tomcat', + 'group' => 'tomcat', + 'mode' => '0640', + 'replace' => false, + }) + end + end + context 'Add User no element' do + let :title do + 'user-foo' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :element_name => 'foo', + :password => 'very-secret-password', + :roles => [ 'foobar' ], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-tomcat_users-user-foo-user-foo').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/tomcat-users.xml', + 'changes' => [ + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/username \'foo\'', + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/password \'very-secret-password\'', + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/roles \'foobar\'', + ], + 'require' => 'File[/opt/apache-tomcat/test/conf/tomcat-users.xml]', + ) + } + end + context 'Add User to empty file' do + let :title do + 'user-foo' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :file => '/opt/apache-tomcat/test/conf/users.xml', + :manage_file => true, + :element_name => 'foo', + :password => 'bar', + :roles => ['role'], + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-tomcat_users-user-foo-user-foo').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/users.xml', + 'changes' => [ + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/username \'foo\'', + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/password \'bar\'', + 'set tomcat-users/user[#attribute/username=\'foo\']/#attribute/roles \'role\'', + ], + 'require' => 'File[/opt/apache-tomcat/test/conf/users.xml]', + ) + } + it do + should contain_file('/opt/apache-tomcat/test/conf/users.xml').with({ + 'ensure' => 'file', + 'owner' => 'tomcat', + 'group' => 'tomcat', + 'mode' => '0640', + 'replace' => false, + 'content' => '', + }) + end + end + context 'Remove User' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :element_name => 'foo', + :ensure => 'absent', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-tomcat_users-user-foo-tomcat-users').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/tomcat-users.xml', + 'changes' => [ + 'rm tomcat-users/user[#attribute/username=\'foo\']', + ], + 'require' => 'File[/opt/apache-tomcat/test/conf/tomcat-users.xml]', + ) + } + end + context 'Add Role with manage_file false' do + let :title do + 'role-foobar' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :element => 'role', + :element_name => 'foobar', + :manage_file => false, + :ensure => 'present', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-tomcat_users-role-foobar-role-foobar').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/tomcat-users.xml', + 'changes' => [ + 'set tomcat-users/role[#attribute/rolename=\'foobar\']/#attribute/rolename \'foobar\'', + ], + 'require' => 'File[/opt/apache-tomcat/test/conf/tomcat-users.xml]', + ) + } + it { is_expected.to_not contain_file('/opt/apache-tomcat/test/conf/users.xml') } + end + context 'Add Role no element_name' do + let :title do + 'noname' + end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :element => 'role', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-tomcat_users-role-noname-noname').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/tomcat-users.xml', + 'changes' => [ + 'set tomcat-users/role[#attribute/rolename=\'noname\']/#attribute/rolename \'noname\'', + ], + 'require' => 'File[/opt/apache-tomcat/test/conf/tomcat-users.xml]', + ) + } + end + context 'Remove Role' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :element => 'role', + :element_name => 'foobar', + :ensure => 'absent', + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-tomcat_users-role-foobar-tomcat-users').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/tomcat-users.xml', + 'changes' => [ + 'rm tomcat-users/role[#attribute/rolename=\'foobar\']', + ], + 'require' => 'File[/opt/apache-tomcat/test/conf/tomcat-users.xml]', + ) + } + end + context 'Failing Tests' do + context 'Bad ensure' do + let :params do + { + :ensure => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /does not match/) + end + end + context 'Bad manage_file' do + let :params do + { + :manage_file => 'true', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /is not a boolean/) + end + end + context 'Bad roles' do + let :params do + { + :roles => 'foo', + } + end + it do + expect { + catalogue + }. to raise_error(Puppet::Error, /is not an Array/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server/valve_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server/valve_spec.rb new file mode 100644 index 000000000..f5686e857 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server/valve_spec.rb @@ -0,0 +1,107 @@ +require 'spec_helper' + +describe 'tomcat::config::server::valve', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'org.apache.catalina.AccessLog' + end + context 'default' do + it { is_expected.to contain_augeas('/opt/apache-tomcat-Catalina--valve-org.apache.catalina.AccessLog').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/conf/server.xml', + 'changes' => ['set Server/Service[#attribute/name=\'Catalina\']/Engine/Valve[#attribute/className=\'org.apache.catalina.AccessLog\']/#attribute/className org.apache.catalina.AccessLog'], + ) + } + end + context 'set all the things' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :class_name => 'foo', + :parent_host => 'localhost', + :parent_service => 'Catalina2', + :parent_context => '/var/www/foo', + :server_config => '/opt/apache-tomcat/server.xml', + :additional_attributes => { + 'suffix' => '.txt', + 'directory' => 'logs', + 'spaces' => 'foo bar', + }, + :attributes_to_remove => ['foo', 'bar'] + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat/test-Catalina2-localhost-valve-org.apache.catalina.AccessLog').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'/var/www/foo\']/Valve[#attribute/className=\'foo\']/#attribute/className foo', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'/var/www/foo\']/Valve[#attribute/className=\'foo\']/#attribute/suffix \'.txt\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'/var/www/foo\']/Valve[#attribute/className=\'foo\']/#attribute/directory \'logs\'', + 'set Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'/var/www/foo\']/Valve[#attribute/className=\'foo\']/#attribute/spaces \'foo bar\'', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'/var/www/foo\']/Valve[#attribute/className=\'foo\']/#attribute/foo', + 'rm Server/Service[#attribute/name=\'Catalina2\']/Engine/Host[#attribute/name=\'localhost\']/Context[#attribute/docBase=\'/var/www/foo\']/Valve[#attribute/className=\'foo\']/#attribute/bar', + ] + ) + } + end + context 'remove the valve' do + let :params do + { + :valve_ensure => 'false' + } + end + it { is_expected.to contain_augeas('/opt/apache-tomcat-Catalina--valve-org.apache.catalina.AccessLog').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/conf/server.xml', + 'changes' => 'rm Server/Service[#attribute/name=\'Catalina\']/Engine/Valve[#attribute/className=\'org.apache.catalina.AccessLog\']', + ) + } + end + describe 'failing tests' do + context 'bad valve_ensure' do + let :params do + { + :valve_ensure => 'foo' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'bad additional_attributes' do + let :params do + { + :additional_attributes => 'foo' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /not a Hash/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/config/server_spec.rb b/modules/services/unix/http/tomcat/spec/defines/config/server_spec.rb new file mode 100644 index 000000000..4587e3177 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/config/server_spec.rb @@ -0,0 +1,123 @@ +require 'spec_helper' + +describe 'tomcat::config::server', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '1.0.0' + } + end + let :title do + 'default' + end + context 'add everything' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :class_name => 'foo', + :address => 'localhost', + :port => '8005', + :shutdown => 'SHUTDOWN', + } + end + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'set Server/#attribute/className foo', + 'set Server/#attribute/address localhost', + 'set Server/#attribute/port 8005', + 'set Server/#attribute/shutdown SHUTDOWN', + ] + ) + } + end + context 'custom server_config location' do + let(:params){ { + :catalina_base => '/opt/apache-tomcat/test', + :class_name => 'foo', + :address => 'localhost', + :port => '8005', + :shutdown => 'SHUTDOWN', + :server_config => '/opt/apache-tomcat/server.xml' + }} + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/server.xml', + 'changes' => [ + 'set Server/#attribute/className foo', + 'set Server/#attribute/address localhost', + 'set Server/#attribute/port 8005', + 'set Server/#attribute/shutdown SHUTDOWN', + ]) + } + end + context 'remove optional attributes' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :class_name_ensure => 'absent', + :address_ensure => 'absent', + } + end + it { is_expected.to contain_augeas('server-/opt/apache-tomcat/test').with( + 'lens' => 'Xml.lns', + 'incl' => '/opt/apache-tomcat/test/conf/server.xml', + 'changes' => [ + 'rm Server/#attribute/className', + 'rm Server/#attribute/address', + ] + ) + } + end + context 'no changes' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + } + end + it { is_expected.to_not contain_augeas('server-/opt/apache-tomcat/test') } + end + describe 'failing tests' do + context 'invalid class_name_ensure' do + let :params do + { + :class_name_ensure => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'invalid address_ensure' do + let :params do + { + :address_ensure => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'old augeas' do + let :facts do + { + :osfamily => 'Debian', + :augeasversion => '0.10.0' + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /configurations require Augeas/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/instance_spec.rb b/modules/services/unix/http/tomcat/spec/defines/instance_spec.rb new file mode 100644 index 000000000..783ae0089 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/instance_spec.rb @@ -0,0 +1,195 @@ +require 'spec_helper' + +describe 'tomcat::instance', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :default_facts do + { + :osfamily => 'Debian', + :staging_http_get => 'curl', + :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + } + end + let :title do + 'default' + end + context 'default install from source' do + let :facts do default_facts end + let :params do + { + :source_url => 'http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz', + } + end + it { is_expected.to contain_user("tomcat").with( + 'ensure' => 'present', + 'gid' => 'tomcat', + ) } + it { is_expected.to contain_group("tomcat").with( + 'ensure' => 'present' + ) } + it { is_expected.to contain_file("/opt/apache-tomcat").with( + 'ensure' => 'directory', + 'owner' => 'tomcat', + 'group' => 'tomcat', + ) + } + it { is_expected.to contain_staging__file('apache-tomcat-8.0.8.tar.gz') } + it { is_expected.to contain_staging__extract('default-apache-tomcat-8.0.8.tar.gz').with( + 'target' => '/opt/apache-tomcat', + 'user' => 'tomcat', + 'group' => 'tomcat', + 'strip' => 1, + ) + } + end + context 'install from source, different catalina_base' do + let :facts do default_facts end + let :params do + { + :catalina_base => '/opt/apache-tomcat/test-tomcat', + :source_url => 'http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz', + } + end + it { is_expected.to contain_staging__file('apache-tomcat-8.0.8.tar.gz') } + it { is_expected.to contain_staging__extract('default-apache-tomcat-8.0.8.tar.gz').with( + 'target' => '/opt/apache-tomcat/test-tomcat', + 'user' => 'tomcat', + 'group' => 'tomcat', + 'strip' => 1, + ) + } + it { is_expected.to contain_file('/opt/apache-tomcat/test-tomcat').with( + 'ensure' => 'directory', + 'owner' => 'tomcat', + 'group' => 'tomcat', + ) + } + end + context "install from package" do + let :facts do default_facts end + let :params do + { + :install_from_source => false, + :package_name => 'tomcat', + } + end + it { is_expected.to contain_package('tomcat') } + context "with additional package_options set" do + let :params do + { + :install_from_source => false, + :package_name => 'tomcat', + :package_options => [ '/S' ], + } + end + it { + is_expected.to contain_package('tomcat').with( + 'install_options' => [ '/S' ], + ) + } + end + end + context "install from package, set $catalina_base" do + let :facts do default_facts end + let :params do + { + :install_from_source => false, + :package_name => 'tomcat', + :catalina_home => '/opt/apache-tomcat', + :catalina_base => '/opt/apache-tomcat/foo', + } + end + + # This is supposed to generate a warning, but checking for that isn't + # currently supported in puppet-rspec, so just make sure it compiles + it { is_expected.to compile } + it { is_expected.to_not contain_file('/opt/apache-tomcat/foo') } + end + context "install from source, unmanaged home" do + let :pre_condition do + 'tomcat::install { "tomcat6": + catalina_home => "/opt/apache-tomcat", + manage_home => false, + source_url => "http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz", + }' + end + let :facts do default_facts end + let :params do + { + catalina_home: '/opt/apache-tomcat', + catalina_base: '/opt/apache-tomcat/foo', + } + end + it { is_expected.not_to contain_file('/opt/apache-tomcat') } + it { is_expected.to contain_file('/opt/apache-tomcat/foo') } + end + context "install from source, unmanaged base" do + let :pre_condition do + 'tomcat::install { "tomcat6": + catalina_home => "/opt/apache-tomcat", + source_url => "http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz", + }' + end + let :facts do default_facts end + let :params do + { + catalina_home: '/opt/apache-tomcat', + catalina_base: '/opt/apache-tomcat/foo', + manage_base: false, + } + end + it { is_expected.to contain_file('/opt/apache-tomcat') } + it { is_expected.not_to contain_file('/opt/apache-tomcat/foo') } + end + context "install from source, unmanaged home and base" do + let :pre_condition do + 'tomcat::install { "tomcat6": + catalina_home => "/opt/apache-tomcat", + manage_home => false, + source_url => "http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz", + }' + end + let :facts do default_facts end + let :params do + { + catalina_home: '/opt/apache-tomcat', + catalina_base: '/opt/apache-tomcat/foo', + manage_base: false, + } + end + it { is_expected.not_to contain_file('/opt/apache-tomcat') } + it { is_expected.not_to contain_file('/opt/apache-tomcat/foo') } + end + context "install from source, unmanaged catalina.properties" do + let :pre_condition do + 'tomcat::install { "tomcat6": + catalina_home => "/opt/apache-tomcat", + source_url => "http://mirror.nexcess.net/apache/tomcat/tomcat-8/v8.0.8/bin/apache-tomcat-8.0.8.tar.gz", + }' + end + let :facts do default_facts end + let :params do + { + catalina_home: '/opt/apache-tomcat', + catalina_base: '/opt/apache-tomcat/foo', + manage_properties: false, + } + end + it { is_expected.not_to contain_file('/opt/apache-tomcat/foo/conf/catalina.properties') } + end + context "legacy install from source, unmanaged home/base" do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do default_facts end + let :params do + { + catalina_base: '/opt/apache-tomcat/foo', + manage_base: false, + } + end + it { is_expected.not_to contain_file('/opt/apache-tomcat') } + it { is_expected.not_to contain_file('/opt/apache-tomcat/foo') } + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/service_spec.rb b/modules/services/unix/http/tomcat/spec/defines/service_spec.rb new file mode 100644 index 000000000..191a5ddd9 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/service_spec.rb @@ -0,0 +1,234 @@ +require 'spec_helper' + +describe 'tomcat::service', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + } + end + let :title do + 'default' + end + context 'using jsvc' do + let :params do + { + :use_jsvc => true, + } + end + it { is_expected.to contain_service('tomcat-default').with( + 'hasstatus' => false, + 'hasrestart' => false, + 'ensure' => 'running', + ) + } + end + context 'set start/stop with jsvc' do + let :params do + { + :use_jsvc => true, + :start_command => '/bin/true', + :stop_command => '/bin/true', + } + end + it { is_expected.to contain_service('tomcat-default').with( + 'hasstatus' => false, + 'hasrestart' => false, + 'ensure' => 'running', + 'start' => '/bin/true', + 'stop' => '/bin/true', + ) + } + end + context 'using init' do + let :params do + { + :use_init => true, + :service_name => 'tomcat', + :service_ensure => 'stopped', + } + end + it { is_expected.to contain_service('tomcat').with( + 'hasstatus' => true, + 'hasrestart' => true, + 'ensure' => 'stopped' + ) + } + end + context 'using init with $catalina_base' do + let :params do + { + :use_init => true, + :service_name => 'tomcat', + :catalina_base => '/opt/apache-tomcat/foo', + } + end + # This should throw a warning, but that isn't supported by puppet-rspec + # so let's just make sure it compiles + it { is_expected.to compile } + end + context "both jsvc and init with $catalina_base" do + let :params do + { + :use_jsvc => true, + :use_init => true, + :catalina_base => '/opt/apache-tomcat/foo', + } + end + it { is_expected.to contain_service('tomcat-default').with( + 'hasstatus' => true, + 'hasrestart' => true, + 'ensure' => 'running', + 'start' => 'service tomcat-default start', + 'stop' => 'service tomcat-default stop', + ) + } + end + context 'set start/stop with init' do + let :params do + { + :use_init => true, + :start_command => '/bin/true', + :stop_command => '/bin/true', + :service_name => 'tomcat', + } + end + it { is_expected.to contain_service('tomcat').with( + 'hasstatus' => true, + 'hasrestart' => true, + 'ensure' => 'running', + 'start' => '/bin/true', + 'stop' => '/bin/true', + ) + } + end + context "neither jsvc or init" do + it { is_expected.to contain_service('tomcat-default').with( + 'hasstatus' => false, + 'hasrestart' => false, + 'ensure' => 'running', + 'start' => "su -s /bin/bash -c 'CATALINA_HOME=/opt/apache-tomcat CATALINA_BASE=/opt/apache-tomcat /opt/apache-tomcat/bin/catalina.sh start' tomcat", + 'stop' => "su -s /bin/bash -c 'CATALINA_HOME=/opt/apache-tomcat CATALINA_BASE=/opt/apache-tomcat /opt/apache-tomcat/bin/catalina.sh stop' tomcat", + ) + } + end + context "default, set start/stop" do + let :params do + { + :start_command => '/bin/true', + :stop_command => '/bin/true', + } + end + it { is_expected.to contain_service('tomcat-default').with( + 'hasstatus' => false, + 'hasrestart' => false, + 'ensure' => 'running', + 'start' => '/bin/true', + 'stop' => '/bin/true', + ) + } + end + + context "service_enable, set from user" do + let :params do + { + :use_init => true, + :service_name => 'tomcat', + :service_enable => true, + } + end + it { is_expected.to contain_service('tomcat').with( + 'enable' => true, + ) + } + end + context "service_enable, set true from defaults" do + let :params do + { + :use_init => true, + :service_name => 'tomcat', + :service_ensure => 'running', + } + end + it { is_expected.to contain_service('tomcat').with( + 'hasstatus' => true, + 'hasrestart' => true, + 'ensure' => 'running', + 'enable' => true, + ) + } + end + context "service_enable, set undef from defaults" do + let :params do + { + :use_init => false, + :service_ensure => 'running', + } + end + it { is_expected.to contain_service('tomcat-default').with( + 'hasstatus' => false, + 'hasrestart' => false, + 'ensure' => 'running', + 'enable' => nil, + ) + } + end + context "service_enable, error thrown if use_init is false" do + let :params do + { + :use_init => false, + :service_enable => true, + } + end + # This should throw a warning, but that isn't supported by puppet-rspec + # so let's just make sure it compiles + it { is_expected.to compile } + end + describe 'failing tests' do + context "bad use_jsvc" do + let :params do + { + :use_jsvc => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /not a boolean/) + end + end + context "bad use_init" do + let :params do + { + :use_init => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /not a boolean/) + end + end + context "java_home without use_jsvc warning" do + let :params do + { + :java_home => 'foo', + } + end + + it { is_expected.to compile } + end + context "java_home with start_command" do + let :params do + { + :java_home => 'foo', + :start_command => '/bin/true', + } + end + + it { is_expected.to compile } + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/setenv/entry_spec.rb b/modules/services/unix/http/tomcat/spec/defines/setenv/entry_spec.rb new file mode 100644 index 000000000..b44ab8d0c --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/setenv/entry_spec.rb @@ -0,0 +1,106 @@ +require 'spec_helper' + +describe 'tomcat::setenv::entry', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :concat_basedir => '/tmp', + :id => 'root', + :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + } + end + let :title do + 'FOO' + end + context 'no quotes' do + let :params do + { + 'value' => '/bin/true', + } + end + + it { is_expected.to contain_concat('/opt/apache-tomcat/bin/setenv.sh') } + it { is_expected.to contain_concat__fragment('setenv-FOO').with_content(/export FOO=\/bin\/true/).with({ + 'target' => '/opt/apache-tomcat/bin/setenv.sh', + }) + } + end + context 'quotes' do + let :params do + { + 'param' => 'BAR', + 'value' => '/bin/true', + 'quote_char' => '"', + 'base_path' => '/opt/apache-tomcat/foo/bin' + } + end + + it { is_expected.to contain_concat('/opt/apache-tomcat/foo/bin/setenv.sh') } + it { is_expected.to contain_concat__fragment('setenv-FOO').with_content(/export BAR="\/bin\/true"/).with({ + 'target' => '/opt/apache-tomcat/foo/bin/setenv.sh', + }) + } + end + context 'ensure absent' do + let :params do + { + 'value' => '/bin/true', + } + end + + it { is_expected.to contain_concat('/opt/apache-tomcat/bin/setenv.sh') } + it { is_expected.to contain_concat__fragment('setenv-FOO').with({ + 'target' => '/opt/apache-tomcat/bin/setenv.sh', + }) + } + end + context 'specific config_file' do + let :params do + { + 'value' => '/bin/true', + 'config_file' => '/etc/sysconfig/tomcat', + } + end + + it { is_expected.to contain_concat('/etc/sysconfig/tomcat') } + it { is_expected.to contain_concat__fragment('setenv-FOO').with({ + 'target' => '/etc/sysconfig/tomcat', + }) + } + end + context 'array' do + let :params do + { + 'param' => 'BAR', + 'value' => ['/bin/true', '/bin/false'], + 'quote_char' => '"', + 'base_path' => '/opt/apache-tomcat/foo/bin' + } + end + + it { is_expected.to contain_concat('/opt/apache-tomcat/foo/bin/setenv.sh') } + it { is_expected.to contain_concat__fragment('setenv-FOO').with_content(/export BAR="\/bin\/true \/bin\/false"/).with({ + 'target' => '/opt/apache-tomcat/foo/bin/setenv.sh', + }) + } + end + context 'order' do + let :params do + { + 'param' => 'BAR', + 'value' => '/bin/true', + 'order' => '10', + } + end + + it { is_expected.to contain_concat('/opt/apache-tomcat/bin/setenv.sh') } + it { is_expected.to contain_concat__fragment('setenv-FOO').with_content(/export BAR=\/bin\/true/).with({ + 'target' => '/opt/apache-tomcat/bin/setenv.sh', + 'order' => '10', + }) + } + end +end diff --git a/modules/services/unix/http/tomcat/spec/defines/war_spec.rb b/modules/services/unix/http/tomcat/spec/defines/war_spec.rb new file mode 100644 index 000000000..dc3659aae --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/defines/war_spec.rb @@ -0,0 +1,166 @@ +require 'spec_helper' + +describe 'tomcat::war', :type => :define do + let :pre_condition do + 'class { "tomcat": }' + end + let :facts do + { + :osfamily => 'Debian', + :staging_http_get => 'curl', + } + end + let :title do + 'sample.war' + end + context 'basic deployment' do + let :params do + { + :war_source => '/tmp/sample.war', + } + end + it { is_expected.to contain_staging__file('sample.war').with( + 'source' => '/tmp/sample.war', + 'target' => '/opt/apache-tomcat/webapps/sample.war', + ) + } + end + context 'basic undeployment' do + let :params do + { + :war_ensure => 'absent' + } + end + it { is_expected.to contain_file('/opt/apache-tomcat/webapps/sample.war').with( + 'ensure' => 'absent', + 'force' => 'false', + ) + } + it { is_expected.to contain_file('/opt/apache-tomcat/webapps/sample').with( + 'ensure' => 'absent', + 'force' => 'true', + ) + } + end + context 'set everything' do + let :params do + { + :catalina_base => '/opt/apache-tomcat/test', + :app_base => 'webapps2', + :war_ensure => 'true', + :war_name => 'sample2.war', + :war_source => '/tmp/sample.war', + } + end + it { is_expected.to contain_staging__file('sample.war').with( + 'source' => '/tmp/sample.war', + 'target' => '/opt/apache-tomcat/test/webapps2/sample2.war', + ) + } + end + context 'set deployment_path' do + let :params do + { + :deployment_path => '/opt/apache-tomcat/webapps3', + :war_source => '/tmp/sample.war', + } + end + it { is_expected.to contain_staging__file('sample.war').with( + 'source' => '/tmp/sample.war', + 'target' => '/opt/apache-tomcat/webapps3/sample.war', + ) + } + end + context 'war_purge is false' do + let :params do + { + :war_ensure => 'absent', + :war_purge => false, + } + end + it { is_expected.to contain_file('/opt/apache-tomcat/webapps/sample.war').with( + 'ensure' => 'absent', + 'force' => 'false', + ) + } + it { is_expected.to_not contain_file('/opt/apache-tomcat/webapps/sample').with( + 'ensure' => 'absent', + 'force' => 'true', + ) + } + end + describe 'failing tests' do + context 'bad war name' do + let :params do + { + :war_name => 'foo', + :war_source => '/tmp/sample.war', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'bad ensure' do + let :params do + { + :war_ensure => 'foo', + :war_source => '/tmp/sample.war', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /does not match/) + end + end + context 'bad purge' do + let :params do + { + :war_ensure => 'absent', + :war_purge => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /is not a boolean/) + end + end + context 'invalid source' do + let :params do + { + :war_source => 'foo', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /not recognize source/) + end + end + context 'no source' do + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /\$war_source must be specified/) + end + end + context 'both app_base and deployment_path' do + let :params do + { + :war_source => '/tmp/sample.war', + :app_base => 'webapps2', + :deployment_path => '/opt/apache-tomcat/webapps3', + } + end + it do + expect { + catalogue + }.to raise_error(Puppet::Error, /Only one of \$app_base and \$deployment_path can be specified/) + end + end + end +end diff --git a/modules/services/unix/http/tomcat/spec/spec_helper.rb b/modules/services/unix/http/tomcat/spec/spec_helper.rb new file mode 100644 index 000000000..22d5d689f --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/spec_helper.rb @@ -0,0 +1,8 @@ +#This file is generated by ModuleSync, do not edit. +require 'puppetlabs_spec_helper/module_spec_helper' + +# put local configuration and setup into spec_helper_local +begin + require 'spec_helper_local' +rescue LoadError +end diff --git a/modules/services/unix/http/tomcat/spec/spec_helper_acceptance.rb b/modules/services/unix/http/tomcat/spec/spec_helper_acceptance.rb new file mode 100644 index 000000000..794974e26 --- /dev/null +++ b/modules/services/unix/http/tomcat/spec/spec_helper_acceptance.rb @@ -0,0 +1,69 @@ +require 'beaker-rspec/spec_helper' +require 'beaker-rspec/helpers/serverspec' +require 'beaker/puppet_install_helper' + +run_puppet_install_helper + +if ENV['BUILD_ID'] # We're in our CI system and use internal resources + ARTIFACT_HOST = ENV['TOMCAT_ARTIFACT_HOST'] || 'http://int-resources.corp.puppetlabs.net/QA_resources/tomcat' + + TOMCAT6_RECENT_VERSION = ENV['TOMCAT6_RECENT_VERSION'] || 'latest6' + TOMCAT6_RECENT_SOURCE = "#{ARTIFACT_HOST}/apache-tomcat-#{TOMCAT6_RECENT_VERSION}.tar.gz" + TOMCAT7_RECENT_VERSION = ENV['TOMCAT7_RECENT_VERSION'] || 'latest7' + TOMCAT7_RECENT_SOURCE = "#{ARTIFACT_HOST}/apache-tomcat-#{TOMCAT7_RECENT_VERSION}.tar.gz" + TOMCAT8_RECENT_VERSION = ENV['TOMCAT8_RECENT_VERSION'] || 'latest8' + TOMCAT8_RECENT_SOURCE = "#{ARTIFACT_HOST}/apache-tomcat-#{TOMCAT8_RECENT_VERSION}.tar.gz" + TOMCAT_LEGACY_VERSION = ENV['TOMCAT_RECENT_VERSION'] || '6.0.39' + TOMCAT_LEGACY_SOURCE = "#{ARTIFACT_HOST}/apache-tomcat-#{TOMCAT_LEGACY_VERSION}.tar.gz" + SAMPLE_WAR = "#{ARTIFACT_HOST}/sample.war" + +else # We're outside the CI system and use default locations + require 'net/http' + latest_download_page = Net::HTTP.get(URI('http://tomcat.apache.org/download-60.cgi?Preferred=http%3A%2F%2Fmirror.symnds.com%2Fsoftware%2FApache%2F')) + latest6 = (match = latest_download_page.match(/apache-tomcat-(.{4,7}).tar.gz/) and match[1]) + latest_download_page = Net::HTTP.get(URI('http://tomcat.apache.org/download-70.cgi?Preferred=http%3A%2F%2Fmirror.symnds.com%2Fsoftware%2FApache%2F')) + latest7 = (match = latest_download_page.match(/apache-tomcat-(.{4,7}).tar.gz/) and match[1]) + latest_download_page = Net::HTTP.get(URI('http://tomcat.apache.org/download-80.cgi?Preferred=http%3A%2F%2Fmirror.symnds.com%2Fsoftware%2FApache%2F')) + latest8 = (match = latest_download_page.match(/apache-tomcat-(.{4,7}).tar.gz/) and match[1]) + + TOMCAT6_RECENT_VERSION = ENV['TOMCAT6_RECENT_VERSION'] || latest6 + TOMCAT6_RECENT_SOURCE = "http://archive.apache.org/dist/tomcat/tomcat-6/v#{TOMCAT6_RECENT_VERSION}/bin/apache-tomcat-#{TOMCAT6_RECENT_VERSION}.tar.gz" + TOMCAT7_RECENT_VERSION = ENV['TOMCAT7_RECENT_VERSION'] || latest7 + TOMCAT7_RECENT_SOURCE = "http://archive.apache.org/dist/tomcat/tomcat-7/v#{TOMCAT7_RECENT_VERSION}/bin/apache-tomcat-#{TOMCAT7_RECENT_VERSION}.tar.gz" + TOMCAT8_RECENT_VERSION = ENV['TOMCAT8_RECENT_VERSION'] || latest8 + TOMCAT8_RECENT_SOURCE = "http://archive.apache.org/dist/tomcat/tomcat-8/v#{TOMCAT8_RECENT_VERSION}/bin/apache-tomcat-#{TOMCAT8_RECENT_VERSION}.tar.gz" + TOMCAT_LEGACY_VERSION = ENV['TOMCAT_LEGACY_VERSION'] || '6.0.39' + TOMCAT_LEGACY_SOURCE = "http://archive.apache.org/dist/tomcat/tomcat-6/v#{TOMCAT_LEGACY_VERSION}/bin/apache-tomcat-#{TOMCAT_LEGACY_VERSION}.tar.gz" + SAMPLE_WAR = 'https://tomcat.apache.org/tomcat-8.0-doc/appdev/sample/sample.war' +end + + +UNSUPPORTED_PLATFORMS = ['windows','Solaris','Darwin'] + + +RSpec.configure do |c| + c.filter_run :focus => true + c.run_all_when_everything_filtered = true + + # Project root + proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) + + # Readable test descriptions + c.formatter = :documentation + + # Configure all nodes in nodeset + c.before :suite do + # Install module and dependencies + puppet_module_install(:source => proj_root, :module_name => 'tomcat') + hosts.each do |host| + on host, puppet('module','install','puppetlabs-stdlib','--force','--version','4.6.0'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-concat'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-java'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppetlabs-gcc'), { :acceptable_exit_codes => [0,1] } + on host, puppet('module','install','puppet-staging'), { :acceptable_exit_codes => [0,1] } + if fact('osfamily') == 'RedHat' + on host, 'yum install -y nss' + end + end + end +end diff --git a/modules/services/unix/http/tomcat/templates/jsvc-init.erb b/modules/services/unix/http/tomcat/templates/jsvc-init.erb new file mode 100755 index 000000000..aa8bff7f8 --- /dev/null +++ b/modules/services/unix/http/tomcat/templates/jsvc-init.erb @@ -0,0 +1,263 @@ +#!/bin/sh + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file 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. + +# +# tomcat This shell script takes care of starting and stopping Tomcat +# +# chkconfig: - 80 20 +# + +### BEGIN INIT INFO +# Provides: tomcat +# Required-Start: $network $syslog +# Required-Stop: $network $syslog +# Default-Start: +# Default-Stop: +# Description: Release implementation for Servlet 3.0 and JSP 2.2 +# Short-Description: start and stop tomcat +### END INIT INFO + +# Make sure only root is running this script +if [ "$(id -u)" != "0" ]; then + echo "This script must be run as root" 1>&2 + exit 1 +fi + +ARG0="$0" +PROGRAM="`basename $ARG0`" + +cygwin=false; +darwin=false; +case "`uname`" in + CYGWIN*) + cygwin=true + ;; + Darwin*) + darwin=true + ;; +esac + +CATALINA_BASE=<%= @_catalina_base %> +CATALINA_HOME=<%= @_catalina_home %> +JAVA_HOME=<%= @java_home %> +TOMCAT_USER=<%= @_user %> + +# Use the maximum available, or set MAX_FD != -1 to use that +test ".$MAX_FD" = . && MAX_FD="maximum" +# Setup parameters for running the jsvc +# +test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat + +JAVA_BIN="$JAVA_HOME/bin/java" + +test ".$CATALINA_MAIN" = . && CATALINA_MAIN=org.apache.catalina.startup.Bootstrap +if [ -z "$JSVC" ]; then + JSVC="$CATALINA_BASE/bin/jsvc" + if [ ! -x "$JSVC" ]; then + JSVC="$CATALINA_HOME/bin/jsvc" + fi +fi + +## would be good to test the jsvc is from a valid common-daemon and for the correct java but how to do that + +# Ensure that any user defined CLASSPATH variables are not used on startup, +# but allow them to be specified in setenv.sh, in rare case when it is needed. +CLASSPATH= +JAVA_OPTS= +if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then + . "$CATALINA_BASE/bin/setenv.sh" +elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then + . "$CATALINA_HOME/bin/setenv.sh" +fi + +## user set values are set now +echo CATALINA_BASE $CATALINA_BASE +echo CATALINA_HOME $CATALINA_HOME +echo CATALINA_LOCAL $CATALINA_LOCAL +echo -n CATALINA_OPTS +echo " $CATALINA_OPTS" | sed -e 's/ -/\n -/g' | sort +echo -n JAVA_OPTS +echo " $JAVA_OPTS" | sed -e 's/ -/\n -/g' | sort +echo TOMCAT_USER $TOMCAT_USER + +# Add on extra jar files to CLASSPATH +test ".$CLASSPATH" != . && CLASSPATH="${CLASSPATH}:" +CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar" + +test ".$CATALINA_OUT" = . && CATALINA_OUT="$CATALINA_BASE/logs/catalina-daemon.out" +test ".$CATALINA_TMP" = . && CATALINA_TMP="$CATALINA_BASE/temp" + +# Add tomcat-juli.jar to classpath +# tomcat-juli.jar can be over-ridden per instance +if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then + CLASSPATH="$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar" +else + CLASSPATH="$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar" +fi +# Set juli LogManager config file if it is present and an override has not been issued +if [ -z "$LOGGING_CONFIG" ]; then + if [ -r "$CATALINA_BASE/conf/logging.properties" ]; then + LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties" + else + # Bugzilla 45585 + LOGGING_CONFIG="-Dnop" + fi +fi + +test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" +JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER" + +# Set -pidfile +test ".$CATALINA_PID" = . && CATALINA_PID="$CATALINA_BASE/logs/catalina-daemon.pid" + +# Increase the maximum file descriptors if we can +if [ "$cygwin" = "false" ]; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ "$?" -eq 0 ]; then + # Darwin does not allow RLIMIT_INFINITY on file soft limit + if [ "$darwin" = "true" -a "$MAX_FD_LIMIT" = "unlimited" ]; then + MAX_FD_LIMIT=`/usr/sbin/sysctl -n kern.maxfilesperproc` + fi + test ".$MAX_FD" = ".maximum" && MAX_FD="$MAX_FD_LIMIT" + ulimit -n $MAX_FD + if [ "$?" -ne 0 ]; then + echo "$PROGRAM: Could not set maximum file descriptor limit: $MAX_FD" + fi + else + echo "$PROGRAM: Could not query system maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +JSVC_OPTS="$JSVC_OPTS -umask 0027" + +do_start() +{ + "$JSVC" $JSVC_OPTS \ + -java-home "$JAVA_HOME" \ + -user "$TOMCAT_USER" \ + -pidfile "$CATALINA_PID" \ + -wait 10 \ + -outfile "SYSLOG" \ + -errfile "SYSLOG" \ + -classpath "$CLASSPATH" \ + "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.io.tmpdir="$CATALINA_TMP" \ + $CATALINA_MAIN + #exit $? +} + +do_status() +{ + if [ -f $CATALINA_PID ];then + ps -p `cat $CATALINA_PID` >/dev/null 2>&1 + if [[ "$?" == "0" ]];then + echo "tomcat alive (pid `cat $CATALINA_PID`)..." + exit 0 + else + echo "pidfile exists but tomcat dead" + exit 1 + fi + fi + echo "tomcat is stopped" + exit 1 +} + +do_stop() +{ + "$JSVC" $JSVC_OPTS \ + -stop \ + -pidfile "$CATALINA_PID" \ + -classpath "$CLASSPATH" \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.io.tmpdir="$CATALINA_TMP" \ + $CATALINA_MAIN + #exit $? +} + +do_version() +{ + "$JSVC" \ + -java-home "$JAVA_HOME" \ + -pidfile "$CATALINA_PID" \ + -classpath "$CLASSPATH" \ + -outfile "SYSLOG" \ + -errfile "SYSLOG" \ + -version \ + -check \ + $CATALINA_MAIN + if [ "$?" = 0 ]; then + "$JAVA_BIN" \ + -classpath "$CATALINA_HOME/lib/catalina.jar" \ + org.apache.catalina.util.ServerInfo + fi + exit $? +} + +# ----- Execute The Requested Command ----------------------------------------- +case "$1" in + run ) + shift + "$JSVC" $* \ + $JSVC_OPTS \ + -java-home "$JAVA_HOME" \ + -user "$TOMCAT_USER" \ + -pidfile "$CATALINA_PID" \ + -wait 10 \ + -nodetach \ + -outfile "&1" \ + -errfile "&2" \ + -classpath "$CLASSPATH" \ + "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \ + -Dcatalina.base="$CATALINA_BASE" \ + -Dcatalina.home="$CATALINA_HOME" \ + -Djava.io.tmpdir="$CATALINA_TMP" \ + $CATALINA_MAIN + exit $? + ;; + start ) + do_start + ;; + stop ) + do_stop + ;; + status ) + do_status + ;; + restart ) + do_stop + do_start + ;; + version ) + do_version + ;; + * ) + echo "Unknown command: '$1'" + echo "Usage: $PROGRAM ( commands ... )" + echo "commands:" + echo " restart Restart Catalina" + echo " run Start Catalina without detaching from console" + echo " start Start Catalina" + echo " status Report if JSVC is running" + echo " stop Stop Catalina" + echo " version What version of commons daemon and Tomcat" + echo " are you running?" + exit 1 + ;; +esac diff --git a/modules/services/unix/http/tomcat/tomcat.pp b/modules/services/unix/http/tomcat/tomcat.pp new file mode 100644 index 000000000..5c0369f32 --- /dev/null +++ b/modules/services/unix/http/tomcat/tomcat.pp @@ -0,0 +1,6 @@ +tomcat::install { '/opt/tomcat': + source_url => 'https://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz', +} +tomcat::instance { 'default': + catalina_home => '/opt/tomcat', +} \ No newline at end of file diff --git a/modules/utilities/unix/languages/java/secgen_metadata.xml b/modules/utilities/unix/languages/java/secgen_metadata.xml index 2f3a60218..87bc63de1 100644 --- a/modules/utilities/unix/languages/java/secgen_metadata.xml +++ b/modules/utilities/unix/languages/java/secgen_metadata.xml @@ -10,6 +10,7 @@ An installation of Java language + java linux From 60767030b9d9589c8ea7f1d280c6dddeca0e81c7 Mon Sep 17 00:00:00 2001 From: Cliffe Date: Tue, 23 Jan 2018 19:09:59 +0000 Subject: [PATCH 06/24] Date bump --- secgen.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/secgen.rb b/secgen.rb index b4f5c2918..e4f49ac25 100644 --- a/secgen.rb +++ b/secgen.rb @@ -254,7 +254,7 @@ end Print.std '~'*47 Print.std 'SecGen - Creates virtualised security scenarios' -Print.std ' Licensed GPLv3 2014-17' +Print.std ' Licensed GPLv3 2014-18' Print.std '~'*47 # Add read-options from config file (needs handling before options parsed by GetoptLong) @@ -432,4 +432,4 @@ case ARGV[0] Print.err "Command not valid: #{ARGV[0]}" usage exit -end \ No newline at end of file +end From a0325f6c3d5bedb20b10408d61087308336e1467 Mon Sep 17 00:00:00 2001 From: Cliffe Date: Thu, 25 Jan 2018 15:21:51 +0000 Subject: [PATCH 07/24] Desktop root requires "physical" access (not shell) --- .../unix/desktop/xfce_lightdm_root_login/secgen_metadata.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/vulnerabilities/unix/desktop/xfce_lightdm_root_login/secgen_metadata.xml b/modules/vulnerabilities/unix/desktop/xfce_lightdm_root_login/secgen_metadata.xml index 38c7d611d..407c66c59 100644 --- a/modules/vulnerabilities/unix/desktop/xfce_lightdm_root_login/secgen_metadata.xml +++ b/modules/vulnerabilities/unix/desktop/xfce_lightdm_root_login/secgen_metadata.xml @@ -10,7 +10,7 @@ desktop_environment root_rwx - local + physical linux From 553ac3ac8c9630b8179fc19fbc04de109eff457b Mon Sep 17 00:00:00 2001 From: Cliffe Date: Thu, 25 Jan 2018 15:24:15 +0000 Subject: [PATCH 08/24] Rename VM --- scenarios/default_scenario.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scenarios/default_scenario.xml b/scenarios/default_scenario.xml index a75179da7..c502a85a5 100644 --- a/scenarios/default_scenario.xml +++ b/scenarios/default_scenario.xml @@ -6,7 +6,7 @@ - storage_server + escalation From c17a26406bf8d969b9ff73cfaf0423d156fb5269 Mon Sep 17 00:00:00 2001 From: Cliffe Date: Thu, 25 Jan 2018 15:30:28 +0000 Subject: [PATCH 09/24] Physical access in schema --- lib/schemas/vulnerability_metadata_schema.xsd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/schemas/vulnerability_metadata_schema.xsd b/lib/schemas/vulnerability_metadata_schema.xsd index b02e96e77..5c113fb1f 100644 --- a/lib/schemas/vulnerability_metadata_schema.xsd +++ b/lib/schemas/vulnerability_metadata_schema.xsd @@ -23,6 +23,7 @@ + @@ -276,4 +277,4 @@ - \ No newline at end of file + From 23af572707d0f4d29fe1d39cb2bac40c64ee7b11 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Mon, 5 Feb 2018 15:18:38 +0000 Subject: [PATCH 10/24] random line selector and example organisations --- .../structured_content/json_organisations | 4 ++ .../structured_content/organisation.json | 45 ++++++++++++++++ .../random_line_selector/manifests/.no_puppet | 0 .../random_line_selector.pp | 0 .../secgen_local/local.rb | 53 +++++++++++++++++++ .../random_line_selector/secgen_metadata.xml | 21 ++++++++ 6 files changed, 123 insertions(+) create mode 100644 lib/resources/structured_content/json_organisations create mode 100644 lib/resources/structured_content/organisation.json create mode 100644 modules/encoders/selector/random_line_selector/manifests/.no_puppet create mode 100644 modules/encoders/selector/random_line_selector/random_line_selector.pp create mode 100644 modules/encoders/selector/random_line_selector/secgen_local/local.rb create mode 100644 modules/encoders/selector/random_line_selector/secgen_metadata.xml diff --git a/lib/resources/structured_content/json_organisations b/lib/resources/structured_content/json_organisations new file mode 100644 index 000000000..1d7f0f9a3 --- /dev/null +++ b/lib/resources/structured_content/json_organisations @@ -0,0 +1,4 @@ +{"business_name":"TESTERSON and Sons","business_motto":"Compatible tertiary data-warehouse","business_address":"96011 Eliseo Village, West Savanah, West Sussex, WA3 5LA","domain":"mr-baylee-morissette.co.uk","office_telephone":"029 0277 1916","office_email":"keyshawn@bergstrombernier.net","industry":"Lumber, Wood Production","manager":{"name":"Brooklyn Gerhold","address":"707 Verdie Island Suite 122, Lake Clarissa, Idaho, 46841-5019","phone_number":"07689 647142","email_address":"i-balistreri-delbert@romaguera-llc.net","username":"shiny_process","password":"fuckyou"},"employees":[{"name":"Fred Brown","address":"7247 Lebsack Crossing, South Harmonfort, Cheshire, Y5 5NW","phone_number":"07622 411758","email_address":"amir_kilback@schoen.name","username":"glossymorning","password":"ypxQZsXrFSDU6WH2R9mQ"},{"name":"Ashley Bradtke Jr.","address":"754 Assunta Flats, Halliefurt, Grampian, WE4 0LZ","phone_number":"931.602.7779","email_address":"i-scarlett-bruen@littel-konopelski.co.uk","username":"whispering_disgust","password":"orval94"},{"name":"Ivy Hickle","address":"7407 Ullrich Crossroad, South Claud, Strathclyde, JB1H 7ZB","phone_number":"056 4723 2042","email_address":"nader-kelli@ullrich-stroman-and-lind.com","username":"versed_lace","password":"password"}],"product_name":"Sub-Ex","intro_paragraph":"+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan."} +{"business_name":"Feil LLC","business_motto":"Phased didactic productivity","business_address":"1642 Nienow Spur, Cruickshankstad, Wisconsin, 78112","domain":"feil-llc.com","office_telephone":"270-406-7177","office_email":"office@feil-llc.com","industry":"Food - Major Diversified","manager":{"name":"Reynold Davis","address":"716 Carlo Meadow, South Roma, Wiltshire, WB9 2AH","phone_number":"07450 985656","email_address":"reynold-davis@feil-llc.com","username":"reynold-davis","password":"play"},"employees":[{"name":"Craig Fields","address":"69028 Green Ferry Apt. 909, South Maeveport, Mississippi, 45804","phone_number":"07723 278408","email_address":"craig-fields@feil-llc.com","username":"craig-fields","password":"nona"},{"name":"Patrick Palmer","address":"7593 Brakus Prairie, East Marcellus, Wiltshire, WE2P 3JN","phone_number":"(469) 202-6538","email_address":"patrick-palmer@feil-llc.com","username":"patrick-palmer","password":"klaster"},{"name":"Bobby Snyder","address":"824 Ceasar Landing, East Mollyland, County Armagh, ZQ6E 1NX","phone_number":"029 6219 8717","email_address":"bobby-snyder@feil-llc.com","username":"bobby-snyder","password":"6gG2yF6szwUWWWkJgYXX"}],"product_name":"Opela","intro_paragraph":"+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan."} +{"business_name":"Feil LLC","business_motto":"Phased didactic productivity","business_address":"1642 Nienow Spur, Cruickshankstad, Wisconsin, 78112","domain":"feil-llc.com","office_telephone":"270-406-7177","office_email":"office@feil-llc.com","industry":"Food - Major Diversified","manager":{"name":"Reynold Davis","address":"716 Carlo Meadow, South Roma, Wiltshire, WB9 2AH","phone_number":"07450 985656","email_address":"reynold-davis@feil-llc.com","username":"reynold-davis","password":"play"},"employees":[{"name":"Craig Fields","address":"69028 Green Ferry Apt. 909, South Maeveport, Mississippi, 45804","phone_number":"07723 278408","email_address":"craig-fields@feil-llc.com","username":"craig-fields","password":"nona"},{"name":"Patrick Palmer","address":"7593 Brakus Prairie, East Marcellus, Wiltshire, WE2P 3JN","phone_number":"(469) 202-6538","email_address":"patrick-palmer@feil-llc.com","username":"patrick-palmer","password":"klaster"},{"name":"Bobby Snyder","address":"824 Ceasar Landing, East Mollyland, County Armagh, ZQ6E 1NX","phone_number":"029 6219 8717","email_address":"bobby-snyder@feil-llc.com","username":"bobby-snyder","password":"6gG2yF6szwUWWWkJgYXX"}],"product_name":"Opela","intro_paragraph":"+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan."} +{"business_name":"Feil LLC","business_motto":"Phased didactic productivity","business_address":"1642 Nienow Spur, Cruickshankstad, Wisconsin, 78112","domain":"feil-llc.com","office_telephone":"270-406-7177","office_email":"office@feil-llc.com","industry":"Food - Major Diversified","manager":{"name":"Reynold Davis","address":"716 Carlo Meadow, South Roma, Wiltshire, WB9 2AH","phone_number":"07450 985656","email_address":"reynold-davis@feil-llc.com","username":"reynold-davis","password":"play"},"employees":[{"name":"Craig Fields","address":"69028 Green Ferry Apt. 909, South Maeveport, Mississippi, 45804","phone_number":"07723 278408","email_address":"craig-fields@feil-llc.com","username":"craig-fields","password":"nona"},{"name":"Patrick Palmer","address":"7593 Brakus Prairie, East Marcellus, Wiltshire, WE2P 3JN","phone_number":"(469) 202-6538","email_address":"patrick-palmer@feil-llc.com","username":"patrick-palmer","password":"klaster"},{"name":"Bobby Snyder","address":"824 Ceasar Landing, East Mollyland, County Armagh, ZQ6E 1NX","phone_number":"029 6219 8717","email_address":"bobby-snyder@feil-llc.com","username":"bobby-snyder","password":"6gG2yF6szwUWWWkJgYXX"}],"product_name":"Opela","intro_paragraph":"+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan."} diff --git a/lib/resources/structured_content/organisation.json b/lib/resources/structured_content/organisation.json new file mode 100644 index 000000000..be305544d --- /dev/null +++ b/lib/resources/structured_content/organisation.json @@ -0,0 +1,45 @@ +{ + "business_name": "TESTERSON and Sons", + "business_motto": "Compatible tertiary data-warehouse", + "business_address": "96011 Eliseo Village, West Savanah, West Sussex, WA3 5LA", + "domain": "mr-baylee-morissette.co.uk", + "office_telephone": "029 0277 1916", + "office_email": "keyshawn@bergstrombernier.net", + "industry": "Lumber, Wood Production", + "manager": { + "name": "Brooklyn Gerhold", + "address": "707 Verdie Island Suite 122, Lake Clarissa, Idaho, 46841-5019", + "phone_number": "07689 647142", + "email_address": "i-balistreri-delbert@romaguera-llc.net", + "username": "shiny_process", + "password": "fuckyou" + }, + "employees": [ + { + "name": "Fred Brown", + "address": "7247 Lebsack Crossing, South Harmonfort, Cheshire, Y5 5NW", + "phone_number": "07622 411758", + "email_address": "amir_kilback@schoen.name", + "username": "glossymorning", + "password": "ypxQZsXrFSDU6WH2R9mQ" + }, + { + "name": "Ashley Bradtke Jr.", + "address": "754 Assunta Flats, Halliefurt, Grampian, WE4 0LZ", + "phone_number": "931.602.7779", + "email_address": "i-scarlett-bruen@littel-konopelski.co.uk", + "username": "whispering_disgust", + "password": "orval94" + }, + { + "name": "Ivy Hickle", + "address": "7407 Ullrich Crossroad, South Claud, Strathclyde, JB1H 7ZB", + "phone_number": "056 4723 2042", + "email_address": "nader-kelli@ullrich-stroman-and-lind.com", + "username": "versed_lace", + "password": "password" + } + ], + "product_name": "Sub-Ex", + "intro_paragraph": "+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan." +} diff --git a/modules/encoders/selector/random_line_selector/manifests/.no_puppet b/modules/encoders/selector/random_line_selector/manifests/.no_puppet new file mode 100644 index 000000000..e69de29bb diff --git a/modules/encoders/selector/random_line_selector/random_line_selector.pp b/modules/encoders/selector/random_line_selector/random_line_selector.pp new file mode 100644 index 000000000..e69de29bb diff --git a/modules/encoders/selector/random_line_selector/secgen_local/local.rb b/modules/encoders/selector/random_line_selector/secgen_local/local.rb new file mode 100644 index 000000000..c601e41e1 --- /dev/null +++ b/modules/encoders/selector/random_line_selector/secgen_local/local.rb @@ -0,0 +1,53 @@ +#!/usr/bin/ruby +require_relative '../../../../../lib/objects/local_string_encoder.rb' +class RandomSelectorEncoder < StringEncoder + attr_accessor :position + attr_accessor :file_path + + def initialize + super + self.module_name = 'Random Line Selector' + self.file_path = '' + self.position = '' + end + + def encode_all + file_lines = File.readlines("#{ROOT_DIR}/#{file_path}") + + selected_string = if !position.nil? && (position != '') + file_lines[position.to_i - 1] + else + file_lines.sample + end + outputs << selected_string + end + + def process_options(opt, arg) + super + case opt + # Removes any non-alphabet characters + when '--position' + position << arg + when '--file_path' + file_path << arg + else + # do nothing + end + end + + def get_options_array + super + [['--position', GetoptLong::OPTIONAL_ARGUMENT], + ['--file_path', GetoptLong::OPTIONAL_ARGUMENT]] + end + + def encoding_print_string + string = "file_path: #{file_path}" + unless position.to_s.empty? + string += print_string_padding + "position: #{position}" + end + string + end + +end + +RandomSelectorEncoder.new.run diff --git a/modules/encoders/selector/random_line_selector/secgen_metadata.xml b/modules/encoders/selector/random_line_selector/secgen_metadata.xml new file mode 100644 index 000000000..3c85f1e9b --- /dev/null +++ b/modules/encoders/selector/random_line_selector/secgen_metadata.xml @@ -0,0 +1,21 @@ + + + + Random Line Selector + Thomas Shaw + MIT + Randomly selects one of the lines from a file and discards the rest. + Optionally pick position in a list (indexed from 1 - in the list [a,b,c] a is in pos 1, b is in pos 2, etc.) + + + line_selector + linux + windows + + file_path + position + + selected_string + From 95bcdfe865f574044eba0ff196c5c99d4fdca446 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Mon, 5 Feb 2018 15:19:15 +0000 Subject: [PATCH 11/24] organisations: added intro_paragraph parameter --- .../random_organisation/secgen_local/local.rb | 11 +++++++++-- .../random_organisation/secgen_metadata.xml | 4 ++++ .../realistic_organisation/secgen_local/local.rb | 11 +++++++++-- .../realistic_organisation/secgen_metadata.xml | 5 +++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/modules/generators/structured_content/random_organisation/secgen_local/local.rb b/modules/generators/structured_content/random_organisation/secgen_local/local.rb index d6673b12c..229b98bce 100644 --- a/modules/generators/structured_content/random_organisation/secgen_local/local.rb +++ b/modules/generators/structured_content/random_organisation/secgen_local/local.rb @@ -12,6 +12,7 @@ class RandomOrganisationGenerator < StringEncoder attr_accessor :manager attr_accessor :employees attr_accessor :product_name + attr_accessor :intro_paragraph def initialize super @@ -26,6 +27,7 @@ class RandomOrganisationGenerator < StringEncoder self.manager = {} self.employees = [] self.product_name = '' + self.intro_paragraph = '' end def encode_all @@ -40,6 +42,7 @@ class RandomOrganisationGenerator < StringEncoder organisation_hash['manager'] = self.manager organisation_hash['employees'] = self.employees organisation_hash['product_name'] = self.product_name + organisation_hash['intro_paragraph'] = self.intro_paragraph self.outputs << organisation_hash.to_json end @@ -54,7 +57,8 @@ class RandomOrganisationGenerator < StringEncoder ['--industry', GetoptLong::REQUIRED_ARGUMENT], ['--manager', GetoptLong::REQUIRED_ARGUMENT], ['--employees', GetoptLong::REQUIRED_ARGUMENT], - ['--product_name', GetoptLong::REQUIRED_ARGUMENT]] + ['--product_name', GetoptLong::REQUIRED_ARGUMENT], + ['--intro_paragraph', GetoptLong::REQUIRED_ARGUMENT]] end def process_options(opt, arg) @@ -80,6 +84,8 @@ class RandomOrganisationGenerator < StringEncoder self.employees << JSON.parse(arg); when '--product_name' self.product_name << arg; + when '--intro_paragraph' + self.intro_paragraph << arg; end end @@ -93,7 +99,8 @@ class RandomOrganisationGenerator < StringEncoder 'industry: ' + self.industry.to_s + print_string_padding + 'manager: ' + self.manager.to_s + print_string_padding + 'employees: ' + self.employees.to_s + print_string_padding + - 'product_name: ' + self.product_name.to_s + 'product_name: ' + self.product_name.to_s + + 'intro_paragraph: ' + self.intro_paragraph.to_s end end diff --git a/modules/generators/structured_content/random_organisation/secgen_metadata.xml b/modules/generators/structured_content/random_organisation/secgen_metadata.xml index 71a36750f..88bb8054c 100644 --- a/modules/generators/structured_content/random_organisation/secgen_metadata.xml +++ b/modules/generators/structured_content/random_organisation/secgen_metadata.xml @@ -25,6 +25,7 @@ manager employees product_name + intro_paragraph @@ -58,6 +59,9 @@ + + + account diff --git a/modules/generators/structured_content/realistic_organisation/secgen_local/local.rb b/modules/generators/structured_content/realistic_organisation/secgen_local/local.rb index 5fb8d0e37..9cba0b1fc 100644 --- a/modules/generators/structured_content/realistic_organisation/secgen_local/local.rb +++ b/modules/generators/structured_content/realistic_organisation/secgen_local/local.rb @@ -12,6 +12,7 @@ class RealOrganisationGenerator < StringEncoder attr_accessor :manager attr_accessor :employees attr_accessor :product_name + attr_accessor :intro_paragraph attr_accessor :filler_char def initialize @@ -27,6 +28,7 @@ class RealOrganisationGenerator < StringEncoder self.manager = {} self.employees = [] self.product_name = '' + self.intro_paragraph = '' self.filler_char = %w(_ -).sample end @@ -59,6 +61,7 @@ class RealOrganisationGenerator < StringEncoder organisation_hash['manager'] = self.manager organisation_hash['employees'] = self.employees organisation_hash['product_name'] = self.product_name + organisation_hash['intro_paragraph'] = self.intro_paragraph self.outputs << organisation_hash.to_json end @@ -88,7 +91,8 @@ class RealOrganisationGenerator < StringEncoder ['--industry', GetoptLong::REQUIRED_ARGUMENT], ['--manager', GetoptLong::REQUIRED_ARGUMENT], ['--employees', GetoptLong::REQUIRED_ARGUMENT], - ['--product_name', GetoptLong::REQUIRED_ARGUMENT]] + ['--product_name', GetoptLong::REQUIRED_ARGUMENT], + ['--intro_paragraph', GetoptLong::REQUIRED_ARGUMENT]] end def process_options(opt, arg) @@ -114,6 +118,8 @@ class RealOrganisationGenerator < StringEncoder self.employees << JSON.parse(arg); when '--product_name' self.product_name << arg; + when '--intro_paragraph' + self.intro_paragraph << arg; end end @@ -127,7 +133,8 @@ class RealOrganisationGenerator < StringEncoder 'industry: ' + self.industry.to_s + print_string_padding + 'manager: ' + self.manager.to_s + print_string_padding + 'employees: ' + self.employees.to_s + print_string_padding + - 'product_name: ' + self.product_name.to_s + 'product_name: ' + self.product_name.to_s + + 'intro_paragraph: ' + self.intro_paragraph.to_s end end diff --git a/modules/generators/structured_content/realistic_organisation/secgen_metadata.xml b/modules/generators/structured_content/realistic_organisation/secgen_metadata.xml index e4c772e31..b3b7b9b8d 100644 --- a/modules/generators/structured_content/realistic_organisation/secgen_metadata.xml +++ b/modules/generators/structured_content/realistic_organisation/secgen_metadata.xml @@ -27,6 +27,7 @@ manager employees product_name + intro_paragraph @@ -60,6 +61,10 @@ + + + + account From 343451808617fb639b1aa5e7992249d76d3c7427 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Mon, 5 Feb 2018 16:04:24 +0000 Subject: [PATCH 12/24] selector --- .../secgen_local/local.rb | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/modules/encoders/selector/random_line_selector/secgen_local/local.rb b/modules/encoders/selector/random_line_selector/secgen_local/local.rb index c601e41e1..044c7ac64 100644 --- a/modules/encoders/selector/random_line_selector/secgen_local/local.rb +++ b/modules/encoders/selector/random_line_selector/secgen_local/local.rb @@ -11,15 +11,23 @@ class RandomSelectorEncoder < StringEncoder self.position = '' end + # @return [Array[string]] containing selected string from file def encode_all - file_lines = File.readlines("#{ROOT_DIR}/#{file_path}") + selected_string = '' - selected_string = if !position.nil? && (position != '') - file_lines[position.to_i - 1] - else - file_lines.sample - end - outputs << selected_string + unless file_path.include? '..' + path = "#{ROOT_DIR}/#{file_path}" + + file_lines = File.readlines(path) + + selected_string = if !position.nil? && (position != '') + file_lines[position.to_i - 1] + else + file_lines.sample + end + end + + outputs << selected_string.chomp end def process_options(opt, arg) From 2391bab6d3f0a8b9dca2c832a3fe45805006ef31 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Mon, 5 Feb 2018 17:24:56 +0000 Subject: [PATCH 13/24] WiP --- .../structured_content/json_organisations | 6 +- .../structured_content/organisation.json | 70 ++++++++++--------- .../random_organisation/secgen_local/local.rb | 2 +- .../secgen_local/local.rb | 2 +- .../manifests/install.pp | 9 ++- 5 files changed, 48 insertions(+), 41 deletions(-) diff --git a/lib/resources/structured_content/json_organisations b/lib/resources/structured_content/json_organisations index 1d7f0f9a3..2f32ffffc 100644 --- a/lib/resources/structured_content/json_organisations +++ b/lib/resources/structured_content/json_organisations @@ -1,4 +1,2 @@ -{"business_name":"TESTERSON and Sons","business_motto":"Compatible tertiary data-warehouse","business_address":"96011 Eliseo Village, West Savanah, West Sussex, WA3 5LA","domain":"mr-baylee-morissette.co.uk","office_telephone":"029 0277 1916","office_email":"keyshawn@bergstrombernier.net","industry":"Lumber, Wood Production","manager":{"name":"Brooklyn Gerhold","address":"707 Verdie Island Suite 122, Lake Clarissa, Idaho, 46841-5019","phone_number":"07689 647142","email_address":"i-balistreri-delbert@romaguera-llc.net","username":"shiny_process","password":"fuckyou"},"employees":[{"name":"Fred Brown","address":"7247 Lebsack Crossing, South Harmonfort, Cheshire, Y5 5NW","phone_number":"07622 411758","email_address":"amir_kilback@schoen.name","username":"glossymorning","password":"ypxQZsXrFSDU6WH2R9mQ"},{"name":"Ashley Bradtke Jr.","address":"754 Assunta Flats, Halliefurt, Grampian, WE4 0LZ","phone_number":"931.602.7779","email_address":"i-scarlett-bruen@littel-konopelski.co.uk","username":"whispering_disgust","password":"orval94"},{"name":"Ivy Hickle","address":"7407 Ullrich Crossroad, South Claud, Strathclyde, JB1H 7ZB","phone_number":"056 4723 2042","email_address":"nader-kelli@ullrich-stroman-and-lind.com","username":"versed_lace","password":"password"}],"product_name":"Sub-Ex","intro_paragraph":"+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan."} -{"business_name":"Feil LLC","business_motto":"Phased didactic productivity","business_address":"1642 Nienow Spur, Cruickshankstad, Wisconsin, 78112","domain":"feil-llc.com","office_telephone":"270-406-7177","office_email":"office@feil-llc.com","industry":"Food - Major Diversified","manager":{"name":"Reynold Davis","address":"716 Carlo Meadow, South Roma, Wiltshire, WB9 2AH","phone_number":"07450 985656","email_address":"reynold-davis@feil-llc.com","username":"reynold-davis","password":"play"},"employees":[{"name":"Craig Fields","address":"69028 Green Ferry Apt. 909, South Maeveport, Mississippi, 45804","phone_number":"07723 278408","email_address":"craig-fields@feil-llc.com","username":"craig-fields","password":"nona"},{"name":"Patrick Palmer","address":"7593 Brakus Prairie, East Marcellus, Wiltshire, WE2P 3JN","phone_number":"(469) 202-6538","email_address":"patrick-palmer@feil-llc.com","username":"patrick-palmer","password":"klaster"},{"name":"Bobby Snyder","address":"824 Ceasar Landing, East Mollyland, County Armagh, ZQ6E 1NX","phone_number":"029 6219 8717","email_address":"bobby-snyder@feil-llc.com","username":"bobby-snyder","password":"6gG2yF6szwUWWWkJgYXX"}],"product_name":"Opela","intro_paragraph":"+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan."} -{"business_name":"Feil LLC","business_motto":"Phased didactic productivity","business_address":"1642 Nienow Spur, Cruickshankstad, Wisconsin, 78112","domain":"feil-llc.com","office_telephone":"270-406-7177","office_email":"office@feil-llc.com","industry":"Food - Major Diversified","manager":{"name":"Reynold Davis","address":"716 Carlo Meadow, South Roma, Wiltshire, WB9 2AH","phone_number":"07450 985656","email_address":"reynold-davis@feil-llc.com","username":"reynold-davis","password":"play"},"employees":[{"name":"Craig Fields","address":"69028 Green Ferry Apt. 909, South Maeveport, Mississippi, 45804","phone_number":"07723 278408","email_address":"craig-fields@feil-llc.com","username":"craig-fields","password":"nona"},{"name":"Patrick Palmer","address":"7593 Brakus Prairie, East Marcellus, Wiltshire, WE2P 3JN","phone_number":"(469) 202-6538","email_address":"patrick-palmer@feil-llc.com","username":"patrick-palmer","password":"klaster"},{"name":"Bobby Snyder","address":"824 Ceasar Landing, East Mollyland, County Armagh, ZQ6E 1NX","phone_number":"029 6219 8717","email_address":"bobby-snyder@feil-llc.com","username":"bobby-snyder","password":"6gG2yF6szwUWWWkJgYXX"}],"product_name":"Opela","intro_paragraph":"+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan."} -{"business_name":"Feil LLC","business_motto":"Phased didactic productivity","business_address":"1642 Nienow Spur, Cruickshankstad, Wisconsin, 78112","domain":"feil-llc.com","office_telephone":"270-406-7177","office_email":"office@feil-llc.com","industry":"Food - Major Diversified","manager":{"name":"Reynold Davis","address":"716 Carlo Meadow, South Roma, Wiltshire, WB9 2AH","phone_number":"07450 985656","email_address":"reynold-davis@feil-llc.com","username":"reynold-davis","password":"play"},"employees":[{"name":"Craig Fields","address":"69028 Green Ferry Apt. 909, South Maeveport, Mississippi, 45804","phone_number":"07723 278408","email_address":"craig-fields@feil-llc.com","username":"craig-fields","password":"nona"},{"name":"Patrick Palmer","address":"7593 Brakus Prairie, East Marcellus, Wiltshire, WE2P 3JN","phone_number":"(469) 202-6538","email_address":"patrick-palmer@feil-llc.com","username":"patrick-palmer","password":"klaster"},{"name":"Bobby Snyder","address":"824 Ceasar Landing, East Mollyland, County Armagh, ZQ6E 1NX","phone_number":"029 6219 8717","email_address":"bobby-snyder@feil-llc.com","username":"bobby-snyder","password":"6gG2yF6szwUWWWkJgYXX"}],"product_name":"Opela","intro_paragraph":"+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan."} +{"business_name":"Ebert-Hegmann","business_motto":"Total holistic monitoring","business_address":"1494 Hagenes Square, East Samir, North Dakota, 26077","domain":"sandra_coleman.com","office_telephone":"0500 870390","office_email":"nettie_doyle@kaulke.net","industry":"Recreational Goods, Other","manager":{"name":"Heather Schmidt","address":"800 Bogisich Avenue, Oswaldohaven, Highlands and Islands, Z9 6NB","phone_number":"07836 581948","email_address":"rosalinda@hillsmoore.name","username":"short-channel","password":"joshua"},"employees":[{"name":"Zion Jacobson","address":"104 Cole Square, North Kamren, Kent, WS8 3NL","phone_number":"07880 057670","email_address":"charlotte.wyman@colerunolfsdottir.org","username":"spooky-hall","password":"UeYtdks7bM6t5ZID38h"},{"name":"Jonathan Ray","address":"6444 Jackson Path, Lake Libbieburgh, Hertfordshire, R3A 0LY","phone_number":"(270) 317-5032","email_address":"vivienne@becker.net","username":"scientific_bells","password":"mona"},{"name":"Virginia Sullivan","address":"51413 Roberts Trail, Dinoberg, Florida, 86873","phone_number":"07826 576277","email_address":"dicki-jarret@eichmann-feest-and-towne.org","username":"typicalcoil","password":"letmein"}],"product_name":"Stim","intro_paragraph":["Ex ut excepturi consequatur. Ut est nihil fugiat veritatis aut voluptas. Ipsum rerum omnis rerum.Rerum ipsam et. Et ipsum ut. Illum ullam officiis corrupti ducimus sed sit dolor.Libero iusto amet. Perspiciatis quia qui ut dolorem. Ut et sit rerum. Dignissimos quaerat dolores ad et praesentium nemo. Et reiciendis est.Illum facere praesentium mollitia natus. Ullam velit modi vel sed. Consequuntur eum animi facilis dolores tempore. A corrupti nulla aut et.Ea asperiores impedit pariatur. Deserunt explicabo cupiditate quasi animi quidem. Ipsam non et explicabo tempora et facere eos. Voluptatem suscipit nulla non alias asperiores culpa non."]} +{"business_name":"Davis, Ortiz and Lang","business_motto":"Centralized next generation archive","business_address":"3180 Kirlin Roads, East Darrickfurt, Shropshire, ZH7B 9UB","domain":"gary_clark.co.uk","office_telephone":"0181 101 2503","office_email":"garry_huels@macgyverkeler.biz","industry":"Electronics Stores","manager":{"name":"Tyree Wilkinson","address":"39570 Lucy Center, Maiyamouth, Rhode Island, 62120","phone_number":"0800 327525","email_address":"sanford-karlie@welch-bogan-and-swaniawski.co.uk","username":"unable-note","password":"waste15"},"employees":[{"name":"Aurelia MacGyver","address":"4848 Cummerata Haven, New Faustino, Georgia, 24461","phone_number":"484-475-9067","email_address":"phd-jettie-johns@brekke-group.org","username":"eatabledrum","password":"XK7W2lUQ5IyL9RG7KAg"},{"name":"Laura Hansen","address":"79260 Purdy Inlet, New Flavieburgh, Shropshire, ZE27 2NJ","phone_number":"0121 088 7581","email_address":"nick_hilll@hoppehayes.com","username":"idioticstomach","password":"petSmiMQTPFgNsHoiIcb"},{"name":"Louis Edwards","address":"79118 Ratke Heights, Lake Boville, County Down, W2N 3AQ","phone_number":"0131 129 1078","email_address":"jarvis-halvorson@ankunding-parker.com","username":"guiltless_string","password":"crowd32"}],"product_name":"Tres-Zap","intro_paragraph":["Impedit ipsa aut omnis et aut. Blanditiis non et assumenda. Molestias porro ut id aut facere praesentium beatae.Enim aliquam totam commodi aspernatur. Non fuga dolorem voluptas qui. Nulla aliquam iusto enim rem non laborum voluptas. Vitae veritatis sint maiores.Animi est perspiciatis aut amet placeat corporis dolorem. Nisi eos odit eius. Aut accusamus magnam aut consequatur mollitia ea. Illum officia non voluptatum fuga quasi.Est et eos. Et quia aut consequatur neque. Deleniti culpa aliquam excepturi.Sint at est non harum porro. Quo beatae facilis fugiat occaecati hic aut. Laudantium aut cumque quia tempora."]} \ No newline at end of file diff --git a/lib/resources/structured_content/organisation.json b/lib/resources/structured_content/organisation.json index be305544d..711e404bd 100644 --- a/lib/resources/structured_content/organisation.json +++ b/lib/resources/structured_content/organisation.json @@ -1,45 +1,47 @@ { - "business_name": "TESTERSON and Sons", - "business_motto": "Compatible tertiary data-warehouse", - "business_address": "96011 Eliseo Village, West Savanah, West Sussex, WA3 5LA", - "domain": "mr-baylee-morissette.co.uk", - "office_telephone": "029 0277 1916", - "office_email": "keyshawn@bergstrombernier.net", - "industry": "Lumber, Wood Production", + "business_name": "Ebert-Hegmann", + "business_motto": "Total holistic monitoring", + "business_address": "1494 Hagenes Square, East Samir, North Dakota, 26077", + "domain": "sandra_coleman.com", + "office_telephone": "0500 870390", + "office_email": "nettie_doyle@kaulke.net", + "industry": "Recreational Goods, Other", "manager": { - "name": "Brooklyn Gerhold", - "address": "707 Verdie Island Suite 122, Lake Clarissa, Idaho, 46841-5019", - "phone_number": "07689 647142", - "email_address": "i-balistreri-delbert@romaguera-llc.net", - "username": "shiny_process", - "password": "fuckyou" + "name": "Heather Schmidt", + "address": "800 Bogisich Avenue, Oswaldohaven, Highlands and Islands, Z9 6NB", + "phone_number": "07836 581948", + "email_address": "rosalinda@hillsmoore.name", + "username": "short-channel", + "password": "joshua" }, "employees": [ { - "name": "Fred Brown", - "address": "7247 Lebsack Crossing, South Harmonfort, Cheshire, Y5 5NW", - "phone_number": "07622 411758", - "email_address": "amir_kilback@schoen.name", - "username": "glossymorning", - "password": "ypxQZsXrFSDU6WH2R9mQ" + "name": "Zion Jacobson", + "address": "104 Cole Square, North Kamren, Kent, WS8 3NL", + "phone_number": "07880 057670", + "email_address": "charlotte.wyman@colerunolfsdottir.org", + "username": "spooky-hall", + "password": "UeYtdks7bM6t5ZID38h" }, { - "name": "Ashley Bradtke Jr.", - "address": "754 Assunta Flats, Halliefurt, Grampian, WE4 0LZ", - "phone_number": "931.602.7779", - "email_address": "i-scarlett-bruen@littel-konopelski.co.uk", - "username": "whispering_disgust", - "password": "orval94" + "name": "Jonathan Ray", + "address": "6444 Jackson Path, Lake Libbieburgh, Hertfordshire, R3A 0LY", + "phone_number": "(270) 317-5032", + "email_address": "vivienne@becker.net", + "username": "scientific_bells", + "password": "mona" }, { - "name": "Ivy Hickle", - "address": "7407 Ullrich Crossroad, South Claud, Strathclyde, JB1H 7ZB", - "phone_number": "056 4723 2042", - "email_address": "nader-kelli@ullrich-stroman-and-lind.com", - "username": "versed_lace", - "password": "password" + "name": "Virginia Sullivan", + "address": "51413 Roberts Trail, Dinoberg, Florida, 86873", + "phone_number": "07826 576277", + "email_address": "dicki-jarret@eichmann-feest-and-towne.org", + "username": "typicalcoil", + "password": "letmein" } ], - "product_name": "Sub-Ex", - "intro_paragraph": "+1 cardigan franzen listicle viral hammock blue bottle master. Pour-over umami post-ironic chambray readymade. Put a bird on it five dollar toast 3 wolf moon bespoke disrupt carry. Direct trade single-origin coffee cornhole thundercats drinking. Forage hella chartreuse typewriter bushwick selfies.Post-ironic artisan cliche asymmetrical gentrify paleo scenester banh mi. Plaid fanny pack meggings kitsch brooklyn venmo vinyl. Yuccie hashtag keffiyeh intelligentsia sriracha brunch. Tilde organic actually. Hammock flexitarian meditation retro.Chambray drinking xoxo deep v intelligentsia narwhal typewriter. Five dollar toast poutine letterpress. Everyday kombucha shoreditch. Sustainable kogi umami. Kale chips hoodie tofu butcher chambray pour-over cardigan." -} + "product_name": "Stim", + "intro_paragraph": [ + "Ex ut excepturi consequatur. Ut est nihil fugiat veritatis aut voluptas. Ipsum rerum omnis rerum.Rerum ipsam et. Et ipsum ut. Illum ullam officiis corrupti ducimus sed sit dolor.Libero iusto amet. Perspiciatis quia qui ut dolorem. Ut et sit rerum. Dignissimos quaerat dolores ad et praesentium nemo. Et reiciendis est.Illum facere praesentium mollitia natus. Ullam velit modi vel sed. Consequuntur eum animi facilis dolores tempore. A corrupti nulla aut et.Ea asperiores impedit pariatur. Deserunt explicabo cupiditate quasi animi quidem. Ipsam non et explicabo tempora et facere eos. Voluptatem suscipit nulla non alias asperiores culpa non." + ] +} \ No newline at end of file diff --git a/modules/generators/structured_content/random_organisation/secgen_local/local.rb b/modules/generators/structured_content/random_organisation/secgen_local/local.rb index 229b98bce..33fc765c8 100644 --- a/modules/generators/structured_content/random_organisation/secgen_local/local.rb +++ b/modules/generators/structured_content/random_organisation/secgen_local/local.rb @@ -27,7 +27,7 @@ class RandomOrganisationGenerator < StringEncoder self.manager = {} self.employees = [] self.product_name = '' - self.intro_paragraph = '' + self.intro_paragraph = [] end def encode_all diff --git a/modules/generators/structured_content/realistic_organisation/secgen_local/local.rb b/modules/generators/structured_content/realistic_organisation/secgen_local/local.rb index 9cba0b1fc..f68c2ac16 100644 --- a/modules/generators/structured_content/realistic_organisation/secgen_local/local.rb +++ b/modules/generators/structured_content/realistic_organisation/secgen_local/local.rb @@ -28,7 +28,7 @@ class RealOrganisationGenerator < StringEncoder self.manager = {} self.employees = [] self.product_name = '' - self.intro_paragraph = '' + self.intro_paragraph = [] self.filler_char = %w(_ -).sample end diff --git a/modules/services/unix/http/parameterised_website/manifests/install.pp b/modules/services/unix/http/parameterised_website/manifests/install.pp index 3e4b3944e..925528f9b 100644 --- a/modules/services/unix/http/parameterised_website/manifests/install.pp +++ b/modules/services/unix/http/parameterised_website/manifests/install.pp @@ -17,6 +17,7 @@ class parameterised_website::install { $industry = $organisation['industry'] $product_name = $organisation['product_name'] $employees = $organisation['employees'] + $intro_paragraph = $organisation['intro_paragraph'] } else { $business_name = '' $business_motto = '' @@ -27,10 +28,10 @@ class parameterised_website::install { $industry = '' $product_name = '' $employees = [] + $intro_paragraph = [] } $strings_to_leak = $secgen_parameters['strings_to_leak'] - $main_page_paragraph_content = $secgen_parameters['main_page_paragraph_content'] $images_to_leak = $secgen_parameters['images_to_leak'] $security_audit = $secgen_parameters['security_audit'] @@ -41,6 +42,12 @@ class parameterised_website::install { $white_text = $secgen_parameters['white_text'] + if $intro_paragraph != '' { + $main_page_paragraph_content = $intro_paragraph + } else { + $main_page_paragraph_content = $secgen_parameters['main_page_paragraph_content'] + } + # Additional Pages $additional_pages = $secgen_parameters['additional_pages'] $additional_page_filenames = $secgen_parameters['additional_page_filenames'] From 948a494f324451a65b20464c7d05381476fa60a2 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Tue, 6 Feb 2018 11:09:55 +0000 Subject: [PATCH 14/24] website: wip --- .../manifests/install.pp | 7 +++++ .../templates/subtemplates/header.html.erb | 1 + scenarios/test_scenario.xml | 26 +++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 scenarios/test_scenario.xml diff --git a/modules/services/unix/http/parameterised_website/manifests/install.pp b/modules/services/unix/http/parameterised_website/manifests/install.pp index 925528f9b..67d4089bd 100644 --- a/modules/services/unix/http/parameterised_website/manifests/install.pp +++ b/modules/services/unix/http/parameterised_website/manifests/install.pp @@ -85,6 +85,13 @@ class parameterised_website::install { require => File["$docroot/css"], } + # Apply randomly selected CSS template + file { "$docroot/css/randomly_selected.css": + ensure => file, + content => template('parameterised_website/default.css.erb'), + require => File["$docroot/css"], + } + # Apply index page template file { "$docroot/index.html": ensure => file, diff --git a/modules/services/unix/http/parameterised_website/templates/subtemplates/header.html.erb b/modules/services/unix/http/parameterised_website/templates/subtemplates/header.html.erb index 298cec027..07deee90a 100644 --- a/modules/services/unix/http/parameterised_website/templates/subtemplates/header.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/subtemplates/header.html.erb @@ -8,6 +8,7 @@ + \ No newline at end of file diff --git a/scenarios/test_scenario.xml b/scenarios/test_scenario.xml new file mode 100644 index 000000000..78abb2b60 --- /dev/null +++ b/scenarios/test_scenario.xml @@ -0,0 +1,26 @@ + + + + + + + escalation + + + + + + + + lib/resources/structured_content/json_organisations + + + + + + + + + From 22bab8d8bf02fb6c0c8fa167ec29a94f47511f33 Mon Sep 17 00:00:00 2001 From: ts Date: Tue, 6 Feb 2018 14:12:44 +0000 Subject: [PATCH 15/24] Clean organisation.json --- .../structured_content/organisation.json | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/lib/resources/structured_content/organisation.json b/lib/resources/structured_content/organisation.json index 711e404bd..868dc6b04 100644 --- a/lib/resources/structured_content/organisation.json +++ b/lib/resources/structured_content/organisation.json @@ -1,47 +1,47 @@ { - "business_name": "Ebert-Hegmann", - "business_motto": "Total holistic monitoring", - "business_address": "1494 Hagenes Square, East Samir, North Dakota, 26077", - "domain": "sandra_coleman.com", - "office_telephone": "0500 870390", - "office_email": "nettie_doyle@kaulke.net", - "industry": "Recreational Goods, Other", + "business_name": "", + "business_motto": "", + "business_address": "", + "domain": "", + "office_telephone": "", + "office_email": "", + "industry": "", "manager": { - "name": "Heather Schmidt", - "address": "800 Bogisich Avenue, Oswaldohaven, Highlands and Islands, Z9 6NB", - "phone_number": "07836 581948", - "email_address": "rosalinda@hillsmoore.name", - "username": "short-channel", - "password": "joshua" + "name": "", + "address": "", + "phone_number": "", + "email_address": "", + "username": "", + "password": "" }, "employees": [ { - "name": "Zion Jacobson", - "address": "104 Cole Square, North Kamren, Kent, WS8 3NL", - "phone_number": "07880 057670", - "email_address": "charlotte.wyman@colerunolfsdottir.org", - "username": "spooky-hall", - "password": "UeYtdks7bM6t5ZID38h" + "name": "", + "address": "", + "phone_number": "", + "email_address": "", + "username": "", + "password": "" }, { - "name": "Jonathan Ray", - "address": "6444 Jackson Path, Lake Libbieburgh, Hertfordshire, R3A 0LY", - "phone_number": "(270) 317-5032", - "email_address": "vivienne@becker.net", - "username": "scientific_bells", - "password": "mona" + "name": "", + "address": "", + "phone_number": "", + "email_address": "", + "username": "", + "password": "" }, { - "name": "Virginia Sullivan", - "address": "51413 Roberts Trail, Dinoberg, Florida, 86873", - "phone_number": "07826 576277", - "email_address": "dicki-jarret@eichmann-feest-and-towne.org", - "username": "typicalcoil", - "password": "letmein" + "name": "", + "address": "", + "phone_number": "", + "email_address": "", + "username": "", + "password": "" } ], - "product_name": "Stim", + "product_name": "", "intro_paragraph": [ - "Ex ut excepturi consequatur. Ut est nihil fugiat veritatis aut voluptas. Ipsum rerum omnis rerum.Rerum ipsam et. Et ipsum ut. Illum ullam officiis corrupti ducimus sed sit dolor.Libero iusto amet. Perspiciatis quia qui ut dolorem. Ut et sit rerum. Dignissimos quaerat dolores ad et praesentium nemo. Et reiciendis est.Illum facere praesentium mollitia natus. Ullam velit modi vel sed. Consequuntur eum animi facilis dolores tempore. A corrupti nulla aut et.Ea asperiores impedit pariatur. Deserunt explicabo cupiditate quasi animi quidem. Ipsam non et explicabo tempora et facere eos. Voluptatem suscipit nulla non alias asperiores culpa non." + "" ] } \ No newline at end of file From 41a4cffd1e9ee67775eb14a85e3231ff284616e5 Mon Sep 17 00:00:00 2001 From: ts Date: Tue, 6 Feb 2018 16:49:48 +0000 Subject: [PATCH 16/24] prepared business json files --- lib/resources/structured_content/bakery.json | 47 ++++++++++++++++++ lib/resources/structured_content/bank.json | 47 ++++++++++++++++++ lib/resources/structured_content/fitness.json | 48 ++++++++++++++++++ .../structured_content/it_solutions.json | 47 ++++++++++++++++++ .../lbu_forensics_security.json | 49 +++++++++++++++++++ lib/resources/structured_content/lbu_law.json | 48 ++++++++++++++++++ .../structured_content/lbu_music.json | 47 ++++++++++++++++++ lib/resources/structured_content/medical.json | 48 ++++++++++++++++++ 8 files changed, 381 insertions(+) create mode 100644 lib/resources/structured_content/bakery.json create mode 100644 lib/resources/structured_content/bank.json create mode 100644 lib/resources/structured_content/fitness.json create mode 100644 lib/resources/structured_content/it_solutions.json create mode 100644 lib/resources/structured_content/lbu_forensics_security.json create mode 100644 lib/resources/structured_content/lbu_law.json create mode 100644 lib/resources/structured_content/lbu_music.json create mode 100644 lib/resources/structured_content/medical.json diff --git a/lib/resources/structured_content/bakery.json b/lib/resources/structured_content/bakery.json new file mode 100644 index 000000000..4ace56a35 --- /dev/null +++ b/lib/resources/structured_content/bakery.json @@ -0,0 +1,47 @@ +{ + "business_name": "Artisan Bakery", + "business_motto": "The loaves are in the oven.", + "business_address": "1080 Headingley Lane, Headingley, Leeds, LS6 1BN", + "domain": "artisan-bakery.co.uk", + "office_telephone": "0113 222 1080", + "office_email": "orders@artisan-bakery.co.uk", + "industry": "Bakers", + "manager": { + "name": "Maxie Durgan", + "address": "1080 Headingley Lane, Headingley, Leeds, LS6 1BN", + "phone_number": "0113 222 1080", + "email_address": "maxie@artisan-bakery.co.uk", + "username": "maxie", + "password": "" + }, + "employees": [ + { + "name": "Matthew Riley", + "address": "1080 Headingley Lane, Headingley, Leeds, LS6 1BN", + "phone_number": "0113 222 1080", + "email_address": "matt@artisan-bakery.co.uk", + "username": "matt", + "password": "" + }, + { + "name": "Emelie Lowe", + "address": "1080 Headingley Lane, Headingley, Leeds, LS6 1BN", + "phone_number": "0113 222 1080", + "email_address": "emelie@artisan-bakery.co.uk", + "username": "emelie", + "password": "" + }, + { + "name": "Antonio Durgan", + "address": "1080 Headingley Lane, Headingley, Leeds, LS6 1BN", + "phone_number": "0113 222 1080", + "email_address": "antonio@artisan-bakery.co.uk", + "username": "antonio", + "password": "" + } + ], + "product_name": "Baked goods", + "intro_paragraph": [ + "Finest bakery in Headingley since 1900. Baked fresh daily. Bread loaves, teacakes, sweet and savoury treats. We are open from 9 am til 6 pm, every day except for bank holidays." + ] +} \ No newline at end of file diff --git a/lib/resources/structured_content/bank.json b/lib/resources/structured_content/bank.json new file mode 100644 index 000000000..9105f64db --- /dev/null +++ b/lib/resources/structured_content/bank.json @@ -0,0 +1,47 @@ +{ + "business_name": "Northern Banking", + "business_motto": "We'll keep your money safe!", + "business_address": "123 The Headrow, Leeds, LS1 5RD", + "domain": "northernbanking.co.uk", + "office_telephone": "0113 000 0123", + "office_email": "enquiries@northernbanking.co.uk", + "industry": "Finance", + "manager": { + "name": "Heather Schmidt", + "address": "800 Bogisich Avenue, Oswaldohaven, Leeds, LS9 6NB", + "phone_number": "07836 581948", + "email_address": "h.schmidt@northernbanking.co.uk", + "username": "h_schmidt", + "password": "" + }, + "employees": [ + { + "name": "Zion Jacobson", + "address": "104 Cole Square, ", + "phone_number": "07880 057670", + "email_address": "z.jacobson@northernbanking.co.uk", + "username": "z_jacobson", + "password": "" + }, + { + "name": "Jonathan Ray", + "address": "644 Jackson Path, Leeds, LS2 4AJ", + "phone_number": "07893 001623", + "email_address": "j.ray@northernbanking.co.uk", + "username": "j_ray", + "password": "" + }, + { + "name": "Virginia Sullivan", + "address": "23 Jane Street, Harrogate, HG1 4DJ", + "phone_number": "07826 576277", + "email_address": "v.sullivan@northernbanking.co.uk", + "username": "v_sullivan", + "password": "" + } + ], + "product_name": "Financial Services", + "intro_paragraph": [ + "About Northern Bank","With roots back to its establishment in Huddersfield, West Yorkshire in 1805. Northern bank has a strong personal customer base and business banking capability though a UK-wide network. Northern Bank is a trading name of Big Bank PLC." + ] +} \ No newline at end of file diff --git a/lib/resources/structured_content/fitness.json b/lib/resources/structured_content/fitness.json new file mode 100644 index 000000000..c0f0617f3 --- /dev/null +++ b/lib/resources/structured_content/fitness.json @@ -0,0 +1,48 @@ +{ + "business_name": "The Yorkshire Fitness Company", + "business_motto": "Get thi sen down't gym!", + "business_address": "15 Sheepscar Court, Leeds LS7 2BB", + "domain": "yorkshirefitco.co.uk", + "office_telephone": "0113 026 9999", + "office_email": "office@yorkshirefitco.co.uk", + "industry": "Health and Fitness", + "manager": { + "name": "Jerry Rivera", + "address": "15 Sheepscar Court, Leeds LS7 2BB", + "phone_number": "0113 026 9999", + "email_address": "jerry.rivera@yorkshirefitco.co.uk", + "username": "jerry_rivera", + "password": "" + }, + "employees": [ + { + "name": "Immanuel Bahringer IV", + "address": "15 Sheepscar Court, Leeds LS7 2BB", + "phone_number": "07688 112479", + "email_address": "immanuel.bahringer.iv@yorkshirefitco.co.uk", + "username": "immanuel_bahringer_iv", + "password": "" + }, + { + "name": "Anne Hunter", + "address": "15 Sheepscar Court, Leeds LS7 2BB", + "phone_number": "07791 179177", + "email_address": "anne.hunter@yorkshirefitco.co.uk", + "username": "anne_hunter", + "password": "" + }, + { + "name": "Katelin Langworth", + "address": "15 Sheepscar Court, Leeds LS7 2BB", + "phone_number": "07550 561978", + "email_address": "katelin.langworth@yorkshirefitco.co.uk", + "username": "katelin_langworth", + "password": "" + } + ], + "product_name": "", + "intro_paragraph": [ + "Experience Yorkshire's leading health and fitness club in the not far from the city centre. Established in 1990 The Yorkshire Fitness Company is committed to getting you the results you want.", + "If you like classes, the gym or a combo of both, our dedicated professional team of coaches & teachers are always available to motivate you and guide you towards your goals." + ] +} \ No newline at end of file diff --git a/lib/resources/structured_content/it_solutions.json b/lib/resources/structured_content/it_solutions.json new file mode 100644 index 000000000..c98ec7d37 --- /dev/null +++ b/lib/resources/structured_content/it_solutions.json @@ -0,0 +1,47 @@ +{ + "business_name": "Abacus Technology Solutions", + "business_motto": "Solving your problems so you don't have to.", + "business_address": "Unit 12, Lincoln St, Huddersfield HD1 6RX", + "domain": "abacus-technology.co.uk", + "office_telephone": "01484 850963", + "office_email": "office@abacus-technology.co.uk", + "industry": "IT Services", + "manager": { + "name": "Ellie Bosco", + "address": "Office 1, Unit 12, Lincoln St, Huddersfield HD1 6RX", + "phone_number": "07528 347828", + "email_address": "e.bosco@abacus-technology.co.uk", + "username": "ebosco", + "password": "" + }, + "employees": [ + { + "name": "Keara Harris", + "address": "Office 2, Unit 12, Lincoln St, Huddersfield HD1 6RX", + "phone_number": "07674 358645", + "email_address": "k.harris@abacus-technology.co.uk", + "username": "kharris", + "password": "" + }, + { + "name": "Janessa Rempel", + "address": "Office 2, Unit 12, Lincoln St, Huddersfield HD1 6RX", + "phone_number": "07644 118595", + "email_address": "j.rempel@abacus-technology.co.uk", + "username": "jrempel", + "password": "" + }, + { + "name": "Russell Ramirez", + "address": "Office 3, Unit 12, Lincoln St, Huddersfield HD1 6RX", + "phone_number": "01484 850963", + "email_address": "r.ramirez@abacus-technology.co.uk", + "username": "rramirez", + "password": "" + } + ], + "product_name": "IT Solutions", + "intro_paragraph": [ + "Providers of cloud services, backups, data recovery, hardware, off-the-shelf and bespoke software. 24/7 technical support available. Custom design and installation based on your companies needs!" + ] +} \ No newline at end of file diff --git a/lib/resources/structured_content/lbu_forensics_security.json b/lib/resources/structured_content/lbu_forensics_security.json new file mode 100644 index 000000000..b50e5b0e6 --- /dev/null +++ b/lib/resources/structured_content/lbu_forensics_security.json @@ -0,0 +1,49 @@ +{ + "business_name": "Leeds Beckett- Computer Forensics and Security", + "business_motto": "", + "business_address": "43 Church Wood Ave, Leeds LS16 5LF", + "domain": "leedsbeckett.ac.uk", + "office_telephone": "0113 81 23000", + "office_email": "study@leedsbeckett.ac.uk", + "industry": "Higher Education", + "manager": { + "name": "Emlyn Butterfield", + "address": "115, Caedmon Hall, Headingley Campus", + "phone_number": "0113 81 24440", + "email_address": "E.Butterfield@leedsbeckett.ac.uk", + "username": "ebutterfield", + "password": "" + }, + "employees": [ + { + "name": "Dr. Z. Cliffe Schreuders", + "address": "105, Caedmon Hall, Headingley Campus", + "phone_number": "0113 81 28608", + "email_address": "C.Schreuders@leedsbeckett.ac.uk", + "username": "zschreuders", + "password": "" + }, + { + "name": "Dr. Maurice Calvert", + "address": "117, Caedmon, Headingley Campus", + "phone_number": "0113 81 27429", + "email_address": "M.Calvert@leedsbeckett.ac.uk", + "username": "mcalvert", + "password": "" + }, + { + "name": "Dr. John Elliott", + "address": "108, Caedmon, Headingley Campus", + "phone_number": "0113 81 27379", + "email_address": "J.Elliott@leedsbeckett.ac.uk", + "username": "jelliott", + "password": "" + } + ], + "product_name": "University Education", + "intro_paragraph": [ + "Computer forensics involves the analysis of digital devices such as hard drives to identify and investigate their contents. Computer security involves using knowledge of computer systems and networks to protect businesses and users from malicious attacks.", + "This course combines these two fields of national importance and will teach you practical investigative and 'hacking' techniques. You will develop the skills to undertake rigorous forensic analysis and implement robust security mechanisms.", + "This is a hands-on course where you will learn through doing, gaining an in-depth knowledge of how to hack a computer to be able to protect it. You will learn where a computer hides data and how to recover information from a device." + ] +} \ No newline at end of file diff --git a/lib/resources/structured_content/lbu_law.json b/lib/resources/structured_content/lbu_law.json new file mode 100644 index 000000000..6584f7769 --- /dev/null +++ b/lib/resources/structured_content/lbu_law.json @@ -0,0 +1,48 @@ +{ + "business_name": "Leeds Beckett- Leeds Law School", + "business_motto": "", + "business_address": "City Campus, Leeds LS1 3HE", + "domain": "leedsbeckett.ac.uk", + "office_telephone": "0113 81 23000", + "office_email": "study@leedsbeckett.ac.uk", + "industry": "Higher Education", + "manager": { + "name": "Deveral Capps", + "address": "306, Portland Building, City Campus", + "phone_number": "0113 81 26085", + "email_address": "d.capps@leedsbeckett.ac.uk", + "username": "d_capps", + "password": "" + }, + "employees": [ + { + "name": "Dr. Simon Hale-Ross", + "address": "306, Portland Building, City Campus", + "phone_number": "0113 8129526", + "email_address": "S.Haleross@leedsbeckett.ac.uk", + "username": "s_haleross", + "password": "" + }, + { + "name": "Professor Simon Gardiner", + "address": "204, Rose Bowl, City Campus", + "phone_number": "0113 81 26414", + "email_address": "S.Gardiner@leedsbeckett.ac.uk", + "username": "s_gardiner", + "password": "" + }, + { + "name": "Dr. Jessica Guth", + "address": "306, Portland Building, City Campus", + "phone_number": "0113 81 26403", + "email_address": "J.Guth@leedsbeckett.ac.uk", + "username": "j_guth", + "password": "" + } + ], + "product_name": "University Education", + "intro_paragraph": [ + "Our Law School sits in the heart of the great city of Leeds, the most important legal centre outside London and home to over 180 law firms employing in excess of 8,000 professionals. It is perfectly placed to ensure all our undergraduate, postgraduate, full and part-time students are able to mine the wealth of practical experience and employment opportunities available on our doorstep.", + "With state-of-the-art facilities, mentoring and career development opportunities, placements and a courtroom, students who choose Leeds Law School can expect a successful career founded on high calibre, practical teaching. We offer a broad variety of courses including our LLB, LLM Legal Practice (incorporating the LPC), LLM Qualifying Law Degree (incorporating the GDL) and LLM International Business Law, and each aims to give our graduates the enthusiasm, sharpness of mind and practical tools to thrive in competitive and fast-paced professional environments." + ] +} \ No newline at end of file diff --git a/lib/resources/structured_content/lbu_music.json b/lib/resources/structured_content/lbu_music.json new file mode 100644 index 000000000..093247038 --- /dev/null +++ b/lib/resources/structured_content/lbu_music.json @@ -0,0 +1,47 @@ +{ + "business_name": "Leeds Beckett- Music and Performing Arts", + "business_motto": "", + "business_address": "43 Church Wood Ave, Leeds LS16 5LF", + "domain": "leedsbeckett.ac.uk", + "office_telephone": "0113 81 23000", + "office_email": "study@leedsbeckett.ac.uk", + "industry": "Higher Education", + "manager": { + "name": "Dr Richard Stevens", + "address": "209, Caedmon, Headingley Campus", + "phone_number": "0113 81 23690", + "email_address": "R.C.Stevens@leedsbeckett.ac.uk", + "username": "r_stevens", + "password": "" + }, + "employees": [ + { + "name": "Dr. Laura Griffiths", + "address": "Reception, Priestley Hall, Headingley Campus", + "phone_number": "n/a", + "email_address": "Laura.Griffiths@leedsbeckett.ac.uk", + "username": "l_griffiths", + "password": "" + }, + { + "name": "Carl Flattery", + "address": "104, Caedmon, Headingley Campus", + "phone_number": "0113 81 27372", + "email_address": "C.Flattery@leedsbeckett.ac.uk", + "username": "c_flattery", + "password": "" + }, + { + "name": "Sam Nicholls", + "address": "212, Caedmon, Headingley Campus", + "phone_number": "0113 81 23726", + "email_address": "S.Nicholls@leedsbeckett.ac.uk", + "username": "s_nicholls", + "password": "" + } + ], + "product_name": "University Education", + "intro_paragraph": [ + "The School of Film, Music & Performing Arts fosters a culture of creation and participation. We are proud shapers of, and contributors to, the cultural life of this great Northern city – a city that is the original birthplace of film. We nurture the arts pioneers of the future: influencers who will not just reflect the outside world, but impact upon it." + ] +} \ No newline at end of file diff --git a/lib/resources/structured_content/medical.json b/lib/resources/structured_content/medical.json new file mode 100644 index 000000000..cf6f42d38 --- /dev/null +++ b/lib/resources/structured_content/medical.json @@ -0,0 +1,48 @@ +{ + "business_name": "Yorkshire Personal Health", + "business_motto": "We'll have you as good as new in no time.", + "business_address": "159 Longlands St, Bradford BD1 2PX", + "domain": "yorkspersonalhealth.co.uk", + "office_telephone": "01274 200700", + "office_email": "info@yorkspersonalhealth.co.uk", + "industry": "Medical Services", + "manager": { + "name": "Angela Dickinson", + "address": "76103 Joshuah Path, Port Magali, Cambridgeshire, R1 1TR", + "phone_number": "01274 200700 ext 100", + "email_address": "a.dickinson@yorkspersonalhealth.co.uk", + "username": "dickinson_a", + "password": "" + }, + "employees": [ + { + "name": "Abdullah Carroll", + "address": "Office A, 160 Longlands St, Bradford BD1 2PX", + "phone_number": "01274 200700 ext 101", + "email_address": "a.carroll@yorkspersonalhealth.co.uk", + "username": "carroll_a", + "password": "" + }, + { + "name": "Annie Williamson", + "address": "Office B, 160 Longlands St, Bradford BD1 2PX", + "phone_number": "01274 200700 ext 103", + "email_address": "a.williamson@yorkspersonalhealth.co.uk", + "username": "williamson_a", + "password": "" + }, + { + "name": "Jammie Marks", + "address": "Office B, 160 Longlands St, Bradford BD1 2PX", + "phone_number": "01274 200700 ext 110", + "email_address": "j.marks@yorkspersonalhealth.co.uk", + "username": "marks_j", + "password": "" + } + ], + "product_name": "Check up", + "intro_paragraph": [ + "A health assessment is more than a check up. It can be the start of a journey towards better health.", + "We use our health expertise to build a clear picture of where your current health is and identify potential future health risks. After your health assessment, we’ll give you guidance and support to help you become healthier today and in the future." + ] +} \ No newline at end of file From db3a4697310065aed3e1c1ffc43610d09eb2584c Mon Sep 17 00:00:00 2001 From: ts Date: Tue, 6 Feb 2018 17:01:45 +0000 Subject: [PATCH 17/24] pizza.json --- .../structured_content/pizza_shop.json | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lib/resources/structured_content/pizza_shop.json diff --git a/lib/resources/structured_content/pizza_shop.json b/lib/resources/structured_content/pizza_shop.json new file mode 100644 index 000000000..fcc3f49b6 --- /dev/null +++ b/lib/resources/structured_content/pizza_shop.json @@ -0,0 +1,48 @@ +{ + "business_name": "Speedy Pizzas", + "business_motto": "Pizza done quick.", + "business_address": "195 Headingley Lane, Headingley, Leeds, LS6 1BN", + "domain": "speedypizzas.co.uk", + "office_telephone": "0113 123 3214", + "office_email": "info@speedypizzas.co.uk", + "industry": "Food", + "manager": { + "name": "David Sand", + "address": "195 Headingley Lane, Headingley, Leeds, LS6 1BN", + "phone_number": "07879 635412", + "email_address": "dave@speedypizzas.co.uk", + "username": "d_sand", + "password": "" + }, + "employees": [ + { + "name": "Cydney Hermann", + "address": "195 Headingley Lane, Headingley, Leeds, LS6 1BN", + "phone_number": "0113 123 3214", + "email_address": "cydney@speedypizzas.co.uk", + "username": "c_hermann", + "password": "" + }, + { + "name": "Lori Marshall", + "address": "195 Headingley Lane, Headingley, Leeds, LS6 1BN", + "phone_number": "0113 123 3214", + "email_address": "lori@speedypizzas.co.uk", + "username": "l_marshall", + "password": "" + }, + { + "name": "Andrea Martinez", + "address": "195 Headingley Lane, Headingley, Leeds, LS6 1BN", + "phone_number": "0113 123 3214", + "email_address": "andrea@speedypizzas.co.uk", + "username": "a_martinez", + "password": "" + } + ], + "product_name": "Pizza", + "intro_paragraph": [ + "Welcome to speedy pizzas. Piping hot food either in store or delivered to your door. Pizza takeaway, parmesan, kebabs and much more.", + "We are based in the centre of Headingley on Headingley lane and will deliver up to 3 miles for free, £1 per additional mile. Red hot pizza on delivery or your money back." + ] +} \ No newline at end of file From 7ea8c67925d91482b4ae5912baeeae3126861456 Mon Sep 17 00:00:00 2001 From: thomashaw Date: Tue, 6 Feb 2018 21:35:13 +0000 Subject: [PATCH 18/24] website improvements wip --- .../structured_content/json_organisations | 2 - .../{ => organisations}/bakery.json | 0 .../{ => organisations}/bank.json | 0 .../{ => organisations}/fitness.json | 0 .../{ => organisations}/it_solutions.json | 0 .../organisations/json_organisations | 9 + .../lbu_forensics_security.json | 0 .../{ => organisations}/lbu_law.json | 0 .../{ => organisations}/lbu_music.json | 0 .../{ => organisations}/medical.json | 0 .../{ => organisations}/organisation.json | 0 .../{ => organisations}/pizza_shop.json | 0 .../files/themes/cerulean.min.css | 9194 +++++++++++++++++ .../files/themes/cyborg.min.css | 12 + .../files/themes/journal.min.css | 12 + .../files/themes/sketchy.min.css | 12 + .../files/themes/solar.min.css | 12 + .../files/themes/superhero.min.css | 12 + .../files/themes/united.min.css | 12 + .../manifests/install.pp | 7 + .../templates/acceptable_use_page.html.erb | 2 +- .../templates/contact.html.erb | 60 +- .../templates/default.css.erb | 10 - .../templates/index.html.erb | 3 +- .../templates/intranet_index.html.erb | 2 +- .../security_audit_remit_page.html.erb | 2 +- .../templates/subtemplates/footer.html.erb | 7 - .../templates/subtemplates/header.html.erb | 3 +- .../subtemplates/main_container.html.erb | 2 +- .../templates/subtemplates/navbar.html.erb | 12 +- .../templates/subtemplates/scripts.html.erb | 5 + 31 files changed, 9331 insertions(+), 61 deletions(-) delete mode 100644 lib/resources/structured_content/json_organisations rename lib/resources/structured_content/{ => organisations}/bakery.json (100%) rename lib/resources/structured_content/{ => organisations}/bank.json (100%) rename lib/resources/structured_content/{ => organisations}/fitness.json (100%) rename lib/resources/structured_content/{ => organisations}/it_solutions.json (100%) create mode 100644 lib/resources/structured_content/organisations/json_organisations rename lib/resources/structured_content/{ => organisations}/lbu_forensics_security.json (100%) rename lib/resources/structured_content/{ => organisations}/lbu_law.json (100%) rename lib/resources/structured_content/{ => organisations}/lbu_music.json (100%) rename lib/resources/structured_content/{ => organisations}/medical.json (100%) rename lib/resources/structured_content/{ => organisations}/organisation.json (100%) rename lib/resources/structured_content/{ => organisations}/pizza_shop.json (100%) create mode 100644 modules/services/unix/http/parameterised_website/files/themes/cerulean.min.css create mode 100644 modules/services/unix/http/parameterised_website/files/themes/cyborg.min.css create mode 100644 modules/services/unix/http/parameterised_website/files/themes/journal.min.css create mode 100644 modules/services/unix/http/parameterised_website/files/themes/sketchy.min.css create mode 100644 modules/services/unix/http/parameterised_website/files/themes/solar.min.css create mode 100644 modules/services/unix/http/parameterised_website/files/themes/superhero.min.css create mode 100644 modules/services/unix/http/parameterised_website/files/themes/united.min.css delete mode 100644 modules/services/unix/http/parameterised_website/templates/subtemplates/footer.html.erb create mode 100644 modules/services/unix/http/parameterised_website/templates/subtemplates/scripts.html.erb diff --git a/lib/resources/structured_content/json_organisations b/lib/resources/structured_content/json_organisations deleted file mode 100644 index 2f32ffffc..000000000 --- a/lib/resources/structured_content/json_organisations +++ /dev/null @@ -1,2 +0,0 @@ -{"business_name":"Ebert-Hegmann","business_motto":"Total holistic monitoring","business_address":"1494 Hagenes Square, East Samir, North Dakota, 26077","domain":"sandra_coleman.com","office_telephone":"0500 870390","office_email":"nettie_doyle@kaulke.net","industry":"Recreational Goods, Other","manager":{"name":"Heather Schmidt","address":"800 Bogisich Avenue, Oswaldohaven, Highlands and Islands, Z9 6NB","phone_number":"07836 581948","email_address":"rosalinda@hillsmoore.name","username":"short-channel","password":"joshua"},"employees":[{"name":"Zion Jacobson","address":"104 Cole Square, North Kamren, Kent, WS8 3NL","phone_number":"07880 057670","email_address":"charlotte.wyman@colerunolfsdottir.org","username":"spooky-hall","password":"UeYtdks7bM6t5ZID38h"},{"name":"Jonathan Ray","address":"6444 Jackson Path, Lake Libbieburgh, Hertfordshire, R3A 0LY","phone_number":"(270) 317-5032","email_address":"vivienne@becker.net","username":"scientific_bells","password":"mona"},{"name":"Virginia Sullivan","address":"51413 Roberts Trail, Dinoberg, Florida, 86873","phone_number":"07826 576277","email_address":"dicki-jarret@eichmann-feest-and-towne.org","username":"typicalcoil","password":"letmein"}],"product_name":"Stim","intro_paragraph":["Ex ut excepturi consequatur. Ut est nihil fugiat veritatis aut voluptas. Ipsum rerum omnis rerum.Rerum ipsam et. Et ipsum ut. Illum ullam officiis corrupti ducimus sed sit dolor.Libero iusto amet. Perspiciatis quia qui ut dolorem. Ut et sit rerum. Dignissimos quaerat dolores ad et praesentium nemo. Et reiciendis est.Illum facere praesentium mollitia natus. Ullam velit modi vel sed. Consequuntur eum animi facilis dolores tempore. A corrupti nulla aut et.Ea asperiores impedit pariatur. Deserunt explicabo cupiditate quasi animi quidem. Ipsam non et explicabo tempora et facere eos. Voluptatem suscipit nulla non alias asperiores culpa non."]} -{"business_name":"Davis, Ortiz and Lang","business_motto":"Centralized next generation archive","business_address":"3180 Kirlin Roads, East Darrickfurt, Shropshire, ZH7B 9UB","domain":"gary_clark.co.uk","office_telephone":"0181 101 2503","office_email":"garry_huels@macgyverkeler.biz","industry":"Electronics Stores","manager":{"name":"Tyree Wilkinson","address":"39570 Lucy Center, Maiyamouth, Rhode Island, 62120","phone_number":"0800 327525","email_address":"sanford-karlie@welch-bogan-and-swaniawski.co.uk","username":"unable-note","password":"waste15"},"employees":[{"name":"Aurelia MacGyver","address":"4848 Cummerata Haven, New Faustino, Georgia, 24461","phone_number":"484-475-9067","email_address":"phd-jettie-johns@brekke-group.org","username":"eatabledrum","password":"XK7W2lUQ5IyL9RG7KAg"},{"name":"Laura Hansen","address":"79260 Purdy Inlet, New Flavieburgh, Shropshire, ZE27 2NJ","phone_number":"0121 088 7581","email_address":"nick_hilll@hoppehayes.com","username":"idioticstomach","password":"petSmiMQTPFgNsHoiIcb"},{"name":"Louis Edwards","address":"79118 Ratke Heights, Lake Boville, County Down, W2N 3AQ","phone_number":"0131 129 1078","email_address":"jarvis-halvorson@ankunding-parker.com","username":"guiltless_string","password":"crowd32"}],"product_name":"Tres-Zap","intro_paragraph":["Impedit ipsa aut omnis et aut. Blanditiis non et assumenda. Molestias porro ut id aut facere praesentium beatae.Enim aliquam totam commodi aspernatur. Non fuga dolorem voluptas qui. Nulla aliquam iusto enim rem non laborum voluptas. Vitae veritatis sint maiores.Animi est perspiciatis aut amet placeat corporis dolorem. Nisi eos odit eius. Aut accusamus magnam aut consequatur mollitia ea. Illum officia non voluptatum fuga quasi.Est et eos. Et quia aut consequatur neque. Deleniti culpa aliquam excepturi.Sint at est non harum porro. Quo beatae facilis fugiat occaecati hic aut. Laudantium aut cumque quia tempora."]} \ No newline at end of file diff --git a/lib/resources/structured_content/bakery.json b/lib/resources/structured_content/organisations/bakery.json similarity index 100% rename from lib/resources/structured_content/bakery.json rename to lib/resources/structured_content/organisations/bakery.json diff --git a/lib/resources/structured_content/bank.json b/lib/resources/structured_content/organisations/bank.json similarity index 100% rename from lib/resources/structured_content/bank.json rename to lib/resources/structured_content/organisations/bank.json diff --git a/lib/resources/structured_content/fitness.json b/lib/resources/structured_content/organisations/fitness.json similarity index 100% rename from lib/resources/structured_content/fitness.json rename to lib/resources/structured_content/organisations/fitness.json diff --git a/lib/resources/structured_content/it_solutions.json b/lib/resources/structured_content/organisations/it_solutions.json similarity index 100% rename from lib/resources/structured_content/it_solutions.json rename to lib/resources/structured_content/organisations/it_solutions.json diff --git a/lib/resources/structured_content/organisations/json_organisations b/lib/resources/structured_content/organisations/json_organisations new file mode 100644 index 000000000..c90d9def8 --- /dev/null +++ b/lib/resources/structured_content/organisations/json_organisations @@ -0,0 +1,9 @@ +{"business_name":"Artisan Bakery","business_motto":"The loaves are in the oven.","business_address":"1080 Headingley Lane, Headingley, Leeds, LS6 1BN","domain":"artisan-bakery.co.uk","office_telephone":"0113 222 1080","office_email":"orders@artisan-bakery.co.uk","industry":"Bakers","manager":{"name":"Maxie Durgan","address":"1080 Headingley Lane, Headingley, Leeds, LS6 1BN","phone_number":"0113 222 1080","email_address":"maxie@artisan-bakery.co.uk","username":"maxie","password":""},"employees":[{"name":"Matthew Riley","address":"1080 Headingley Lane, Headingley, Leeds, LS6 1BN","phone_number":"0113 222 1080","email_address":"matt@artisan-bakery.co.uk","username":"matt","password":""},{"name":"Emelie Lowe","address":"1080 Headingley Lane, Headingley, Leeds, LS6 1BN","phone_number":"0113 222 1080","email_address":"emelie@artisan-bakery.co.uk","username":"emelie","password":""},{"name":"Antonio Durgan","address":"1080 Headingley Lane, Headingley, Leeds, LS6 1BN","phone_number":"0113 222 1080","email_address":"antonio@artisan-bakery.co.uk","username":"antonio","password":""}],"product_name":"Baked goods","intro_paragraph":["Finest bakery in Headingley since 1900. Baked fresh daily. Bread loaves, teacakes, sweet and savoury treats. We are open from 9 am til 6 pm, every day except for bank holidays."]} +{"business_name":"Northern Banking","business_motto":"We'll keep your money safe!","business_address":"123 The Headrow, Leeds, LS1 5RD","domain":"northernbanking.co.uk","office_telephone":"0113 000 0123","office_email":"enquiries@northernbanking.co.uk","industry":"Finance","manager":{"name":"Heather Schmidt","address":"800 Bogisich Avenue, Oswaldohaven, Leeds, LS9 6NB","phone_number":"07836 581948","email_address":"h.schmidt@northernbanking.co.uk","username":"h_schmidt","password":""},"employees":[{"name":"Zion Jacobson","address":"104 Cole Square, ","phone_number":"07880 057670","email_address":"z.jacobson@northernbanking.co.uk","username":"z_jacobson","password":""},{"name":"Jonathan Ray","address":"644 Jackson Path, Leeds, LS2 4AJ","phone_number":"07893 001623","email_address":"j.ray@northernbanking.co.uk","username":"j_ray","password":""},{"name":"Virginia Sullivan","address":"23 Jane Street, Harrogate, HG1 4DJ","phone_number":"07826 576277","email_address":"v.sullivan@northernbanking.co.uk","username":"v_sullivan","password":""}],"product_name":"Financial Services","intro_paragraph":["About Northern Bank","With roots back to its establishment in Huddersfield, West Yorkshire in 1805. Northern bank has a strong personal customer base and business banking capability though a UK-wide network. Northern Bank is a trading name of Big Bank PLC."]} +{"business_name":"The Yorkshire Fitness Company","business_motto":"Get thi sen down't gym!","business_address":"15 Sheepscar Court, Leeds LS7 2BB","domain":"yorkshirefitco.co.uk","office_telephone":"0113 026 9999","office_email":"office@yorkshirefitco.co.uk","industry":"Health and Fitness","manager":{"name":"Jerry Rivera","address":"15 Sheepscar Court, Leeds LS7 2BB","phone_number":"0113 026 9999","email_address":"jerry.rivera@yorkshirefitco.co.uk","username":"jerry_rivera","password":""},"employees":[{"name":"Immanuel Bahringer IV","address":"15 Sheepscar Court, Leeds LS7 2BB","phone_number":"07688 112479","email_address":"immanuel.bahringer.iv@yorkshirefitco.co.uk","username":"immanuel_bahringer_iv","password":""},{"name":"Anne Hunter","address":"15 Sheepscar Court, Leeds LS7 2BB","phone_number":"07791 179177","email_address":"anne.hunter@yorkshirefitco.co.uk","username":"anne_hunter","password":""},{"name":"Katelin Langworth","address":"15 Sheepscar Court, Leeds LS7 2BB","phone_number":"07550 561978","email_address":"katelin.langworth@yorkshirefitco.co.uk","username":"katelin_langworth","password":""}],"product_name":"","intro_paragraph":["Experience Yorkshire's leading health and fitness club in the not far from the city centre. Established in 1990 The Yorkshire Fitness Company is committed to getting you the results you want.","If you like classes, the gym or a combo of both, our dedicated professional team of coaches & teachers are always available to motivate you and guide you towards your goals."]} +{"business_name":"Abacus Technology Solutions","business_motto":"Solving your problems so you don't have to.","business_address":"Unit 12, Lincoln St, Huddersfield HD1 6RX","domain":"abacus-technology.co.uk","office_telephone":"01484 850963","office_email":"office@abacus-technology.co.uk","industry":"IT Services","manager":{"name":"Ellie Bosco","address":"Office 1, Unit 12, Lincoln St, Huddersfield HD1 6RX","phone_number":"07528 347828","email_address":"e.bosco@abacus-technology.co.uk","username":"ebosco","password":""},"employees":[{"name":"Keara Harris","address":"Office 2, Unit 12, Lincoln St, Huddersfield HD1 6RX","phone_number":"07674 358645","email_address":"k.harris@abacus-technology.co.uk","username":"kharris","password":""},{"name":"Janessa Rempel","address":"Office 2, Unit 12, Lincoln St, Huddersfield HD1 6RX","phone_number":"07644 118595","email_address":"j.rempel@abacus-technology.co.uk","username":"jrempel","password":""},{"name":"Russell Ramirez","address":"Office 3, Unit 12, Lincoln St, Huddersfield HD1 6RX","phone_number":"01484 850963","email_address":"r.ramirez@abacus-technology.co.uk","username":"rramirez","password":""}],"product_name":"IT Solutions","intro_paragraph":["Providers of cloud services, backups, data recovery, hardware, off-the-shelf and bespoke software. 24/7 technical support available. Custom design and installation based on your companies needs!"]} +{"business_name":"Leeds Beckett- Computer Forensics and Security","business_motto":"","business_address":"43 Church Wood Ave, Leeds LS16 5LF","domain":"leedsbeckett.ac.uk","office_telephone":"0113 81 23000","office_email":"study@leedsbeckett.ac.uk","industry":"Higher Education","manager":{"name":"Emlyn Butterfield","address":"115, Caedmon Hall, Headingley Campus","phone_number":"0113 81 24440","email_address":"E.Butterfield@leedsbeckett.ac.uk","username":"ebutterfield","password":""},"employees":[{"name":"Dr. Z. Cliffe Schreuders","address":"105, Caedmon Hall, Headingley Campus","phone_number":"0113 81 28608","email_address":"C.Schreuders@leedsbeckett.ac.uk","username":"zschreuders","password":""},{"name":"Dr. Maurice Calvert","address":"117, Caedmon, Headingley Campus","phone_number":"0113 81 27429","email_address":"M.Calvert@leedsbeckett.ac.uk","username":"mcalvert","password":""},{"name":"Dr. John Elliott","address":"108, Caedmon, Headingley Campus","phone_number":"0113 81 27379","email_address":"J.Elliott@leedsbeckett.ac.uk","username":"jelliott","password":""}],"product_name":"University Education","intro_paragraph":["Computer forensics involves the analysis of digital devices such as hard drives to identify and investigate their contents. Computer security involves using knowledge of computer systems and networks to protect businesses and users from malicious attacks.","This course combines these two fields of national importance and will teach you practical investigative and 'hacking' techniques. You will develop the skills to undertake rigorous forensic analysis and implement robust security mechanisms.","This is a hands-on course where you will learn through doing, gaining an in-depth knowledge of how to hack a computer to be able to protect it. You will learn where a computer hides data and how to recover information from a device."]} +{"business_name":"Leeds Beckett- Leeds Law School","business_motto":"","business_address":"City Campus, Leeds LS1 3HE","domain":"leedsbeckett.ac.uk","office_telephone":"0113 81 23000","office_email":"study@leedsbeckett.ac.uk","industry":"Higher Education","manager":{"name":"Deveral Capps","address":"306, Portland Building, City Campus","phone_number":"0113 81 26085","email_address":"d.capps@leedsbeckett.ac.uk","username":"d_capps","password":""},"employees":[{"name":"Dr. Simon Hale-Ross","address":"306, Portland Building, City Campus","phone_number":"0113 8129526","email_address":"S.Haleross@leedsbeckett.ac.uk","username":"s_haleross","password":""},{"name":"Professor Simon Gardiner","address":"204, Rose Bowl, City Campus","phone_number":"0113 81 26414","email_address":"S.Gardiner@leedsbeckett.ac.uk","username":"s_gardiner","password":""},{"name":"Dr. Jessica Guth","address":"306, Portland Building, City Campus","phone_number":"0113 81 26403","email_address":"J.Guth@leedsbeckett.ac.uk","username":"j_guth","password":""}],"product_name":"University Education","intro_paragraph":["Our Law School sits in the heart of the great city of Leeds, the most important legal centre outside London and home to over 180 law firms employing in excess of 8,000 professionals. It is perfectly placed to ensure all our undergraduate, postgraduate, full and part-time students are able to mine the wealth of practical experience and employment opportunities available on our doorstep.","With state-of-the-art facilities, mentoring and career development opportunities, placements and a courtroom, students who choose Leeds Law School can expect a successful career founded on high calibre, practical teaching. We offer a broad variety of courses including our LLB, LLM Legal Practice (incorporating the LPC), LLM Qualifying Law Degree (incorporating the GDL) and LLM International Business Law, and each aims to give our graduates the enthusiasm, sharpness of mind and practical tools to thrive in competitive and fast-paced professional environments."]} +{"business_name":"Leeds Beckett- Music and Performing Arts","business_motto":"","business_address":"43 Church Wood Ave, Leeds LS16 5LF","domain":"leedsbeckett.ac.uk","office_telephone":"0113 81 23000","office_email":"study@leedsbeckett.ac.uk","industry":"Higher Education","manager":{"name":"Dr Richard Stevens","address":"209, Caedmon, Headingley Campus","phone_number":"0113 81 23690","email_address":"R.C.Stevens@leedsbeckett.ac.uk","username":"r_stevens","password":""},"employees":[{"name":"Dr. Laura Griffiths","address":"Reception, Priestley Hall, Headingley Campus","phone_number":"n/a","email_address":"Laura.Griffiths@leedsbeckett.ac.uk","username":"l_griffiths","password":""},{"name":"Carl Flattery","address":"104, Caedmon, Headingley Campus","phone_number":"0113 81 27372","email_address":"C.Flattery@leedsbeckett.ac.uk","username":"c_flattery","password":""},{"name":"Sam Nicholls","address":"212, Caedmon, Headingley Campus","phone_number":"0113 81 23726","email_address":"S.Nicholls@leedsbeckett.ac.uk","username":"s_nicholls","password":""}],"product_name":"University Education","intro_paragraph":["The School of Film, Music & Performing Arts fosters a culture of creation and participation. We are proud shapers of, and contributors to, the cultural life of this great Northern city – a city that is the original birthplace of film. We nurture the arts pioneers of the future: influencers who will not just reflect the outside world, but impact upon it."]} +{"business_name":"Yorkshire Personal Health","business_motto":"We'll have you as good as new in no time.","business_address":"159 Longlands St, Bradford BD1 2PX","domain":"yorkspersonalhealth.co.uk","office_telephone":"01274 200700","office_email":"info@yorkspersonalhealth.co.uk","industry":"Medical Services","manager":{"name":"Angela Dickinson","address":"76103 Joshuah Path, Port Magali, Cambridgeshire, R1 1TR","phone_number":"01274 200700 ext 100","email_address":"a.dickinson@yorkspersonalhealth.co.uk","username":"dickinson_a","password":""},"employees":[{"name":"Abdullah Carroll","address":"Office A, 160 Longlands St, Bradford BD1 2PX","phone_number":"01274 200700 ext 101","email_address":"a.carroll@yorkspersonalhealth.co.uk","username":"carroll_a","password":""},{"name":"Annie Williamson","address":"Office B, 160 Longlands St, Bradford BD1 2PX","phone_number":"01274 200700 ext 103","email_address":"a.williamson@yorkspersonalhealth.co.uk","username":"williamson_a","password":""},{"name":"Jammie Marks","address":"Office B, 160 Longlands St, Bradford BD1 2PX","phone_number":"01274 200700 ext 110","email_address":"j.marks@yorkspersonalhealth.co.uk","username":"marks_j","password":""}],"product_name":"Check up","intro_paragraph":["A health assessment is more than a check up. It can be the start of a journey towards better health.","We use our health expertise to build a clear picture of where your current health is and identify potential future health risks. After your health assessment, we’ll give you guidance and support to help you become healthier today and in the future."]} +{"business_name":"Speedy Pizzas","business_motto":"Pizza done quick.","business_address":"195 Headingley Lane, Headingley, Leeds, LS6 1BN","domain":"speedypizzas.co.uk","office_telephone":"0113 123 3214","office_email":"info@speedypizzas.co.uk","industry":"Food","manager":{"name":"David Sand","address":"195 Headingley Lane, Headingley, Leeds, LS6 1BN","phone_number":"07879 635412","email_address":"dave@speedypizzas.co.uk","username":"d_sand","password":""},"employees":[{"name":"Cydney Hermann","address":"195 Headingley Lane, Headingley, Leeds, LS6 1BN","phone_number":"0113 123 3214","email_address":"cydney@speedypizzas.co.uk","username":"c_hermann","password":""},{"name":"Lori Marshall","address":"195 Headingley Lane, Headingley, Leeds, LS6 1BN","phone_number":"0113 123 3214","email_address":"lori@speedypizzas.co.uk","username":"l_marshall","password":""},{"name":"Andrea Martinez","address":"195 Headingley Lane, Headingley, Leeds, LS6 1BN","phone_number":"0113 123 3214","email_address":"andrea@speedypizzas.co.uk","username":"a_martinez","password":""}],"product_name":"Pizza","intro_paragraph":["Welcome to speedy pizzas. Piping hot food either in store or delivered to your door. Pizza takeaway, parmesan, kebabs and much more.","We are based in the centre of Headingley on Headingley lane and will deliver up to 3 miles for free, £1 per additional mile. Red hot pizza on delivery or your money back."]} diff --git a/lib/resources/structured_content/lbu_forensics_security.json b/lib/resources/structured_content/organisations/lbu_forensics_security.json similarity index 100% rename from lib/resources/structured_content/lbu_forensics_security.json rename to lib/resources/structured_content/organisations/lbu_forensics_security.json diff --git a/lib/resources/structured_content/lbu_law.json b/lib/resources/structured_content/organisations/lbu_law.json similarity index 100% rename from lib/resources/structured_content/lbu_law.json rename to lib/resources/structured_content/organisations/lbu_law.json diff --git a/lib/resources/structured_content/lbu_music.json b/lib/resources/structured_content/organisations/lbu_music.json similarity index 100% rename from lib/resources/structured_content/lbu_music.json rename to lib/resources/structured_content/organisations/lbu_music.json diff --git a/lib/resources/structured_content/medical.json b/lib/resources/structured_content/organisations/medical.json similarity index 100% rename from lib/resources/structured_content/medical.json rename to lib/resources/structured_content/organisations/medical.json diff --git a/lib/resources/structured_content/organisation.json b/lib/resources/structured_content/organisations/organisation.json similarity index 100% rename from lib/resources/structured_content/organisation.json rename to lib/resources/structured_content/organisations/organisation.json diff --git a/lib/resources/structured_content/pizza_shop.json b/lib/resources/structured_content/organisations/pizza_shop.json similarity index 100% rename from lib/resources/structured_content/pizza_shop.json rename to lib/resources/structured_content/organisations/pizza_shop.json diff --git a/modules/services/unix/http/parameterised_website/files/themes/cerulean.min.css b/modules/services/unix/http/parameterised_website/files/themes/cerulean.min.css new file mode 100644 index 000000000..9b41f066d --- /dev/null +++ b/modules/services/unix/http/parameterised_website/files/themes/cerulean.min.css @@ -0,0 +1,9194 @@ +/*! + * Bootswatch v4.0.0 + * Homepage: https://bootswatch.com + * Copyright 2012-2018 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #033C73; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #C71C22; + --orange: #fd7e14; + --yellow: #DD5600; + --green: #73A839; + --teal: #20c997; + --cyan: #2FA4E7; + --white: #fff; + --gray: #868e96; + --gray-dark: #343a40; + --primary: #2FA4E7; + --secondary: #e9ecef; + --success: #73A839; + --info: #033C73; + --warning: #DD5600; + --danger: #C71C22; + --light: #f8f9fa; + --dark: #343a40; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace +} + +*, *::before, *::after { + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent +} + +@-ms-viewport { + width: device-width +} + +article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block +} + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #868e96; + text-align: left; + background-color: #fff +} + +[tabindex="-1"]:focus { + outline: 0 !important +} + +hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; + overflow: visible +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem +} + +p { + margin-top: 0; + margin-bottom: 1rem +} + +abbr[title], abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0 +} + +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: 700 +} + +dd { + margin-bottom: .5rem; + margin-left: 0 +} + +blockquote { + margin: 0 0 1rem +} + +dfn { + font-style: italic +} + +b, strong { + font-weight: bolder +} + +small { + font-size: 80% +} + +sub, sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline +} + +sub { + bottom: -.25em +} + +sup { + top: -.5em +} + +a { + color: #2FA4E7; + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects +} + +a:hover { + color: #157ab5; + text-decoration: underline +} + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none +} + +a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none +} + +a:not([href]):not([tabindex]):focus { + outline: 0 +} + +pre, code, kbd, samp { + font-family: monospace, monospace; + font-size: 1em +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + -ms-overflow-style: scrollbar +} + +figure { + margin: 0 0 1rem +} + +img { + vertical-align: middle; + border-style: none +} + +svg:not(:root) { + overflow: hidden +} + +table { + border-collapse: collapse +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #868e96; + text-align: left; + caption-side: bottom +} + +th { + text-align: inherit +} + +label { + display: inline-block; + margin-bottom: .5rem +} + +button { + border-radius: 0 +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color +} + +input, button, select, optgroup, textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit +} + +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 { + padding: 0; + border-style: none +} + +input[type="radio"], input[type="checkbox"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0 +} + +input[type="date"], input[type="time"], input[type="datetime-local"], input[type="month"] { + -webkit-appearance: listbox +} + +textarea { + overflow: auto; + resize: vertical +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0 +} + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal +} + +progress { + vertical-align: baseline +} + +[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { + height: auto +} + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none +} + +[type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { + -webkit-appearance: none +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button +} + +output { + display: inline-block +} + +summary { + display: list-item; + cursor: pointer +} + +template { + display: none +} + +[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.2; + color: #2FA4E7 +} + +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; + line-height: 1.2 +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2 +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2 +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2 +} + +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: 400 +} + +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: 0.5rem +} + +.initialism { + font-size: 90%; + text-transform: uppercase +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #868e96 +} + +.blockquote-footer::before { + content: "\2014 \00A0" +} + +.img-fluid { + max-width: 100%; + height: auto +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto +} + +.figure { + display: inline-block +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1 +} + +.figure-caption { + font-size: 90%; + color: #868e96 +} + +code, kbd, pre, samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace +} + +code { + font-size: 87.5%; + color: #e83e8c; + word-break: break-word +} + +a > code { + color: inherit +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700 +} + +pre { + display: block; + font-size: 87.5%; + color: #212529 +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll +} + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +@media (min-width: 576px) { + .container { + max-width: 540px + } +} + +@media (min-width: 768px) { + .container { + max-width: 720px + } +} + +@media (min-width: 992px) { + .container { + max-width: 960px + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1140px + } +} + +.container-fluid { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +.row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px +} + +.no-gutters { + margin-right: 0; + margin-left: 0 +} + +.no-gutters > .col, .no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0 +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, .col-auto, .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-sm, .col-sm-auto, .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-md, .col-md-auto, .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-lg, .col-lg-auto, .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, .col-xl, .col-xl-auto { + position: relative; + width: 100%; + min-height: 1px; + padding-right: 15px; + padding-left: 15px +} + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% +} + +.col-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none +} + +.col-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333% +} + +.col-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667% +} + +.col-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% +} + +.col-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333% +} + +.col-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667% +} + +.col-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% +} + +.col-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333% +} + +.col-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667% +} + +.col-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% +} + +.col-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333% +} + +.col-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667% +} + +.col-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% +} + +.order-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1 +} + +.order-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13 +} + +.order-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0 +} + +.order-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1 +} + +.order-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2 +} + +.order-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3 +} + +.order-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4 +} + +.order-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5 +} + +.order-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6 +} + +.order-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7 +} + +.order-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8 +} + +.order-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9 +} + +.order-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10 +} + +.order-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11 +} + +.order-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12 +} + +.offset-1 { + margin-left: 8.3333333333% +} + +.offset-2 { + margin-left: 16.6666666667% +} + +.offset-3 { + margin-left: 25% +} + +.offset-4 { + margin-left: 33.3333333333% +} + +.offset-5 { + margin-left: 41.6666666667% +} + +.offset-6 { + margin-left: 50% +} + +.offset-7 { + margin-left: 58.3333333333% +} + +.offset-8 { + margin-left: 66.6666666667% +} + +.offset-9 { + margin-left: 75% +} + +.offset-10 { + margin-left: 83.3333333333% +} + +.offset-11 { + margin-left: 91.6666666667% +} + +@media (min-width: 576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + + .col-sm-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none + } + + .col-sm-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333% + } + + .col-sm-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667% + } + + .col-sm-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + + .col-sm-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333% + } + + .col-sm-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667% + } + + .col-sm-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + + .col-sm-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333% + } + + .col-sm-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667% + } + + .col-sm-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + + .col-sm-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333% + } + + .col-sm-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667% + } + + .col-sm-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + + .order-sm-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1 + } + + .order-sm-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13 + } + + .order-sm-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0 + } + + .order-sm-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1 + } + + .order-sm-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2 + } + + .order-sm-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3 + } + + .order-sm-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4 + } + + .order-sm-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5 + } + + .order-sm-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6 + } + + .order-sm-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7 + } + + .order-sm-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8 + } + + .order-sm-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9 + } + + .order-sm-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10 + } + + .order-sm-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11 + } + + .order-sm-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12 + } + + .offset-sm-0 { + margin-left: 0 + } + + .offset-sm-1 { + margin-left: 8.3333333333% + } + + .offset-sm-2 { + margin-left: 16.6666666667% + } + + .offset-sm-3 { + margin-left: 25% + } + + .offset-sm-4 { + margin-left: 33.3333333333% + } + + .offset-sm-5 { + margin-left: 41.6666666667% + } + + .offset-sm-6 { + margin-left: 50% + } + + .offset-sm-7 { + margin-left: 58.3333333333% + } + + .offset-sm-8 { + margin-left: 66.6666666667% + } + + .offset-sm-9 { + margin-left: 75% + } + + .offset-sm-10 { + margin-left: 83.3333333333% + } + + .offset-sm-11 { + margin-left: 91.6666666667% + } +} + +@media (min-width: 768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + + .col-md-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none + } + + .col-md-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333% + } + + .col-md-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667% + } + + .col-md-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + + .col-md-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333% + } + + .col-md-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667% + } + + .col-md-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + + .col-md-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333% + } + + .col-md-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667% + } + + .col-md-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + + .col-md-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333% + } + + .col-md-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667% + } + + .col-md-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + + .order-md-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1 + } + + .order-md-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13 + } + + .order-md-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0 + } + + .order-md-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1 + } + + .order-md-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2 + } + + .order-md-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3 + } + + .order-md-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4 + } + + .order-md-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5 + } + + .order-md-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6 + } + + .order-md-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7 + } + + .order-md-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8 + } + + .order-md-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9 + } + + .order-md-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10 + } + + .order-md-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11 + } + + .order-md-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12 + } + + .offset-md-0 { + margin-left: 0 + } + + .offset-md-1 { + margin-left: 8.3333333333% + } + + .offset-md-2 { + margin-left: 16.6666666667% + } + + .offset-md-3 { + margin-left: 25% + } + + .offset-md-4 { + margin-left: 33.3333333333% + } + + .offset-md-5 { + margin-left: 41.6666666667% + } + + .offset-md-6 { + margin-left: 50% + } + + .offset-md-7 { + margin-left: 58.3333333333% + } + + .offset-md-8 { + margin-left: 66.6666666667% + } + + .offset-md-9 { + margin-left: 75% + } + + .offset-md-10 { + margin-left: 83.3333333333% + } + + .offset-md-11 { + margin-left: 91.6666666667% + } +} + +@media (min-width: 992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + + .col-lg-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none + } + + .col-lg-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333% + } + + .col-lg-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667% + } + + .col-lg-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + + .col-lg-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333% + } + + .col-lg-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667% + } + + .col-lg-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + + .col-lg-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333% + } + + .col-lg-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667% + } + + .col-lg-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + + .col-lg-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333% + } + + .col-lg-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667% + } + + .col-lg-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + + .order-lg-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1 + } + + .order-lg-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13 + } + + .order-lg-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0 + } + + .order-lg-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1 + } + + .order-lg-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2 + } + + .order-lg-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3 + } + + .order-lg-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4 + } + + .order-lg-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5 + } + + .order-lg-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6 + } + + .order-lg-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7 + } + + .order-lg-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8 + } + + .order-lg-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9 + } + + .order-lg-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10 + } + + .order-lg-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11 + } + + .order-lg-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12 + } + + .offset-lg-0 { + margin-left: 0 + } + + .offset-lg-1 { + margin-left: 8.3333333333% + } + + .offset-lg-2 { + margin-left: 16.6666666667% + } + + .offset-lg-3 { + margin-left: 25% + } + + .offset-lg-4 { + margin-left: 33.3333333333% + } + + .offset-lg-5 { + margin-left: 41.6666666667% + } + + .offset-lg-6 { + margin-left: 50% + } + + .offset-lg-7 { + margin-left: 58.3333333333% + } + + .offset-lg-8 { + margin-left: 66.6666666667% + } + + .offset-lg-9 { + margin-left: 75% + } + + .offset-lg-10 { + margin-left: 83.3333333333% + } + + .offset-lg-11 { + margin-left: 91.6666666667% + } +} + +@media (min-width: 1200px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100% + } + + .col-xl-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: none + } + + .col-xl-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333% + } + + .col-xl-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667% + } + + .col-xl-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25% + } + + .col-xl-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333% + } + + .col-xl-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667% + } + + .col-xl-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50% + } + + .col-xl-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333% + } + + .col-xl-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667% + } + + .col-xl-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75% + } + + .col-xl-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333% + } + + .col-xl-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667% + } + + .col-xl-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100% + } + + .order-xl-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1 + } + + .order-xl-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13 + } + + .order-xl-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0 + } + + .order-xl-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1 + } + + .order-xl-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2 + } + + .order-xl-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3 + } + + .order-xl-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4 + } + + .order-xl-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5 + } + + .order-xl-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6 + } + + .order-xl-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7 + } + + .order-xl-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8 + } + + .order-xl-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9 + } + + .order-xl-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10 + } + + .order-xl-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11 + } + + .order-xl-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12 + } + + .offset-xl-0 { + margin-left: 0 + } + + .offset-xl-1 { + margin-left: 8.3333333333% + } + + .offset-xl-2 { + margin-left: 16.6666666667% + } + + .offset-xl-3 { + margin-left: 25% + } + + .offset-xl-4 { + margin-left: 33.3333333333% + } + + .offset-xl-5 { + margin-left: 41.6666666667% + } + + .offset-xl-6 { + margin-left: 50% + } + + .offset-xl-7 { + margin-left: 58.3333333333% + } + + .offset-xl-8 { + margin-left: 66.6666666667% + } + + .offset-xl-9 { + margin-left: 75% + } + + .offset-xl-10 { + margin-left: 83.3333333333% + } + + .offset-xl-11 { + margin-left: 91.6666666667% + } +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; + background-color: transparent +} + +.table th, .table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6 +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6 +} + +.table tbody + tbody { + border-top: 2px solid #dee2e6 +} + +.table .table { + background-color: #fff +} + +.table-sm th, .table-sm td { + padding: 0.3rem +} + +.table-bordered { + border: 1px solid #dee2e6 +} + +.table-bordered th, .table-bordered td { + border: 1px solid #dee2e6 +} + +.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-primary, .table-primary > th, .table-primary > td { + background-color: #c5e6f8 +} + +.table-hover .table-primary:hover { + background-color: #aedcf5 +} + +.table-hover .table-primary:hover > td, .table-hover .table-primary:hover > th { + background-color: #aedcf5 +} + +.table-secondary, .table-secondary > th, .table-secondary > td { + background-color: #f9fafb +} + +.table-hover .table-secondary:hover { + background-color: #eaedf1 +} + +.table-hover .table-secondary:hover > td, .table-hover .table-secondary:hover > th { + background-color: #eaedf1 +} + +.table-success, .table-success > th, .table-success > td { + background-color: #d8e7c8 +} + +.table-hover .table-success:hover { + background-color: #cbdfb6 +} + +.table-hover .table-success:hover > td, .table-hover .table-success:hover > th { + background-color: #cbdfb6 +} + +.table-info, .table-info > th, .table-info > td { + background-color: #b8c8d8 +} + +.table-hover .table-info:hover { + background-color: #a8bbcf +} + +.table-hover .table-info:hover > td, .table-hover .table-info:hover > th { + background-color: #a8bbcf +} + +.table-warning, .table-warning > th, .table-warning > td { + background-color: #f5d0b8 +} + +.table-hover .table-warning:hover { + background-color: #f2c1a2 +} + +.table-hover .table-warning:hover > td, .table-hover .table-warning:hover > th { + background-color: #f2c1a2 +} + +.table-danger, .table-danger > th, .table-danger > td { + background-color: #efbfc1 +} + +.table-hover .table-danger:hover { + background-color: #eaabad +} + +.table-hover .table-danger:hover > td, .table-hover .table-danger:hover > th { + background-color: #eaabad +} + +.table-light, .table-light > th, .table-light > td { + background-color: #fdfdfe +} + +.table-hover .table-light:hover { + background-color: #ececf6 +} + +.table-hover .table-light:hover > td, .table-hover .table-light:hover > th { + background-color: #ececf6 +} + +.table-dark, .table-dark > th, .table-dark > td { + background-color: #c6c8ca +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe +} + +.table-hover .table-dark:hover > td, .table-hover .table-dark:hover > th { + background-color: #b9bbbe +} + +.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 .thead-dark th { + color: #fff; + background-color: #212529; + border-color: #32383e +} + +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6 +} + +.table-dark { + color: #fff; + background-color: #212529 +} + +.table-dark th, .table-dark td, .table-dark thead th { + border-color: #32383e +} + +.table-dark.table-bordered { + border: 0 +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05) +} + +.table-dark.table-hover tbody tr:hover { + background-color: rgba(255, 255, 255, 0.075) +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + + .table-responsive-sm > .table-bordered { + border: 0 + } +} + +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + + .table-responsive-md > .table-bordered { + border: 0 + } +} + +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + + .table-responsive-lg > .table-bordered { + border: 0 + } +} + +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar + } + + .table-responsive-xl > .table-bordered { + border: 0 + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar +} + +.table-responsive > .table-bordered { + border: 0 +} + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0 +} + +.form-control:focus { + color: #495057; + background-color: #fff; + border-color: #a1d6f4; + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.25); + box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.25) +} + +.form-control::-webkit-input-placeholder { + color: #868e96; + opacity: 1 +} + +.form-control:-ms-input-placeholder { + color: #868e96; + opacity: 1 +} + +.form-control::-ms-input-placeholder { + color: #868e96; + opacity: 1 +} + +.form-control::placeholder { + color: #868e96; + opacity: 1 +} + +.form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1 +} + +select.form-control:not([size]):not([multiple]) { + height: calc(2.25rem + 2px) +} + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff +} + +.form-control-file, .form-control-range { + display: block; + width: 100% +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5 +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5 +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5 +} + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.5; + background-color: transparent; + border: solid transparent; + border-width: 1px 0 +} + +.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control, .input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text, .input-group-sm > .input-group-append > .form-control-plaintext.input-group-text, .input-group-sm > .input-group-prepend > .form-control-plaintext.btn, .input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control, .input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text, .input-group-lg > .input-group-append > .form-control-plaintext.input-group-text, .input-group-lg > .input-group-prepend > .form-control-plaintext.btn, .input-group-lg > .input-group-append > .form-control-plaintext.btn { + padding-right: 0; + padding-left: 0 +} + +.form-control-sm, .input-group-sm > .form-control, .input-group-sm > .input-group-prepend > .input-group-text, .input-group-sm > .input-group-append > .input-group-text, .input-group-sm > .input-group-prepend > .btn, .input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + 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 > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), .input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]), .input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]), .input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) { + height: calc(1.8125rem + 2px) +} + +.form-control-lg, .input-group-lg > .form-control, .input-group-lg > .input-group-prepend > .input-group-text, .input-group-lg > .input-group-append > .input-group-text, .input-group-lg > .input-group-prepend > .btn, .input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + 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 > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), .input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]), .input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]), .input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) { + height: calc(2.875rem + 2px) +} + +.form-group { + margin-bottom: 1rem +} + +.form-text { + display: block; + margin-top: 0.25rem +} + +.form-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px +} + +.form-row > .col, .form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px +} + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem +} + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem +} + +.form-check-input:disabled ~ .form-check-label { + color: #868e96 +} + +.form-check-label { + margin-bottom: 0 +} + +.form-check-inline { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-left: 0; + margin-right: 0.75rem +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0 +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #73A839 +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(115, 168, 57, 0.8); + border-radius: .2rem +} + +.was-validated .form-control:valid, .form-control.is-valid, .was-validated .custom-select:valid, .custom-select.is-valid { + border-color: #73A839 +} + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { + border-color: #73A839; + -webkit-box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.25); + box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.25) +} + +.was-validated .form-control:valid ~ .valid-feedback, .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, .form-control.is-valid ~ .valid-tooltip, .was-validated .custom-select:valid ~ .valid-feedback, .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, .custom-select.is-valid ~ .valid-tooltip { + display: block +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #73A839 +} + +.was-validated .form-check-input:valid ~ .valid-feedback, .was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, .form-check-input.is-valid ~ .valid-tooltip { + display: block +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #73A839 +} + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + background-color: #b2d789 +} + +.was-validated .custom-control-input:valid ~ .valid-feedback, .was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, .custom-control-input.is-valid ~ .valid-tooltip { + display: block +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + background-color: #8dc450 +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(115, 168, 57, 0.25); + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(115, 168, 57, 0.25) +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #73A839 +} + +.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before { + border-color: inherit +} + +.was-validated .custom-file-input:valid ~ .valid-feedback, .was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, .custom-file-input.is-valid ~ .valid-tooltip { + display: block +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + -webkit-box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.25); + box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.25) +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #C71C22 +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(199, 28, 34, 0.8); + border-radius: .2rem +} + +.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated .custom-select:invalid, .custom-select.is-invalid { + border-color: #C71C22 +} + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { + border-color: #C71C22; + -webkit-box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.25); + box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.25) +} + +.was-validated .form-control:invalid ~ .invalid-feedback, .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, .form-control.is-invalid ~ .invalid-tooltip, .was-validated .custom-select:invalid ~ .invalid-feedback, .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, .custom-select.is-invalid ~ .invalid-tooltip { + display: block +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #C71C22 +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, .was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, .form-check-input.is-invalid ~ .invalid-tooltip { + display: block +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #C71C22 +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + background-color: #ec777b +} + +.was-validated .custom-control-input:invalid ~ .invalid-feedback, .was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, .custom-control-input.is-invalid ~ .invalid-tooltip { + display: block +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + background-color: #e2343a +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(199, 28, 34, 0.25); + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(199, 28, 34, 0.25) +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #C71C22 +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before { + border-color: inherit +} + +.was-validated .custom-file-input:invalid ~ .invalid-feedback, .was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, .custom-file-input.is-invalid ~ .invalid-tooltip { + display: block +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + -webkit-box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.25); + box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.25) +} + +.form-inline { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.form-inline .form-check { + width: 100% +} + +@media (min-width: 576px) { + .form-inline label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0 + } + + .form-inline .form-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0 + } + + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle + } + + .form-inline .form-control-plaintext { + display: inline-block + } + + .form-inline .input-group { + width: auto + } + + .form-inline .form-check { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + padding-left: 0 + } + + .form-inline .form-check-input { + position: relative; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0 + } + + .form-inline .custom-control { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center + } + + .form-inline .custom-control-label { + margin-bottom: 0 + } +} + +.btn { + display: inline-block; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.25rem; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out +} + +.btn:hover, .btn:focus { + text-decoration: none +} + +.btn:focus, .btn.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.25); + box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.25) +} + +.btn.disabled, .btn:disabled { + opacity: 0.65 +} + +.btn:not(:disabled):not(.disabled) { + cursor: pointer +} + +.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active { + background-image: none +} + +a.btn.disabled, fieldset:disabled a.btn { + pointer-events: none +} + +.btn-primary { + color: #fff; + background-color: #2FA4E7; + border-color: #2FA4E7 +} + +.btn-primary:hover { + color: #fff; + background-color: #1992d7; + border-color: #178acc +} + +.btn-primary:focus, .btn-primary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.5); + box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.5) +} + +.btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #2FA4E7; + border-color: #2FA4E7 +} + +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, .show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #178acc; + border-color: #1682c0 +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-primary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.5); + box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.5) +} + +.btn-secondary { + color: #212529; + background-color: #e9ecef; + border-color: #e9ecef +} + +.btn-secondary:hover { + color: #212529; + background-color: #d3d9df; + border-color: #cbd3da +} + +.btn-secondary:focus, .btn-secondary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5) +} + +.btn-secondary.disabled, .btn-secondary:disabled { + color: #212529; + background-color: #e9ecef; + border-color: #e9ecef +} + +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, .show > .btn-secondary.dropdown-toggle { + color: #212529; + background-color: #cbd3da; + border-color: #c4ccd4 +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-secondary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5) +} + +.btn-success { + color: #fff; + background-color: #73A839; + border-color: #73A839 +} + +.btn-success:hover { + color: #fff; + background-color: #5f8b2f; + border-color: #59822c +} + +.btn-success:focus, .btn-success.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.5); + box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.5) +} + +.btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #73A839; + border-color: #73A839 +} + +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, .show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #59822c; + border-color: #527829 +} + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, .show > .btn-success.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.5); + box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.5) +} + +.btn-info { + color: #fff; + background-color: #033C73; + border-color: #033C73 +} + +.btn-info:hover { + color: #fff; + background-color: #02294e; + border-color: #022241 +} + +.btn-info:focus, .btn-info.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(3, 60, 115, 0.5); + box-shadow: 0 0 0 0.2rem rgba(3, 60, 115, 0.5) +} + +.btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #033C73; + border-color: #033C73 +} + +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #022241; + border-color: #011c35 +} + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, .show > .btn-info.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(3, 60, 115, 0.5); + box-shadow: 0 0 0 0.2rem rgba(3, 60, 115, 0.5) +} + +.btn-warning { + color: #fff; + background-color: #DD5600; + border-color: #DD5600 +} + +.btn-warning:hover { + color: #fff; + background-color: #b74700; + border-color: #aa4200 +} + +.btn-warning:focus, .btn-warning.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(221, 86, 0, 0.5); + box-shadow: 0 0 0 0.2rem rgba(221, 86, 0, 0.5) +} + +.btn-warning.disabled, .btn-warning:disabled { + color: #fff; + background-color: #DD5600; + border-color: #DD5600 +} + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #aa4200; + border-color: #9d3d00 +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-warning.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(221, 86, 0, 0.5); + box-shadow: 0 0 0 0.2rem rgba(221, 86, 0, 0.5) +} + +.btn-danger { + color: #fff; + background-color: #C71C22; + border-color: #C71C22 +} + +.btn-danger:hover { + color: #fff; + background-color: #a5171c; + border-color: #9a161a +} + +.btn-danger:focus, .btn-danger.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.5); + box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.5) +} + +.btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #C71C22; + border-color: #C71C22 +} + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, .show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #9a161a; + border-color: #8f1418 +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-danger.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.5); + box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.5) +} + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5 +} + +.btn-light:focus, .btn-light.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5) +} + +.btn-light.disabled, .btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df +} + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, .show > .btn-light.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5) +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124 +} + +.btn-dark:focus, .btn-dark.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5) +} + +.btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, .show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d +} + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-dark.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5) +} + +.btn-outline-primary { + color: #2FA4E7; + background-color: transparent; + background-image: none; + border-color: #2FA4E7 +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #2FA4E7; + border-color: #2FA4E7 +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.5); + box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.5) +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #2FA4E7; + background-color: transparent +} + +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, .show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #2FA4E7; + border-color: #2FA4E7 +} + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-primary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.5); + box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.5) +} + +.btn-outline-secondary { + color: #e9ecef; + background-color: transparent; + background-image: none; + border-color: #e9ecef +} + +.btn-outline-secondary:hover { + color: #212529; + background-color: #e9ecef; + border-color: #e9ecef +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5) +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #e9ecef; + background-color: transparent +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, .show > .btn-outline-secondary.dropdown-toggle { + color: #212529; + background-color: #e9ecef; + border-color: #e9ecef +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-secondary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5) +} + +.btn-outline-success { + color: #73A839; + background-color: transparent; + background-image: none; + border-color: #73A839 +} + +.btn-outline-success:hover { + color: #fff; + background-color: #73A839; + border-color: #73A839 +} + +.btn-outline-success:focus, .btn-outline-success.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.5); + box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.5) +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #73A839; + background-color: transparent +} + +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, .show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #73A839; + border-color: #73A839 +} + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-success.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.5); + box-shadow: 0 0 0 0.2rem rgba(115, 168, 57, 0.5) +} + +.btn-outline-info { + color: #033C73; + background-color: transparent; + background-image: none; + border-color: #033C73 +} + +.btn-outline-info:hover { + color: #fff; + background-color: #033C73; + border-color: #033C73 +} + +.btn-outline-info:focus, .btn-outline-info.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(3, 60, 115, 0.5); + box-shadow: 0 0 0 0.2rem rgba(3, 60, 115, 0.5) +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #033C73; + background-color: transparent +} + +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, .show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #033C73; + border-color: #033C73 +} + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-info.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(3, 60, 115, 0.5); + box-shadow: 0 0 0 0.2rem rgba(3, 60, 115, 0.5) +} + +.btn-outline-warning { + color: #DD5600; + background-color: transparent; + background-image: none; + border-color: #DD5600 +} + +.btn-outline-warning:hover { + color: #fff; + background-color: #DD5600; + border-color: #DD5600 +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(221, 86, 0, 0.5); + box-shadow: 0 0 0 0.2rem rgba(221, 86, 0, 0.5) +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #DD5600; + background-color: transparent +} + +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { + color: #fff; + background-color: #DD5600; + border-color: #DD5600 +} + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-warning.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(221, 86, 0, 0.5); + box-shadow: 0 0 0 0.2rem rgba(221, 86, 0, 0.5) +} + +.btn-outline-danger { + color: #C71C22; + background-color: transparent; + background-image: none; + border-color: #C71C22 +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #C71C22; + border-color: #C71C22 +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.5); + box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.5) +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #C71C22; + background-color: transparent +} + +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, .show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #C71C22; + border-color: #C71C22 +} + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-danger.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.5); + box-shadow: 0 0 0 0.2rem rgba(199, 28, 34, 0.5) +} + +.btn-outline-light { + color: #f8f9fa; + background-color: transparent; + background-image: none; + border-color: #f8f9fa +} + +.btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-light:focus, .btn-outline-light.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5) +} + +.btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent +} + +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa +} + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-light.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5) +} + +.btn-outline-dark { + color: #343a40; + background-color: transparent; + background-image: none; + border-color: #343a40 +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-outline-dark:focus, .btn-outline-dark.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5) +} + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + background-color: transparent +} + +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, .show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40 +} + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, .show > .btn-outline-dark.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5) +} + +.btn-link { + font-weight: 400; + color: #2FA4E7; + background-color: transparent +} + +.btn-link:hover { + color: #157ab5; + text-decoration: underline; + background-color: transparent; + border-color: transparent +} + +.btn-link:focus, .btn-link.focus { + text-decoration: underline; + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none +} + +.btn-link:disabled, .btn-link.disabled { + color: #868e96 +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + 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 0.15s linear; + transition: opacity 0.15s linear +} + +.fade.show { + opacity: 1 +} + +.collapse { + display: none +} + +.collapse.show { + display: block +} + +tr.collapse.show { + display: table-row +} + +tbody.collapse.show { + display: table-row-group +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease +} + +.dropup, .dropdown { + position: relative +} + +.dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent +} + +.dropdown-toggle:empty::after { + margin-left: 0 +} + +.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: #868e96; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem +} + +.dropup .dropdown-menu { + margin-top: 0; + margin-bottom: 0.125rem +} + +.dropup .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0 +} + +.dropright .dropdown-menu { + margin-top: 0; + margin-left: 0.125rem +} + +.dropright .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid +} + +.dropright .dropdown-toggle:empty::after { + margin-left: 0 +} + +.dropright .dropdown-toggle::after { + vertical-align: 0 +} + +.dropleft .dropdown-menu { + margin-top: 0; + margin-right: 0.125rem +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: "" +} + +.dropleft .dropdown-toggle::after { + display: none +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + width: 0; + height: 0; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0 +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0 +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #868e96; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0 +} + +.dropdown-item:hover, .dropdown-item:focus { + color: #fff; + text-decoration: none; + background-color: #2FA4E7 +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #2FA4E7 +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #868e96; + background-color: transparent +} + +.dropdown-menu.show { + display: block +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #868e96; + white-space: nowrap +} + +.btn-group, .btn-group-vertical { + position: relative; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle +} + +.btn-group > .btn, .btn-group-vertical > .btn { + position: relative; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto +} + +.btn-group > .btn:hover, .btn-group-vertical > .btn:hover { + z-index: 1 +} + +.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: 1 +} + +.btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group, .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-left: -1px +} + +.btn-toolbar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start +} + +.btn-toolbar .input-group { + width: auto +} + +.btn-group > .btn:first-child { + margin-left: 0 +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), .btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.btn-group > .btn:not(:first-child), .btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem +} + +.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: 0.75rem; + padding-left: 0.75rem +} + +.btn-group-vertical { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.btn-group-vertical .btn, .btn-group-vertical .btn-group { + width: 100% +} + +.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(:last-child):not(.dropdown-toggle), .btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group-vertical > .btn:not(:first-child), .btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.btn-group-toggle > .btn, .btn-group-toggle > .btn-group > .btn { + margin-bottom: 0 +} + +.btn-group-toggle > .btn input[type="radio"], .btn-group-toggle > .btn input[type="checkbox"], .btn-group-toggle > .btn-group > .btn input[type="radio"], .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none +} + +.input-group { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + width: 100% +} + +.input-group > .form-control, .input-group > .custom-select, .input-group > .custom-file { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0 +} + +.input-group > .form-control:focus, .input-group > .custom-select:focus, .input-group > .custom-file:focus { + z-index: 3 +} + +.input-group > .form-control + .form-control, .input-group > .form-control + .custom-select, .input-group > .form-control + .custom-file, .input-group > .custom-select + .form-control, .input-group > .custom-select + .custom-select, .input-group > .custom-select + .custom-file, .input-group > .custom-file + .form-control, .input-group > .custom-file + .custom-select, .input-group > .custom-file + .custom-file { + margin-left: -1px +} + +.input-group > .form-control:not(:last-child), .input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group > .form-control:not(:first-child), .input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.input-group > .custom-file { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.input-group > .custom-file:not(:last-child) .custom-file-label, .input-group > .custom-file:not(:last-child) .custom-file-label::before { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group > .custom-file:not(:first-child) .custom-file-label, .input-group > .custom-file:not(:first-child) .custom-file-label::before { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.input-group-prepend, .input-group-append { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.input-group-prepend .btn, .input-group-append .btn { + position: relative; + z-index: 2 +} + +.input-group-prepend .btn + .btn, .input-group-prepend .btn + .input-group-text, .input-group-prepend .input-group-text + .input-group-text, .input-group-prepend .input-group-text + .btn, .input-group-append .btn + .btn, .input-group-append .btn + .input-group-text, .input-group-append .input-group-text + .input-group-text, .input-group-append .input-group-text + .btn { + margin-left: -1px +} + +.input-group-prepend { + margin-right: -1px +} + +.input-group-append { + margin-left: -1px +} + +.input-group-text { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem +} + +.input-group-text input[type="radio"], .input-group-text input[type="checkbox"] { + margin-top: 0 +} + +.input-group > .input-group-prepend > .btn, .input-group > .input-group-prepend > .input-group-text, .input-group > .input-group-append:not(:last-child) > .btn, .input-group > .input-group-append:not(:last-child) > .input-group-text, .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group > .input-group-append > .btn, .input-group > .input-group-append > .input-group-text, .input-group > .input-group-prepend:not(:first-child) > .btn, .input-group > .input-group-prepend:not(:first-child) > .input-group-text, .input-group > .input-group-prepend:first-child > .btn:not(:first-child), .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem +} + +.custom-control-inline { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 1rem +} + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0 +} + +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + background-color: #2FA4E7 +} + +.custom-control-input:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(47, 164, 231, 0.25); + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(47, 164, 231, 0.25) +} + +.custom-control-input:active ~ .custom-control-label::before { + color: #fff; + background-color: #cfeaf9 +} + +.custom-control-input:disabled ~ .custom-control-label { + color: #868e96 +} + +.custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef +} + +.custom-control-label { + margin-bottom: 0 +} + +.custom-control-label::before { + position: absolute; + top: 0.25rem; + left: 0; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #dee2e6 +} + +.custom-control-label::after { + position: absolute; + top: 0.25rem; + left: 0; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background-repeat: no-repeat; + background-position: center center; + background-size: 50% 50% +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0.25rem +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before { + background-color: #2FA4E7 +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + 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='%23fff' 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-label::before { + background-color: #2FA4E7 +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + 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='%23fff' d='M0 2h4'/%3E%3C/svg%3E") +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(47, 164, 231, 0.5) +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(47, 164, 231, 0.5) +} + +.custom-radio .custom-control-label::before { + border-radius: 50% +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::before { + background-color: #2FA4E7 +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + 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='%23fff'/%3E%3C/svg%3E") +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(47, 164, 231, 0.5) +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(2.25rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + 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='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; + background-size: 8px 10px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +.custom-select:focus { + border-color: #a1d6f4; + outline: 0; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(161, 214, 244, 0.5); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(161, 214, 244, 0.5) +} + +.custom-select:focus::-ms-value { + color: #495057; + background-color: #fff +} + +.custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none +} + +.custom-select:disabled { + color: #868e96; + background-color: #e9ecef +} + +.custom-select::-ms-expand { + opacity: 0 +} + +.custom-select-sm { + height: calc(1.8125rem + 2px); + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 75% +} + +.custom-select-lg { + height: calc(2.875rem + 2px); + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 125% +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(2.25rem + 2px); + margin-bottom: 0 +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(2.25rem + 2px); + margin: 0; + opacity: 0 +} + +.custom-file-input:focus ~ .custom-file-control { + border-color: #a1d6f4; + -webkit-box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.25); + box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.25) +} + +.custom-file-input:focus ~ .custom-file-control::before { + border-color: #a1d6f4 +} + +.custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse" +} + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(2.25rem + 2px); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem +} + +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(calc(2.25rem + 2px) - 1px * 2); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: 1px solid #ced4da; + border-radius: 0 0.25rem 0.25rem 0 +} + +.nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.nav-link { + display: block; + padding: 0.5rem 1rem +} + +.nav-link:hover, .nav-link:focus { + text-decoration: none +} + +.nav-link.disabled { + color: #868e96 +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6 +} + +.nav-tabs .nav-item { + margin-bottom: -1px +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6 +} + +.nav-tabs .nav-link.disabled { + color: #868e96; + background-color: transparent; + border-color: transparent +} + +.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.nav-pills .nav-link { + border-radius: 0.25rem +} + +.nav-pills .nav-link.active, .nav-pills .show > .nav-link { + color: #fff; + background-color: #2FA4E7 +} + +.nav-fill .nav-item { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center +} + +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center +} + +.tab-content > .tab-pane { + display: none +} + +.tab-content > .active { + display: block +} + +.navbar { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0.5rem 1rem +} + +.navbar > .container, .navbar > .container-fluid { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between +} + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap +} + +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none +} + +.navbar-nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0 +} + +.navbar-nav .dropdown-menu { + position: static; + float: none +} + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem +} + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem +} + +.navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none +} + +.navbar-toggler:not(:disabled):not(.disabled) { + cursor: pointer +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100% +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start + } + + .navbar-expand-sm .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row + } + + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute + } + + .navbar-expand-sm .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem + } + + .navbar-expand-sm > .container, .navbar-expand-sm > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + + .navbar-expand-sm .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto + } + + .navbar-expand-sm .navbar-toggler { + display: none + } + + .navbar-expand-sm .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +@media (max-width: 767.98px) { + .navbar-expand-md > .container, .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start + } + + .navbar-expand-md .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row + } + + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute + } + + .navbar-expand-md .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem + } + + .navbar-expand-md > .container, .navbar-expand-md > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + + .navbar-expand-md .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto + } + + .navbar-expand-md .navbar-toggler { + display: none + } + + .navbar-expand-md .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start + } + + .navbar-expand-lg .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row + } + + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute + } + + .navbar-expand-lg .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem + } + + .navbar-expand-lg > .container, .navbar-expand-lg > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + + .navbar-expand-lg .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto + } + + .navbar-expand-lg .navbar-toggler { + display: none + } + + .navbar-expand-lg .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0 + } +} + +@media (min-width: 1200px) { + .navbar-expand-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start + } + + .navbar-expand-xl .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row + } + + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute + } + + .navbar-expand-xl .navbar-nav .dropdown-menu-right { + right: 0; + left: auto + } + + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem + } + + .navbar-expand-xl > .container, .navbar-expand-xl > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap + } + + .navbar-expand-xl .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto + } + + .navbar-expand-xl .navbar-toggler { + display: none + } + + .navbar-expand-xl .dropup .dropdown-menu { + top: auto; + bottom: 100% + } +} + +.navbar-expand { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start +} + +.navbar-expand > .container, .navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0 +} + +.navbar-expand .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute +} + +.navbar-expand .navbar-nav .dropdown-menu-right { + right: 0; + left: auto +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem +} + +.navbar-expand > .container, .navbar-expand > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap +} + +.navbar-expand .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto +} + +.navbar-expand .navbar-toggler { + display: none +} + +.navbar-expand .dropup .dropdown-menu { + top: auto; + bottom: 100% +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9) +} + +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + 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:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7) +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3) +} + +.navbar-light .navbar-nav .show > .nav-link, .navbar-light .navbar-nav .active > .nav-link, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9) +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1) +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' 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 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5) +} + +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9) +} + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9) +} + +.navbar-dark .navbar-brand { + color: #fff +} + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.8) +} + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: #fff +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25) +} + +.navbar-dark .navbar-nav .show > .nav-link, .navbar-dark .navbar-nav .active > .nav-link, .navbar-dark .navbar-nav .nav-link.show, .navbar-dark .navbar-nav .nav-link.active { + color: #fff +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.8); + border-color: rgba(255, 255, 255, 0.1) +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.8)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.8) +} + +.navbar-dark .navbar-text a { + color: #fff +} + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff +} + +.card { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem +} + +.card > hr { + margin-right: 0; + margin-left: 0 +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-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-body { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.25rem +} + +.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-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125) +} + +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0 +} + +.card-header + .list-group .list-group-item:first-child { + border-top: 0 +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125) +} + +.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-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem +} + +.card-img { + width: 100%; + border-radius: calc(0.25rem - 1px) +} + +.card-img-top { + width: 100%; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px) +} + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px) +} + +.card-deck { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column +} + +.card-deck .card { + margin-bottom: 15px +} + +@media (min-width: 576px) { + .card-deck { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px + } + + .card-deck .card { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px + } +} + +.card-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column +} + +.card-group > .card { + margin-bottom: 15px +} + +@media (min-width: 576px) { + .card-group { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap + } + + .card-group > .card { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0 + } + + .card-group > .card + .card { + margin-left: 0; + border-left: 0 + } + + .card-group > .card:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 + } + + .card-group > .card:first-child .card-img-top, .card-group > .card:first-child .card-header { + border-top-right-radius: 0 + } + + .card-group > .card:first-child .card-img-bottom, .card-group > .card:first-child .card-footer { + border-bottom-right-radius: 0 + } + + .card-group > .card:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 + } + + .card-group > .card:last-child .card-img-top, .card-group > .card:last-child .card-header { + border-top-left-radius: 0 + } + + .card-group > .card:last-child .card-img-bottom, .card-group > .card:last-child .card-footer { + border-bottom-left-radius: 0 + } + + .card-group > .card:only-child { + border-radius: 0.25rem + } + + .card-group > .card:only-child .card-img-top, .card-group > .card:only-child .card-header { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem + } + + .card-group > .card:only-child .card-img-bottom, .card-group > .card:only-child .card-footer { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem + } + + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) { + border-radius: 0 + } + + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header, .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer { + border-radius: 0 + } +} + +.card-columns .card { + margin-bottom: 0.75rem +} + +@media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + column-gap: 1.25rem + } + + .card-columns .card { + display: inline-block; + width: 100% + } +} + +.breadcrumb { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + padding-left: 0.5rem; + color: #868e96; + content: "/" +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none +} + +.breadcrumb-item.active { + color: #868e96 +} + +.pagination { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #2FA4E7; + background-color: #fff; + border: 1px solid #dee2e6 +} + +.page-link:hover { + color: #157ab5; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6 +} + +.page-link:focus { + z-index: 2; + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.25); + box-shadow: 0 0 0 0.2rem rgba(47, 164, 231, 0.25) +} + +.page-link:not(:disabled):not(.disabled) { + cursor: pointer +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem +} + +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem +} + +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #2FA4E7; + border-color: #2FA4E7 +} + +.page-item.disabled .page-link { + color: #868e96; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6 +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5 +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5 +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem +} + +.badge:empty { + display: none +} + +.btn .badge { + position: relative; + top: -1px +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem +} + +.badge-primary { + color: #fff; + background-color: #2FA4E7 +} + +.badge-primary[href]:hover, .badge-primary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #178acc +} + +.badge-secondary { + color: #212529; + background-color: #e9ecef +} + +.badge-secondary[href]:hover, .badge-secondary[href]:focus { + color: #212529; + text-decoration: none; + background-color: #cbd3da +} + +.badge-success { + color: #fff; + background-color: #73A839 +} + +.badge-success[href]:hover, .badge-success[href]:focus { + color: #fff; + text-decoration: none; + background-color: #59822c +} + +.badge-info { + color: #fff; + background-color: #033C73 +} + +.badge-info[href]:hover, .badge-info[href]:focus { + color: #fff; + text-decoration: none; + background-color: #022241 +} + +.badge-warning { + color: #fff; + background-color: #DD5600 +} + +.badge-warning[href]:hover, .badge-warning[href]:focus { + color: #fff; + text-decoration: none; + background-color: #aa4200 +} + +.badge-danger { + color: #fff; + background-color: #C71C22 +} + +.badge-danger[href]:hover, .badge-danger[href]:focus { + color: #fff; + text-decoration: none; + background-color: #9a161a +} + +.badge-light { + color: #212529; + background-color: #f8f9fa +} + +.badge-light[href]:hover, .badge-light[href]:focus { + color: #212529; + text-decoration: none; + background-color: #dae0e5 +} + +.badge-dark { + color: #fff; + background-color: #343a40 +} + +.badge-dark[href]:hover, .badge-dark[href]:focus { + color: #fff; + text-decoration: none; + background-color: #1d2124 +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0 +} + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem +} + +.alert-heading { + color: inherit +} + +.alert-link { + font-weight: 700 +} + +.alert-dismissible { + padding-right: 4rem +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit +} + +.alert-primary { + color: #185578; + background-color: #d5edfa; + border-color: #c5e6f8 +} + +.alert-primary hr { + border-top-color: #aedcf5 +} + +.alert-primary .alert-link { + color: #10374e +} + +.alert-secondary { + color: #797b7c; + background-color: #fbfbfc; + border-color: #f9fafb +} + +.alert-secondary hr { + border-top-color: #eaedf1 +} + +.alert-secondary .alert-link { + color: #606162 +} + +.alert-success { + color: #3c571e; + background-color: #e3eed7; + border-color: #d8e7c8 +} + +.alert-success hr { + border-top-color: #cbdfb6 +} + +.alert-success .alert-link { + color: #223111 +} + +.alert-info { + color: #021f3c; + background-color: #cdd8e3; + border-color: #b8c8d8 +} + +.alert-info hr { + border-top-color: #a8bbcf +} + +.alert-info .alert-link { + color: #00060b +} + +.alert-warning { + color: #732d00; + background-color: #f8ddcc; + border-color: #f5d0b8 +} + +.alert-warning hr { + border-top-color: #f2c1a2 +} + +.alert-warning .alert-link { + color: #401900 +} + +.alert-danger { + color: #670f12; + background-color: #f4d2d3; + border-color: #efbfc1 +} + +.alert-danger hr { + border-top-color: #eaabad +} + +.alert-danger .alert-link { + color: #3a090a +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe +} + +.alert-light hr { + border-top-color: #ececf6 +} + +.alert-light .alert-link { + color: #686868 +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca +} + +.alert-dark hr { + border-top-color: #b9bbbe +} + +.alert-dark .alert-link { + color: #040505 +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0 + } + to { + background-position: 0 0 + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0 + } + to { + background-position: 0 0 + } +} + +.progress { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem +} + +.progress-bar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + color: #fff; + text-align: center; + background-color: #2FA4E7; + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease +} + +.progress-bar-striped { + 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-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite +} + +.media { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start +} + +.media-body { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1 +} + +.list-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0 +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit +} + +.list-group-item-action:hover, .list-group-item-action:focus { + color: #495057; + text-decoration: none; + background-color: #f8f9fa +} + +.list-group-item-action:active { + color: #868e96; + background-color: #e9ecef +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125) +} + +.list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-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:hover, .list-group-item:focus { + z-index: 1; + text-decoration: none +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #868e96; + background-color: #fff +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #2FA4E7; + border-color: #2FA4E7 +} + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0 +} + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0 +} + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom: 0 +} + +.list-group-item-primary { + color: #185578; + background-color: #c5e6f8 +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #185578; + background-color: #aedcf5 +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #185578; + border-color: #185578 +} + +.list-group-item-secondary { + color: #797b7c; + background-color: #f9fafb +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #797b7c; + background-color: #eaedf1 +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #797b7c; + border-color: #797b7c +} + +.list-group-item-success { + color: #3c571e; + background-color: #d8e7c8 +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #3c571e; + background-color: #cbdfb6 +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #3c571e; + border-color: #3c571e +} + +.list-group-item-info { + color: #021f3c; + background-color: #b8c8d8 +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #021f3c; + background-color: #a8bbcf +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #021f3c; + border-color: #021f3c +} + +.list-group-item-warning { + color: #732d00; + background-color: #f5d0b8 +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #732d00; + background-color: #f2c1a2 +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #732d00; + border-color: #732d00 +} + +.list-group-item-danger { + color: #670f12; + background-color: #efbfc1 +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #670f12; + background-color: #eaabad +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #670f12; + border-color: #670f12 +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6 +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182 +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21 +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5 +} + +.close:hover, .close:focus { + color: #000; + text-decoration: none; + opacity: .75 +} + +.close:not(:disabled):not(.disabled) { + cursor: pointer +} + +button.close { + padding: 0; + background-color: 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-open .modal { + overflow-x: hidden; + overflow-y: auto +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none +} + +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform 0.3s ease-out; + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; + -webkit-transform: translate(0, -25%); + transform: translate(0, -25%) +} + +.modal.show .modal-dialog { + -webkit-transform: translate(0, 0); + transform: translate(0, 0) +} + +.modal-dialog-centered { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - (0.5rem * 2)) +} + +.modal-content { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + 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.show { + opacity: 0.5 +} + +.modal-header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem; + border-bottom: 1px solid #e9ecef; + border-top-left-radius: 0.3rem; + border-top-right-radius: 0.3rem +} + +.modal-header .close { + padding: 1rem; + margin: -1rem -1rem -1rem auto +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5 +} + +.modal-body { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem +} + +.modal-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid #e9ecef +} + +.modal-footer > :not(:first-child) { + margin-left: .25rem +} + +.modal-footer > :not(:last-child) { + margin-right: .25rem +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto + } + + .modal-dialog-centered { + min-height: calc(100% - (1.75rem * 2)) + } + + .modal-sm { + max-width: 300px + } +} + +@media (min-width: 992px) { + .modal-lg { + max-width: 800px + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0 +} + +.tooltip.show { + opacity: 0.9 +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid +} + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0 +} + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0 +} + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000 +} + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem +} + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem +} + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000 +} + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0 +} + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0 +} + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000 +} + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem +} + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem +} + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000 +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem +} + +.popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem +} + +.popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid +} + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem +} + +.bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow { + bottom: calc((0.5rem + 1px) * -1) +} + +.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before, .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after { + border-width: 0.5rem 0.5rem 0 +} + +.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before { + bottom: 0; + border-top-color: rgba(0, 0, 0, 0.25) +} + +.bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after { + bottom: 1px; + border-top-color: #fff +} + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem +} + +.bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0 +} + +.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before, .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after { + border-width: 0.5rem 0.5rem 0.5rem 0 +} + +.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before { + left: 0; + border-right-color: rgba(0, 0, 0, 0.25) +} + +.bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after { + left: 1px; + border-right-color: #fff +} + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem +} + +.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow { + top: calc((0.5rem + 1px) * -1) +} + +.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before, .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after { + border-width: 0 0.5rem 0.5rem 0.5rem +} + +.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before { + top: 0; + border-bottom-color: rgba(0, 0, 0, 0.25) +} + +.bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after { + top: 1px; + border-bottom-color: #fff +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7 +} + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem +} + +.bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0 +} + +.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before, .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after { + border-width: 0.5rem 0 0.5rem 0.5rem +} + +.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before { + right: 0; + border-left-color: rgba(0, 0, 0, 0.25) +} + +.bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after { + right: 1px; + border-left-color: #fff +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + color: #2FA4E7; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px) +} + +.popover-header:empty { + display: none +} + +.popover-body { + padding: 0.5rem 0.75rem; + color: #868e96 +} + +.carousel { + position: relative +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden +} + +.carousel-item { + position: relative; + display: none; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + -webkit-transition: -webkit-transform 0.6s ease; + transition: -webkit-transform 0.6s ease; + transition: transform 0.6s ease; + transition: transform 0.6s ease, -webkit-transform 0.6s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px +} + +.carousel-item.active, .carousel-item-next, .carousel-item-prev { + display: block +} + +.carousel-item-next, .carousel-item-prev { + position: absolute; + top: 0 +} + +.carousel-item-next.carousel-item-left, .carousel-item-prev.carousel-item-right { + -webkit-transform: translateX(0); + transform: translateX(0) +} + +@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d) { + .carousel-item-next.carousel-item-left, .carousel-item-prev.carousel-item-right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0) + } +} + +.carousel-item-next, .active.carousel-item-right { + -webkit-transform: translateX(100%); + transform: translateX(100%) +} + +@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d) { + .carousel-item-next, .active.carousel-item-right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) + } +} + +.carousel-item-prev, .active.carousel-item-left { + -webkit-transform: translateX(-100%); + transform: translateX(-100%) +} + +@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d) { + .carousel-item-prev, .active.carousel-item-left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) + } +} + +.carousel-control-prev, .carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5 +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, .carousel-control-next:hover, .carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9 +} + +.carousel-control-prev { + left: 0 +} + +.carousel-control-next { + right: 0 +} + +.carousel-control-prev-icon, .carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: transparent no-repeat center center; + background-size: 100% 100% +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E") +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E") +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 10px; + left: 0; + z-index: 15; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none +} + +.carousel-indicators li { + position: relative; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + background-color: rgba(255, 255, 255, 0.5) +} + +.carousel-indicators li::before { + position: absolute; + top: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: "" +} + +.carousel-indicators li::after { + position: absolute; + bottom: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: "" +} + +.carousel-indicators .active { + 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 +} + +.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-primary { + background-color: #2FA4E7 !important +} + +a.bg-primary:hover, a.bg-primary:focus, button.bg-primary:hover, button.bg-primary:focus { + background-color: #178acc !important +} + +.bg-secondary { + background-color: #e9ecef !important +} + +a.bg-secondary:hover, a.bg-secondary:focus, button.bg-secondary:hover, button.bg-secondary:focus { + background-color: #cbd3da !important +} + +.bg-success { + background-color: #73A839 !important +} + +a.bg-success:hover, a.bg-success:focus, button.bg-success:hover, button.bg-success:focus { + background-color: #59822c !important +} + +.bg-info { + background-color: #033C73 !important +} + +a.bg-info:hover, a.bg-info:focus, button.bg-info:hover, button.bg-info:focus { + background-color: #022241 !important +} + +.bg-warning { + background-color: #DD5600 !important +} + +a.bg-warning:hover, a.bg-warning:focus, button.bg-warning:hover, button.bg-warning:focus { + background-color: #aa4200 !important +} + +.bg-danger { + background-color: #C71C22 !important +} + +a.bg-danger:hover, a.bg-danger:focus, button.bg-danger:hover, button.bg-danger:focus { + background-color: #9a161a !important +} + +.bg-light { + background-color: #f8f9fa !important +} + +a.bg-light:hover, a.bg-light:focus, button.bg-light:hover, button.bg-light:focus { + background-color: #dae0e5 !important +} + +.bg-dark { + background-color: #343a40 !important +} + +a.bg-dark:hover, a.bg-dark:focus, button.bg-dark:hover, button.bg-dark:focus { + background-color: #1d2124 !important +} + +.bg-white { + background-color: #fff !important +} + +.bg-transparent { + background-color: transparent !important +} + +.border { + border: 1px solid #dee2e6 !important +} + +.border-top { + border-top: 1px solid #dee2e6 !important +} + +.border-right { + border-right: 1px solid #dee2e6 !important +} + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important +} + +.border-left { + border-left: 1px solid #dee2e6 !important +} + +.border-0 { + border: 0 !important +} + +.border-top-0 { + border-top: 0 !important +} + +.border-right-0 { + border-right: 0 !important +} + +.border-bottom-0 { + border-bottom: 0 !important +} + +.border-left-0 { + border-left: 0 !important +} + +.border-primary { + border-color: #2FA4E7 !important +} + +.border-secondary { + border-color: #e9ecef !important +} + +.border-success { + border-color: #73A839 !important +} + +.border-info { + border-color: #033C73 !important +} + +.border-warning { + border-color: #DD5600 !important +} + +.border-danger { + border-color: #C71C22 !important +} + +.border-light { + border-color: #f8f9fa !important +} + +.border-dark { + border-color: #343a40 !important +} + +.border-white { + border-color: #fff !important +} + +.rounded { + border-radius: 0.25rem !important +} + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important +} + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important +} + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important +} + +.rounded-circle { + border-radius: 50% !important +} + +.rounded-0 { + border-radius: 0 !important +} + +.clearfix::after { + display: block; + clear: both; + content: "" +} + +.d-none { + display: none !important +} + +.d-inline { + display: inline !important +} + +.d-inline-block { + display: inline-block !important +} + +.d-block { + display: block !important +} + +.d-table { + display: table !important +} + +.d-table-row { + display: table-row !important +} + +.d-table-cell { + display: table-cell !important +} + +.d-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important +} + +.d-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important + } + + .d-sm-inline { + display: inline !important + } + + .d-sm-inline-block { + display: inline-block !important + } + + .d-sm-block { + display: block !important + } + + .d-sm-table { + display: table !important + } + + .d-sm-table-row { + display: table-row !important + } + + .d-sm-table-cell { + display: table-cell !important + } + + .d-sm-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important + } + + .d-sm-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important + } + + .d-md-inline { + display: inline !important + } + + .d-md-inline-block { + display: inline-block !important + } + + .d-md-block { + display: block !important + } + + .d-md-table { + display: table !important + } + + .d-md-table-row { + display: table-row !important + } + + .d-md-table-cell { + display: table-cell !important + } + + .d-md-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important + } + + .d-md-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important + } + + .d-lg-inline { + display: inline !important + } + + .d-lg-inline-block { + display: inline-block !important + } + + .d-lg-block { + display: block !important + } + + .d-lg-table { + display: table !important + } + + .d-lg-table-row { + display: table-row !important + } + + .d-lg-table-cell { + display: table-cell !important + } + + .d-lg-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important + } + + .d-lg-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important + } + + .d-xl-inline { + display: inline !important + } + + .d-xl-inline-block { + display: inline-block !important + } + + .d-xl-block { + display: block !important + } + + .d-xl-table { + display: table !important + } + + .d-xl-table-row { + display: table-row !important + } + + .d-xl-table-cell { + display: table-cell !important + } + + .d-xl-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important + } + + .d-xl-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important + } +} + +@media print { + .d-print-none { + display: none !important + } + + .d-print-inline { + display: inline !important + } + + .d-print-inline-block { + display: inline-block !important + } + + .d-print-block { + display: block !important + } + + .d-print-table { + display: table !important + } + + .d-print-table-row { + display: table-row !important + } + + .d-print-table-cell { + display: table-cell !important + } + + .d-print-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important + } + + .d-print-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden +} + +.embed-responsive::before { + display: block; + content: "" +} + +.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::before { + padding-top: 42.8571428571% +} + +.embed-responsive-16by9::before { + padding-top: 56.25% +} + +.embed-responsive-4by3::before { + padding-top: 75% +} + +.embed-responsive-1by1::before { + padding-top: 100% +} + +.flex-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important +} + +.flex-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important +} + +.flex-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important +} + +.flex-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important +} + +.flex-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important +} + +.flex-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important +} + +.flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important +} + +.justify-content-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important +} + +.justify-content-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important +} + +.justify-content-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important +} + +.justify-content-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important +} + +.justify-content-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important +} + +.align-items-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important +} + +.align-items-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important +} + +.align-items-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important +} + +.align-items-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important +} + +.align-items-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important +} + +.align-content-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important +} + +.align-content-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important +} + +.align-content-center { + -ms-flex-line-pack: center !important; + align-content: center !important +} + +.align-content-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important +} + +.align-content-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important +} + +.align-content-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important +} + +.align-self-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important +} + +.align-self-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important +} + +.align-self-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important +} + +.align-self-center { + -ms-flex-item-align: center !important; + align-self: center !important +} + +.align-self-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important +} + +.align-self-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important +} + +@media (min-width: 576px) { + .flex-sm-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important + } + + .flex-sm-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important + } + + .flex-sm-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important + } + + .flex-sm-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important + } + + .flex-sm-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important + } + + .flex-sm-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important + } + + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important + } + + .justify-content-sm-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important + } + + .justify-content-sm-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important + } + + .justify-content-sm-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important + } + + .justify-content-sm-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important + } + + .justify-content-sm-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important + } + + .align-items-sm-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important + } + + .align-items-sm-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important + } + + .align-items-sm-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important + } + + .align-items-sm-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important + } + + .align-items-sm-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important + } + + .align-content-sm-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important + } + + .align-content-sm-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important + } + + .align-content-sm-center { + -ms-flex-line-pack: center !important; + align-content: center !important + } + + .align-content-sm-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important + } + + .align-content-sm-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important + } + + .align-content-sm-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important + } + + .align-self-sm-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important + } + + .align-self-sm-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important + } + + .align-self-sm-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important + } + + .align-self-sm-center { + -ms-flex-item-align: center !important; + align-self: center !important + } + + .align-self-sm-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important + } + + .align-self-sm-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important + } +} + +@media (min-width: 768px) { + .flex-md-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important + } + + .flex-md-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important + } + + .flex-md-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important + } + + .flex-md-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important + } + + .flex-md-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important + } + + .flex-md-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important + } + + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important + } + + .justify-content-md-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important + } + + .justify-content-md-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important + } + + .justify-content-md-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important + } + + .justify-content-md-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important + } + + .justify-content-md-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important + } + + .align-items-md-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important + } + + .align-items-md-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important + } + + .align-items-md-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important + } + + .align-items-md-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important + } + + .align-items-md-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important + } + + .align-content-md-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important + } + + .align-content-md-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important + } + + .align-content-md-center { + -ms-flex-line-pack: center !important; + align-content: center !important + } + + .align-content-md-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important + } + + .align-content-md-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important + } + + .align-content-md-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important + } + + .align-self-md-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important + } + + .align-self-md-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important + } + + .align-self-md-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important + } + + .align-self-md-center { + -ms-flex-item-align: center !important; + align-self: center !important + } + + .align-self-md-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important + } + + .align-self-md-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important + } +} + +@media (min-width: 992px) { + .flex-lg-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important + } + + .flex-lg-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important + } + + .flex-lg-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important + } + + .flex-lg-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important + } + + .flex-lg-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important + } + + .flex-lg-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important + } + + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important + } + + .justify-content-lg-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important + } + + .justify-content-lg-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important + } + + .justify-content-lg-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important + } + + .justify-content-lg-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important + } + + .justify-content-lg-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important + } + + .align-items-lg-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important + } + + .align-items-lg-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important + } + + .align-items-lg-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important + } + + .align-items-lg-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important + } + + .align-items-lg-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important + } + + .align-content-lg-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important + } + + .align-content-lg-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important + } + + .align-content-lg-center { + -ms-flex-line-pack: center !important; + align-content: center !important + } + + .align-content-lg-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important + } + + .align-content-lg-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important + } + + .align-content-lg-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important + } + + .align-self-lg-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important + } + + .align-self-lg-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important + } + + .align-self-lg-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important + } + + .align-self-lg-center { + -ms-flex-item-align: center !important; + align-self: center !important + } + + .align-self-lg-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important + } + + .align-self-lg-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important + } +} + +@media (min-width: 1200px) { + .flex-xl-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important + } + + .flex-xl-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important + } + + .flex-xl-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important + } + + .flex-xl-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important + } + + .flex-xl-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important + } + + .flex-xl-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important + } + + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important + } + + .justify-content-xl-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important + } + + .justify-content-xl-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important + } + + .justify-content-xl-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important + } + + .justify-content-xl-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important + } + + .justify-content-xl-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important + } + + .align-items-xl-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important + } + + .align-items-xl-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important + } + + .align-items-xl-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important + } + + .align-items-xl-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important + } + + .align-items-xl-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important + } + + .align-content-xl-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important + } + + .align-content-xl-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important + } + + .align-content-xl-center { + -ms-flex-line-pack: center !important; + align-content: center !important + } + + .align-content-xl-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important + } + + .align-content-xl-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important + } + + .align-content-xl-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important + } + + .align-self-xl-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important + } + + .align-self-xl-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important + } + + .align-self-xl-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important + } + + .align-self-xl-center { + -ms-flex-item-align: center !important; + align-self: center !important + } + + .align-self-xl-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important + } + + .align-self-xl-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important + } +} + +.float-left { + float: left !important +} + +.float-right { + float: right !important +} + +.float-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 + } +} + +.position-static { + position: static !important +} + +.position-relative { + position: relative !important +} + +.position-absolute { + position: absolute !important +} + +.position-fixed { + position: fixed !important +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030 +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030 +} + +@supports (position: -webkit-sticky) or (position: sticky) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020 + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + border: 0 +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; + -webkit-clip-path: none; + clip-path: none +} + +.w-25 { + width: 25% !important +} + +.w-50 { + width: 50% !important +} + +.w-75 { + width: 75% !important +} + +.w-100 { + width: 100% !important +} + +.h-25 { + height: 25% !important +} + +.h-50 { + height: 50% !important +} + +.h-75 { + height: 75% !important +} + +.h-100 { + height: 100% !important +} + +.mw-100 { + max-width: 100% !important +} + +.mh-100 { + max-height: 100% !important +} + +.m-0 { + margin: 0 !important +} + +.mt-0, .my-0 { + margin-top: 0 !important +} + +.mr-0, .mx-0 { + margin-right: 0 !important +} + +.mb-0, .my-0 { + margin-bottom: 0 !important +} + +.ml-0, .mx-0 { + margin-left: 0 !important +} + +.m-1 { + margin: 0.25rem !important +} + +.mt-1, .my-1 { + margin-top: 0.25rem !important +} + +.mr-1, .mx-1 { + margin-right: 0.25rem !important +} + +.mb-1, .my-1 { + margin-bottom: 0.25rem !important +} + +.ml-1, .mx-1 { + margin-left: 0.25rem !important +} + +.m-2 { + margin: 0.5rem !important +} + +.mt-2, .my-2 { + margin-top: 0.5rem !important +} + +.mr-2, .mx-2 { + margin-right: 0.5rem !important +} + +.mb-2, .my-2 { + margin-bottom: 0.5rem !important +} + +.ml-2, .mx-2 { + margin-left: 0.5rem !important +} + +.m-3 { + margin: 1rem !important +} + +.mt-3, .my-3 { + margin-top: 1rem !important +} + +.mr-3, .mx-3 { + margin-right: 1rem !important +} + +.mb-3, .my-3 { + margin-bottom: 1rem !important +} + +.ml-3, .mx-3 { + margin-left: 1rem !important +} + +.m-4 { + margin: 1.5rem !important +} + +.mt-4, .my-4 { + margin-top: 1.5rem !important +} + +.mr-4, .mx-4 { + margin-right: 1.5rem !important +} + +.mb-4, .my-4 { + margin-bottom: 1.5rem !important +} + +.ml-4, .mx-4 { + margin-left: 1.5rem !important +} + +.m-5 { + margin: 3rem !important +} + +.mt-5, .my-5 { + margin-top: 3rem !important +} + +.mr-5, .mx-5 { + margin-right: 3rem !important +} + +.mb-5, .my-5 { + margin-bottom: 3rem !important +} + +.ml-5, .mx-5 { + margin-left: 3rem !important +} + +.p-0 { + padding: 0 !important +} + +.pt-0, .py-0 { + padding-top: 0 !important +} + +.pr-0, .px-0 { + padding-right: 0 !important +} + +.pb-0, .py-0 { + padding-bottom: 0 !important +} + +.pl-0, .px-0 { + padding-left: 0 !important +} + +.p-1 { + padding: 0.25rem !important +} + +.pt-1, .py-1 { + padding-top: 0.25rem !important +} + +.pr-1, .px-1 { + padding-right: 0.25rem !important +} + +.pb-1, .py-1 { + padding-bottom: 0.25rem !important +} + +.pl-1, .px-1 { + padding-left: 0.25rem !important +} + +.p-2 { + padding: 0.5rem !important +} + +.pt-2, .py-2 { + padding-top: 0.5rem !important +} + +.pr-2, .px-2 { + padding-right: 0.5rem !important +} + +.pb-2, .py-2 { + padding-bottom: 0.5rem !important +} + +.pl-2, .px-2 { + padding-left: 0.5rem !important +} + +.p-3 { + padding: 1rem !important +} + +.pt-3, .py-3 { + padding-top: 1rem !important +} + +.pr-3, .px-3 { + padding-right: 1rem !important +} + +.pb-3, .py-3 { + padding-bottom: 1rem !important +} + +.pl-3, .px-3 { + padding-left: 1rem !important +} + +.p-4 { + padding: 1.5rem !important +} + +.pt-4, .py-4 { + padding-top: 1.5rem !important +} + +.pr-4, .px-4 { + padding-right: 1.5rem !important +} + +.pb-4, .py-4 { + padding-bottom: 1.5rem !important +} + +.pl-4, .px-4 { + padding-left: 1.5rem !important +} + +.p-5 { + padding: 3rem !important +} + +.pt-5, .py-5 { + padding-top: 3rem !important +} + +.pr-5, .px-5 { + padding-right: 3rem !important +} + +.pb-5, .py-5 { + padding-bottom: 3rem !important +} + +.pl-5, .px-5 { + padding-left: 3rem !important +} + +.m-auto { + margin: auto !important +} + +.mt-auto, .my-auto { + margin-top: auto !important +} + +.mr-auto, .mx-auto { + margin-right: auto !important +} + +.mb-auto, .my-auto { + margin-bottom: auto !important +} + +.ml-auto, .mx-auto { + margin-left: auto !important +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important + } + + .mt-sm-0, .my-sm-0 { + margin-top: 0 !important + } + + .mr-sm-0, .mx-sm-0 { + margin-right: 0 !important + } + + .mb-sm-0, .my-sm-0 { + margin-bottom: 0 !important + } + + .ml-sm-0, .mx-sm-0 { + margin-left: 0 !important + } + + .m-sm-1 { + margin: 0.25rem !important + } + + .mt-sm-1, .my-sm-1 { + margin-top: 0.25rem !important + } + + .mr-sm-1, .mx-sm-1 { + margin-right: 0.25rem !important + } + + .mb-sm-1, .my-sm-1 { + margin-bottom: 0.25rem !important + } + + .ml-sm-1, .mx-sm-1 { + margin-left: 0.25rem !important + } + + .m-sm-2 { + margin: 0.5rem !important + } + + .mt-sm-2, .my-sm-2 { + margin-top: 0.5rem !important + } + + .mr-sm-2, .mx-sm-2 { + margin-right: 0.5rem !important + } + + .mb-sm-2, .my-sm-2 { + margin-bottom: 0.5rem !important + } + + .ml-sm-2, .mx-sm-2 { + margin-left: 0.5rem !important + } + + .m-sm-3 { + margin: 1rem !important + } + + .mt-sm-3, .my-sm-3 { + margin-top: 1rem !important + } + + .mr-sm-3, .mx-sm-3 { + margin-right: 1rem !important + } + + .mb-sm-3, .my-sm-3 { + margin-bottom: 1rem !important + } + + .ml-sm-3, .mx-sm-3 { + margin-left: 1rem !important + } + + .m-sm-4 { + margin: 1.5rem !important + } + + .mt-sm-4, .my-sm-4 { + margin-top: 1.5rem !important + } + + .mr-sm-4, .mx-sm-4 { + margin-right: 1.5rem !important + } + + .mb-sm-4, .my-sm-4 { + margin-bottom: 1.5rem !important + } + + .ml-sm-4, .mx-sm-4 { + margin-left: 1.5rem !important + } + + .m-sm-5 { + margin: 3rem !important + } + + .mt-sm-5, .my-sm-5 { + margin-top: 3rem !important + } + + .mr-sm-5, .mx-sm-5 { + margin-right: 3rem !important + } + + .mb-sm-5, .my-sm-5 { + margin-bottom: 3rem !important + } + + .ml-sm-5, .mx-sm-5 { + margin-left: 3rem !important + } + + .p-sm-0 { + padding: 0 !important + } + + .pt-sm-0, .py-sm-0 { + padding-top: 0 !important + } + + .pr-sm-0, .px-sm-0 { + padding-right: 0 !important + } + + .pb-sm-0, .py-sm-0 { + padding-bottom: 0 !important + } + + .pl-sm-0, .px-sm-0 { + padding-left: 0 !important + } + + .p-sm-1 { + padding: 0.25rem !important + } + + .pt-sm-1, .py-sm-1 { + padding-top: 0.25rem !important + } + + .pr-sm-1, .px-sm-1 { + padding-right: 0.25rem !important + } + + .pb-sm-1, .py-sm-1 { + padding-bottom: 0.25rem !important + } + + .pl-sm-1, .px-sm-1 { + padding-left: 0.25rem !important + } + + .p-sm-2 { + padding: 0.5rem !important + } + + .pt-sm-2, .py-sm-2 { + padding-top: 0.5rem !important + } + + .pr-sm-2, .px-sm-2 { + padding-right: 0.5rem !important + } + + .pb-sm-2, .py-sm-2 { + padding-bottom: 0.5rem !important + } + + .pl-sm-2, .px-sm-2 { + padding-left: 0.5rem !important + } + + .p-sm-3 { + padding: 1rem !important + } + + .pt-sm-3, .py-sm-3 { + padding-top: 1rem !important + } + + .pr-sm-3, .px-sm-3 { + padding-right: 1rem !important + } + + .pb-sm-3, .py-sm-3 { + padding-bottom: 1rem !important + } + + .pl-sm-3, .px-sm-3 { + padding-left: 1rem !important + } + + .p-sm-4 { + padding: 1.5rem !important + } + + .pt-sm-4, .py-sm-4 { + padding-top: 1.5rem !important + } + + .pr-sm-4, .px-sm-4 { + padding-right: 1.5rem !important + } + + .pb-sm-4, .py-sm-4 { + padding-bottom: 1.5rem !important + } + + .pl-sm-4, .px-sm-4 { + padding-left: 1.5rem !important + } + + .p-sm-5 { + padding: 3rem !important + } + + .pt-sm-5, .py-sm-5 { + padding-top: 3rem !important + } + + .pr-sm-5, .px-sm-5 { + padding-right: 3rem !important + } + + .pb-sm-5, .py-sm-5 { + padding-bottom: 3rem !important + } + + .pl-sm-5, .px-sm-5 { + padding-left: 3rem !important + } + + .m-sm-auto { + margin: auto !important + } + + .mt-sm-auto, .my-sm-auto { + margin-top: auto !important + } + + .mr-sm-auto, .mx-sm-auto { + margin-right: auto !important + } + + .mb-sm-auto, .my-sm-auto { + margin-bottom: auto !important + } + + .ml-sm-auto, .mx-sm-auto { + margin-left: auto !important + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important + } + + .mt-md-0, .my-md-0 { + margin-top: 0 !important + } + + .mr-md-0, .mx-md-0 { + margin-right: 0 !important + } + + .mb-md-0, .my-md-0 { + margin-bottom: 0 !important + } + + .ml-md-0, .mx-md-0 { + margin-left: 0 !important + } + + .m-md-1 { + margin: 0.25rem !important + } + + .mt-md-1, .my-md-1 { + margin-top: 0.25rem !important + } + + .mr-md-1, .mx-md-1 { + margin-right: 0.25rem !important + } + + .mb-md-1, .my-md-1 { + margin-bottom: 0.25rem !important + } + + .ml-md-1, .mx-md-1 { + margin-left: 0.25rem !important + } + + .m-md-2 { + margin: 0.5rem !important + } + + .mt-md-2, .my-md-2 { + margin-top: 0.5rem !important + } + + .mr-md-2, .mx-md-2 { + margin-right: 0.5rem !important + } + + .mb-md-2, .my-md-2 { + margin-bottom: 0.5rem !important + } + + .ml-md-2, .mx-md-2 { + margin-left: 0.5rem !important + } + + .m-md-3 { + margin: 1rem !important + } + + .mt-md-3, .my-md-3 { + margin-top: 1rem !important + } + + .mr-md-3, .mx-md-3 { + margin-right: 1rem !important + } + + .mb-md-3, .my-md-3 { + margin-bottom: 1rem !important + } + + .ml-md-3, .mx-md-3 { + margin-left: 1rem !important + } + + .m-md-4 { + margin: 1.5rem !important + } + + .mt-md-4, .my-md-4 { + margin-top: 1.5rem !important + } + + .mr-md-4, .mx-md-4 { + margin-right: 1.5rem !important + } + + .mb-md-4, .my-md-4 { + margin-bottom: 1.5rem !important + } + + .ml-md-4, .mx-md-4 { + margin-left: 1.5rem !important + } + + .m-md-5 { + margin: 3rem !important + } + + .mt-md-5, .my-md-5 { + margin-top: 3rem !important + } + + .mr-md-5, .mx-md-5 { + margin-right: 3rem !important + } + + .mb-md-5, .my-md-5 { + margin-bottom: 3rem !important + } + + .ml-md-5, .mx-md-5 { + margin-left: 3rem !important + } + + .p-md-0 { + padding: 0 !important + } + + .pt-md-0, .py-md-0 { + padding-top: 0 !important + } + + .pr-md-0, .px-md-0 { + padding-right: 0 !important + } + + .pb-md-0, .py-md-0 { + padding-bottom: 0 !important + } + + .pl-md-0, .px-md-0 { + padding-left: 0 !important + } + + .p-md-1 { + padding: 0.25rem !important + } + + .pt-md-1, .py-md-1 { + padding-top: 0.25rem !important + } + + .pr-md-1, .px-md-1 { + padding-right: 0.25rem !important + } + + .pb-md-1, .py-md-1 { + padding-bottom: 0.25rem !important + } + + .pl-md-1, .px-md-1 { + padding-left: 0.25rem !important + } + + .p-md-2 { + padding: 0.5rem !important + } + + .pt-md-2, .py-md-2 { + padding-top: 0.5rem !important + } + + .pr-md-2, .px-md-2 { + padding-right: 0.5rem !important + } + + .pb-md-2, .py-md-2 { + padding-bottom: 0.5rem !important + } + + .pl-md-2, .px-md-2 { + padding-left: 0.5rem !important + } + + .p-md-3 { + padding: 1rem !important + } + + .pt-md-3, .py-md-3 { + padding-top: 1rem !important + } + + .pr-md-3, .px-md-3 { + padding-right: 1rem !important + } + + .pb-md-3, .py-md-3 { + padding-bottom: 1rem !important + } + + .pl-md-3, .px-md-3 { + padding-left: 1rem !important + } + + .p-md-4 { + padding: 1.5rem !important + } + + .pt-md-4, .py-md-4 { + padding-top: 1.5rem !important + } + + .pr-md-4, .px-md-4 { + padding-right: 1.5rem !important + } + + .pb-md-4, .py-md-4 { + padding-bottom: 1.5rem !important + } + + .pl-md-4, .px-md-4 { + padding-left: 1.5rem !important + } + + .p-md-5 { + padding: 3rem !important + } + + .pt-md-5, .py-md-5 { + padding-top: 3rem !important + } + + .pr-md-5, .px-md-5 { + padding-right: 3rem !important + } + + .pb-md-5, .py-md-5 { + padding-bottom: 3rem !important + } + + .pl-md-5, .px-md-5 { + padding-left: 3rem !important + } + + .m-md-auto { + margin: auto !important + } + + .mt-md-auto, .my-md-auto { + margin-top: auto !important + } + + .mr-md-auto, .mx-md-auto { + margin-right: auto !important + } + + .mb-md-auto, .my-md-auto { + margin-bottom: auto !important + } + + .ml-md-auto, .mx-md-auto { + margin-left: auto !important + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important + } + + .mt-lg-0, .my-lg-0 { + margin-top: 0 !important + } + + .mr-lg-0, .mx-lg-0 { + margin-right: 0 !important + } + + .mb-lg-0, .my-lg-0 { + margin-bottom: 0 !important + } + + .ml-lg-0, .mx-lg-0 { + margin-left: 0 !important + } + + .m-lg-1 { + margin: 0.25rem !important + } + + .mt-lg-1, .my-lg-1 { + margin-top: 0.25rem !important + } + + .mr-lg-1, .mx-lg-1 { + margin-right: 0.25rem !important + } + + .mb-lg-1, .my-lg-1 { + margin-bottom: 0.25rem !important + } + + .ml-lg-1, .mx-lg-1 { + margin-left: 0.25rem !important + } + + .m-lg-2 { + margin: 0.5rem !important + } + + .mt-lg-2, .my-lg-2 { + margin-top: 0.5rem !important + } + + .mr-lg-2, .mx-lg-2 { + margin-right: 0.5rem !important + } + + .mb-lg-2, .my-lg-2 { + margin-bottom: 0.5rem !important + } + + .ml-lg-2, .mx-lg-2 { + margin-left: 0.5rem !important + } + + .m-lg-3 { + margin: 1rem !important + } + + .mt-lg-3, .my-lg-3 { + margin-top: 1rem !important + } + + .mr-lg-3, .mx-lg-3 { + margin-right: 1rem !important + } + + .mb-lg-3, .my-lg-3 { + margin-bottom: 1rem !important + } + + .ml-lg-3, .mx-lg-3 { + margin-left: 1rem !important + } + + .m-lg-4 { + margin: 1.5rem !important + } + + .mt-lg-4, .my-lg-4 { + margin-top: 1.5rem !important + } + + .mr-lg-4, .mx-lg-4 { + margin-right: 1.5rem !important + } + + .mb-lg-4, .my-lg-4 { + margin-bottom: 1.5rem !important + } + + .ml-lg-4, .mx-lg-4 { + margin-left: 1.5rem !important + } + + .m-lg-5 { + margin: 3rem !important + } + + .mt-lg-5, .my-lg-5 { + margin-top: 3rem !important + } + + .mr-lg-5, .mx-lg-5 { + margin-right: 3rem !important + } + + .mb-lg-5, .my-lg-5 { + margin-bottom: 3rem !important + } + + .ml-lg-5, .mx-lg-5 { + margin-left: 3rem !important + } + + .p-lg-0 { + padding: 0 !important + } + + .pt-lg-0, .py-lg-0 { + padding-top: 0 !important + } + + .pr-lg-0, .px-lg-0 { + padding-right: 0 !important + } + + .pb-lg-0, .py-lg-0 { + padding-bottom: 0 !important + } + + .pl-lg-0, .px-lg-0 { + padding-left: 0 !important + } + + .p-lg-1 { + padding: 0.25rem !important + } + + .pt-lg-1, .py-lg-1 { + padding-top: 0.25rem !important + } + + .pr-lg-1, .px-lg-1 { + padding-right: 0.25rem !important + } + + .pb-lg-1, .py-lg-1 { + padding-bottom: 0.25rem !important + } + + .pl-lg-1, .px-lg-1 { + padding-left: 0.25rem !important + } + + .p-lg-2 { + padding: 0.5rem !important + } + + .pt-lg-2, .py-lg-2 { + padding-top: 0.5rem !important + } + + .pr-lg-2, .px-lg-2 { + padding-right: 0.5rem !important + } + + .pb-lg-2, .py-lg-2 { + padding-bottom: 0.5rem !important + } + + .pl-lg-2, .px-lg-2 { + padding-left: 0.5rem !important + } + + .p-lg-3 { + padding: 1rem !important + } + + .pt-lg-3, .py-lg-3 { + padding-top: 1rem !important + } + + .pr-lg-3, .px-lg-3 { + padding-right: 1rem !important + } + + .pb-lg-3, .py-lg-3 { + padding-bottom: 1rem !important + } + + .pl-lg-3, .px-lg-3 { + padding-left: 1rem !important + } + + .p-lg-4 { + padding: 1.5rem !important + } + + .pt-lg-4, .py-lg-4 { + padding-top: 1.5rem !important + } + + .pr-lg-4, .px-lg-4 { + padding-right: 1.5rem !important + } + + .pb-lg-4, .py-lg-4 { + padding-bottom: 1.5rem !important + } + + .pl-lg-4, .px-lg-4 { + padding-left: 1.5rem !important + } + + .p-lg-5 { + padding: 3rem !important + } + + .pt-lg-5, .py-lg-5 { + padding-top: 3rem !important + } + + .pr-lg-5, .px-lg-5 { + padding-right: 3rem !important + } + + .pb-lg-5, .py-lg-5 { + padding-bottom: 3rem !important + } + + .pl-lg-5, .px-lg-5 { + padding-left: 3rem !important + } + + .m-lg-auto { + margin: auto !important + } + + .mt-lg-auto, .my-lg-auto { + margin-top: auto !important + } + + .mr-lg-auto, .mx-lg-auto { + margin-right: auto !important + } + + .mb-lg-auto, .my-lg-auto { + margin-bottom: auto !important + } + + .ml-lg-auto, .mx-lg-auto { + margin-left: auto !important + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important + } + + .mt-xl-0, .my-xl-0 { + margin-top: 0 !important + } + + .mr-xl-0, .mx-xl-0 { + margin-right: 0 !important + } + + .mb-xl-0, .my-xl-0 { + margin-bottom: 0 !important + } + + .ml-xl-0, .mx-xl-0 { + margin-left: 0 !important + } + + .m-xl-1 { + margin: 0.25rem !important + } + + .mt-xl-1, .my-xl-1 { + margin-top: 0.25rem !important + } + + .mr-xl-1, .mx-xl-1 { + margin-right: 0.25rem !important + } + + .mb-xl-1, .my-xl-1 { + margin-bottom: 0.25rem !important + } + + .ml-xl-1, .mx-xl-1 { + margin-left: 0.25rem !important + } + + .m-xl-2 { + margin: 0.5rem !important + } + + .mt-xl-2, .my-xl-2 { + margin-top: 0.5rem !important + } + + .mr-xl-2, .mx-xl-2 { + margin-right: 0.5rem !important + } + + .mb-xl-2, .my-xl-2 { + margin-bottom: 0.5rem !important + } + + .ml-xl-2, .mx-xl-2 { + margin-left: 0.5rem !important + } + + .m-xl-3 { + margin: 1rem !important + } + + .mt-xl-3, .my-xl-3 { + margin-top: 1rem !important + } + + .mr-xl-3, .mx-xl-3 { + margin-right: 1rem !important + } + + .mb-xl-3, .my-xl-3 { + margin-bottom: 1rem !important + } + + .ml-xl-3, .mx-xl-3 { + margin-left: 1rem !important + } + + .m-xl-4 { + margin: 1.5rem !important + } + + .mt-xl-4, .my-xl-4 { + margin-top: 1.5rem !important + } + + .mr-xl-4, .mx-xl-4 { + margin-right: 1.5rem !important + } + + .mb-xl-4, .my-xl-4 { + margin-bottom: 1.5rem !important + } + + .ml-xl-4, .mx-xl-4 { + margin-left: 1.5rem !important + } + + .m-xl-5 { + margin: 3rem !important + } + + .mt-xl-5, .my-xl-5 { + margin-top: 3rem !important + } + + .mr-xl-5, .mx-xl-5 { + margin-right: 3rem !important + } + + .mb-xl-5, .my-xl-5 { + margin-bottom: 3rem !important + } + + .ml-xl-5, .mx-xl-5 { + margin-left: 3rem !important + } + + .p-xl-0 { + padding: 0 !important + } + + .pt-xl-0, .py-xl-0 { + padding-top: 0 !important + } + + .pr-xl-0, .px-xl-0 { + padding-right: 0 !important + } + + .pb-xl-0, .py-xl-0 { + padding-bottom: 0 !important + } + + .pl-xl-0, .px-xl-0 { + padding-left: 0 !important + } + + .p-xl-1 { + padding: 0.25rem !important + } + + .pt-xl-1, .py-xl-1 { + padding-top: 0.25rem !important + } + + .pr-xl-1, .px-xl-1 { + padding-right: 0.25rem !important + } + + .pb-xl-1, .py-xl-1 { + padding-bottom: 0.25rem !important + } + + .pl-xl-1, .px-xl-1 { + padding-left: 0.25rem !important + } + + .p-xl-2 { + padding: 0.5rem !important + } + + .pt-xl-2, .py-xl-2 { + padding-top: 0.5rem !important + } + + .pr-xl-2, .px-xl-2 { + padding-right: 0.5rem !important + } + + .pb-xl-2, .py-xl-2 { + padding-bottom: 0.5rem !important + } + + .pl-xl-2, .px-xl-2 { + padding-left: 0.5rem !important + } + + .p-xl-3 { + padding: 1rem !important + } + + .pt-xl-3, .py-xl-3 { + padding-top: 1rem !important + } + + .pr-xl-3, .px-xl-3 { + padding-right: 1rem !important + } + + .pb-xl-3, .py-xl-3 { + padding-bottom: 1rem !important + } + + .pl-xl-3, .px-xl-3 { + padding-left: 1rem !important + } + + .p-xl-4 { + padding: 1.5rem !important + } + + .pt-xl-4, .py-xl-4 { + padding-top: 1.5rem !important + } + + .pr-xl-4, .px-xl-4 { + padding-right: 1.5rem !important + } + + .pb-xl-4, .py-xl-4 { + padding-bottom: 1.5rem !important + } + + .pl-xl-4, .px-xl-4 { + padding-left: 1.5rem !important + } + + .p-xl-5 { + padding: 3rem !important + } + + .pt-xl-5, .py-xl-5 { + padding-top: 3rem !important + } + + .pr-xl-5, .px-xl-5 { + padding-right: 3rem !important + } + + .pb-xl-5, .py-xl-5 { + padding-bottom: 3rem !important + } + + .pl-xl-5, .px-xl-5 { + padding-left: 3rem !important + } + + .m-xl-auto { + margin: auto !important + } + + .mt-xl-auto, .my-xl-auto { + margin-top: auto !important + } + + .mr-xl-auto, .mx-xl-auto { + margin-right: auto !important + } + + .mb-xl-auto, .my-xl-auto { + margin-bottom: auto !important + } + + .ml-xl-auto, .mx-xl-auto { + margin-left: auto !important + } +} + +.text-justify { + text-align: justify !important +} + +.text-nowrap { + white-space: nowrap !important +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +.text-left { + text-align: left !important +} + +.text-right { + text-align: right !important +} + +.text-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-light { + font-weight: 300 !important +} + +.font-weight-normal { + font-weight: 400 !important +} + +.font-weight-bold { + font-weight: 700 !important +} + +.font-italic { + font-style: italic !important +} + +.text-white { + color: #fff !important +} + +.text-primary { + color: #2FA4E7 !important +} + +a.text-primary:hover, a.text-primary:focus { + color: #178acc !important +} + +.text-secondary { + color: #e9ecef !important +} + +a.text-secondary:hover, a.text-secondary:focus { + color: #cbd3da !important +} + +.text-success { + color: #73A839 !important +} + +a.text-success:hover, a.text-success:focus { + color: #59822c !important +} + +.text-info { + color: #033C73 !important +} + +a.text-info:hover, a.text-info:focus { + color: #022241 !important +} + +.text-warning { + color: #DD5600 !important +} + +a.text-warning:hover, a.text-warning:focus { + color: #aa4200 !important +} + +.text-danger { + color: #C71C22 !important +} + +a.text-danger:hover, a.text-danger:focus { + color: #9a161a !important +} + +.text-light { + color: #f8f9fa !important +} + +a.text-light:hover, a.text-light:focus { + color: #dae0e5 !important +} + +.text-dark { + color: #343a40 !important +} + +a.text-dark:hover, a.text-dark:focus { + color: #1d2124 !important +} + +.text-muted { + color: #868e96 !important +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0 +} + +.visible { + visibility: visible !important +} + +.invisible { + visibility: hidden !important +} + +@media print { + *, *::before, *::after { + text-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important + } + + a:not(.btn) { + 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 + } + + @page { + size: a3 + } + + body { + min-width: 992px !important + } + + .container { + min-width: 992px !important + } + + .navbar { + display: none + } + + .badge { + 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 + } +} + +.bg-primary { + background-image: -webkit-gradient(linear, left top, left bottom, from(#54b4eb), color-stop(60%, #2FA4E7), to(#1d9ce5)); + background-image: linear-gradient(#54b4eb, #2FA4E7 60%, #1d9ce5); + background-repeat: no-repeat +} + +.bg-dark { + background-image: -webkit-gradient(linear, left top, left bottom, from(#04519b), color-stop(60%, #033C73), to(#02325f)); + background-image: linear-gradient(#04519b, #033C73 60%, #02325f); + background-repeat: no-repeat +} + +.bg-light { + background-image: -webkit-gradient(linear, left top, left bottom, from(white), color-stop(60%, #e9ecef), to(#e3e7eb)); + background-image: linear-gradient(white, #e9ecef 60%, #e3e7eb); + background-repeat: no-repeat +} + +.navbar-brand, .nav-link { + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.05) +} + +.btn { + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.05) +} + +.btn-primary { + background-image: -webkit-gradient(linear, left top, left bottom, from(#54b4eb), color-stop(60%, #2FA4E7), to(#1d9ce5)); + background-image: linear-gradient(#54b4eb, #2FA4E7 60%, #1d9ce5); + background-repeat: no-repeat +} + +.btn-secondary { + background-image: -webkit-gradient(linear, left top, left bottom, from(white), color-stop(60%, #e9ecef), to(#dde2e6)); + background-image: linear-gradient(white, #e9ecef 60%, #dde2e6); + background-repeat: no-repeat; + color: #495057 +} + +.btn-success { + background-image: -webkit-gradient(linear, left top, left bottom, from(#88c149), color-stop(60%, #73A839), to(#699934)); + background-image: linear-gradient(#88c149, #73A839 60%, #699934); + background-repeat: no-repeat +} + +.btn-info { + background-image: -webkit-gradient(linear, left top, left bottom, from(#04519b), color-stop(60%, #033C73), to(#02325f)); + background-image: linear-gradient(#04519b, #033C73 60%, #02325f); + background-repeat: no-repeat +} + +.btn-warning { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ff6707), color-stop(60%, #DD5600), to(#c94e00)); + background-image: linear-gradient(#ff6707, #DD5600 60%, #c94e00); + background-repeat: no-repeat +} + +.btn-danger { + background-image: -webkit-gradient(linear, left top, left bottom, from(#e12b31), color-stop(60%, #C71C22), to(#b5191f)); + background-image: linear-gradient(#e12b31, #C71C22 60%, #b5191f); + background-repeat: no-repeat +} + +.bg-primary h1, .bg-primary h2, .bg-primary h3, .bg-primary h4, .bg-primary h5, .bg-primary h6, .bg-success h1, .bg-success h2, .bg-success h3, .bg-success h4, .bg-success h5, .bg-success h6, .bg-info h1, .bg-info h2, .bg-info h3, .bg-info h4, .bg-info h5, .bg-info h6, .bg-warning h1, .bg-warning h2, .bg-warning h3, .bg-warning h4, .bg-warning h5, .bg-warning h6, .bg-danger h1, .bg-danger h2, .bg-danger h3, .bg-danger h4, .bg-danger h5, .bg-danger h6, .bg-dark h1, .bg-dark h2, .bg-dark h3, .bg-dark h4, .bg-dark h5, .bg-dark h6 { + color: #fff +} diff --git a/modules/services/unix/http/parameterised_website/files/themes/cyborg.min.css b/modules/services/unix/http/parameterised_website/files/themes/cyborg.min.css new file mode 100644 index 000000000..e327b2ec2 --- /dev/null +++ b/modules/services/unix/http/parameterised_website/files/themes/cyborg.min.css @@ -0,0 +1,12 @@ +/*! + * Bootswatch v4.0.0 + * Homepage: https://bootswatch.com + * Copyright 2012-2018 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */@import url("https://fonts.googleapis.com/css?family=Roboto:400,700");:root{--blue:#2A9FD6;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#CC0000;--orange:#fd7e14;--yellow:#FF8800;--green:#77B300;--teal:#20c997;--cyan:#9933CC;--white:#fff;--gray:#555;--gray-dark:#222;--primary:#2A9FD6;--secondary:#555;--success:#77B300;--info:#9933CC;--warning:#FF8800;--danger:#CC0000;--light:#f8f9fa;--dark:#222;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:0.875rem;font-weight:400;line-height:1.5;color:#888;text-align:left;background-color:#060606}[tabindex="-1"]:focus{outline:0 !important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}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:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#2A9FD6;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#1d7097;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:0.75rem;padding-bottom:0.75rem;color:#555;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}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{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[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.2;color:#fff}h1,.h1{font-size:4rem}h2,.h2{font-size:3rem}h3,.h3{font-size:2.5rem}h4,.h4{font-size:2rem}h5,.h5{font-size:1.5rem}h6,.h6{font-size:0.875rem}.lead{font-size:1.09375rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}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:400}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:0.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.09375rem}.blockquote-footer{display:block;font-size:80%;color:#555}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:0.25rem;background-color:#060606;border:1px solid #dee2e6;border-radius:0.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:0.5rem;line-height:1}.figure-caption{font-size:90%;color:#555}code,kbd,pre,samp{font-family:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:0.2rem 0.4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:0.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.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-sm,.col-sm-auto,.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-md,.col-md-auto,.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-lg,.col-lg-auto,.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,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table th,.table td{padding:0.75rem;vertical-align:top;border-top:1px solid #282828}.table thead th{vertical-align:bottom;border-bottom:2px solid #282828}.table tbody+tbody{border-top:2px solid #282828}.table .table{background-color:#060606}.table-sm th,.table-sm td{padding:0.3rem}.table-bordered{border:1px solid #282828}.table-bordered th,.table-bordered td{border:1px solid #282828}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#c3e4f4}.table-hover .table-primary:hover{background-color:#addaf0}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#addaf0}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#cfcfcf}.table-hover .table-secondary:hover{background-color:#c2c2c2}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c2c2c2}.table-success,.table-success>th,.table-success>td{background-color:#d9eab8}.table-hover .table-success:hover{background-color:#cee4a4}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#cee4a4}.table-info,.table-info>th,.table-info>td{background-color:#e2c6f1}.table-hover .table-info:hover{background-color:#d8b2ec}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#d8b2ec}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffdeb8}.table-hover .table-warning:hover{background-color:#ffd29f}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffd29f}.table-danger,.table-danger>th,.table-danger>td{background-color:#f1b8b8}.table-hover .table-danger:hover{background-color:#eda3a3}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#eda3a3}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c1c1c1}.table-hover .table-dark:hover{background-color:#b4b4b4}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b4b4b4}.table-active,.table-active>th,.table-active>td{background-color:rgba(255,255,255,0.075)}.table-hover .table-active:hover{background-color:rgba(242,242,242,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(242,242,242,0.075)}.table .thead-dark th{color:#060606;background-color:#888;border-color:#757575}.table .thead-light th{color:#fff;background-color:#e9ecef;border-color:#282828}.table-dark{color:#060606;background-color:#888}.table-dark th,.table-dark td,.table-dark thead th{border-color:#757575}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:0.375rem 1rem;font-size:0.875rem;line-height:1.5;color:#282828;background-color:#fff;background-clip:padding-box;border:1px solid transparent;border-radius:0.25rem;-webkit-transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#282828;background-color:#fff;border-color:#95cfeb;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(42,159,214,0.25);box-shadow:0 0 0 0.2rem rgba(42,159,214,0.25)}.form-control::-webkit-input-placeholder{color:#555;opacity:1}.form-control:-ms-input-placeholder{color:#555;opacity:1}.form-control::-ms-input-placeholder{color:#555;opacity:1}.form-control::placeholder{color:#555;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#ADAFAE;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.0625rem + 2px)}select.form-control:focus::-ms-value{color:#282828;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.09375rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.765625rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:0.375rem;padding-bottom:0.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:0.25rem 0.5rem;font-size:0.765625rem;line-height:1.5;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>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.6484375rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:0.5rem 1rem;font-size:1.09375rem;line-height:1.5;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>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.640625rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:0.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:0.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#555}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:0.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:0.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#77B300}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(119,179,0,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#77B300}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#77B300;-webkit-box-shadow:0 0 0 0.2rem rgba(119,179,0,0.25);box-shadow:0 0 0 0.2rem rgba(119,179,0,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#77B300}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#77B300}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#bbff34}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#99e600}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #060606,0 0 0 0.2rem rgba(119,179,0,0.25);box-shadow:0 0 0 1px #060606,0 0 0 0.2rem rgba(119,179,0,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#77B300}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(119,179,0,0.25);box-shadow:0 0 0 0.2rem rgba(119,179,0,0.25)}.invalid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#CC0000}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(204,0,0,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#CC0000}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#CC0000;-webkit-box-shadow:0 0 0 0.2rem rgba(204,0,0,0.25);box-shadow:0 0 0 0.2rem rgba(204,0,0,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#CC0000}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#CC0000}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#ff4d4d}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:red}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #060606,0 0 0 0.2rem rgba(204,0,0,0.25);box-shadow:0 0 0 1px #060606,0 0 0 0.2rem rgba(204,0,0,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#CC0000}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(204,0,0,0.25);box-shadow:0 0 0 0.2rem rgba(204,0,0,0.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:0.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:0.375rem 1rem;font-size:0.875rem;line-height:1.5;border-radius:0.25rem;-webkit-transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(42,159,214,0.25);box-shadow:0 0 0 0.2rem rgba(42,159,214,0.25)}.btn.disabled,.btn:disabled{opacity:0.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#2A9FD6;border-color:#2A9FD6}.btn-primary:hover{color:#fff;background-color:#2387b7;border-color:#2180ac}.btn-primary:focus,.btn-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(42,159,214,0.5);box-shadow:0 0 0 0.2rem rgba(42,159,214,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#2A9FD6;border-color:#2A9FD6}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2180ac;border-color:#1f78a1}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(42,159,214,0.5);box-shadow:0 0 0 0.2rem rgba(42,159,214,0.5)}.btn-secondary{color:#fff;background-color:#555;border-color:#555}.btn-secondary:hover{color:#fff;background-color:#424242;border-color:#3c3b3b}.btn-secondary:focus,.btn-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#555;border-color:#555}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#3c3b3b;border-color:#353535}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-success{color:#fff;background-color:#77B300;border-color:#77B300}.btn-success:hover{color:#fff;background-color:#5e8d00;border-color:#558000}.btn-success:focus,.btn-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(119,179,0,0.5);box-shadow:0 0 0 0.2rem rgba(119,179,0,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#77B300;border-color:#77B300}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#558000;border-color:#4d7300}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(119,179,0,0.5);box-shadow:0 0 0 0.2rem rgba(119,179,0,0.5)}.btn-info{color:#fff;background-color:#9933CC;border-color:#9933CC}.btn-info:hover{color:#fff;background-color:#822bad;border-color:#7a29a3}.btn-info:focus,.btn-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(153,51,204,0.5);box-shadow:0 0 0 0.2rem rgba(153,51,204,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#9933CC;border-color:#9933CC}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#7a29a3;border-color:#732699}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(153,51,204,0.5);box-shadow:0 0 0 0.2rem rgba(153,51,204,0.5)}.btn-warning{color:#212529;background-color:#FF8800;border-color:#FF8800}.btn-warning:hover{color:#fff;background-color:#d97400;border-color:#cc6d00}.btn-warning:focus,.btn-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,136,0,0.5);box-shadow:0 0 0 0.2rem rgba(255,136,0,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#FF8800;border-color:#FF8800}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#cc6d00;border-color:#bf6600}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,136,0,0.5);box-shadow:0 0 0 0.2rem rgba(255,136,0,0.5)}.btn-danger{color:#fff;background-color:#CC0000;border-color:#CC0000}.btn-danger:hover{color:#fff;background-color:#a60000;border-color:#990000}.btn-danger:focus,.btn-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(204,0,0,0.5);box-shadow:0 0 0 0.2rem rgba(204,0,0,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#CC0000;border-color:#CC0000}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#990000;border-color:#8c0000}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(204,0,0,0.5);box-shadow:0 0 0 0.2rem rgba(204,0,0,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5);box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5);box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#222;border-color:#222}.btn-dark:hover{color:#fff;background-color:#0f0f0f;border-color:#090808}.btn-dark:focus,.btn-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5);box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#222;border-color:#222}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#090808;border-color:#020202}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5);box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5)}.btn-outline-primary{color:#2A9FD6;background-color:transparent;background-image:none;border-color:#2A9FD6}.btn-outline-primary:hover{color:#fff;background-color:#2A9FD6;border-color:#2A9FD6}.btn-outline-primary:focus,.btn-outline-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(42,159,214,0.5);box-shadow:0 0 0 0.2rem rgba(42,159,214,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#2A9FD6;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#2A9FD6;border-color:#2A9FD6}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(42,159,214,0.5);box-shadow:0 0 0 0.2rem rgba(42,159,214,0.5)}.btn-outline-secondary{color:#555;background-color:transparent;background-image:none;border-color:#555}.btn-outline-secondary:hover{color:#fff;background-color:#555;border-color:#555}.btn-outline-secondary:focus,.btn-outline-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#555;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#555;border-color:#555}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-outline-success{color:#77B300;background-color:transparent;background-image:none;border-color:#77B300}.btn-outline-success:hover{color:#fff;background-color:#77B300;border-color:#77B300}.btn-outline-success:focus,.btn-outline-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(119,179,0,0.5);box-shadow:0 0 0 0.2rem rgba(119,179,0,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#77B300;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#77B300;border-color:#77B300}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(119,179,0,0.5);box-shadow:0 0 0 0.2rem rgba(119,179,0,0.5)}.btn-outline-info{color:#9933CC;background-color:transparent;background-image:none;border-color:#9933CC}.btn-outline-info:hover{color:#fff;background-color:#9933CC;border-color:#9933CC}.btn-outline-info:focus,.btn-outline-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(153,51,204,0.5);box-shadow:0 0 0 0.2rem rgba(153,51,204,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#9933CC;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#9933CC;border-color:#9933CC}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(153,51,204,0.5);box-shadow:0 0 0 0.2rem rgba(153,51,204,0.5)}.btn-outline-warning{color:#FF8800;background-color:transparent;background-image:none;border-color:#FF8800}.btn-outline-warning:hover{color:#212529;background-color:#FF8800;border-color:#FF8800}.btn-outline-warning:focus,.btn-outline-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,136,0,0.5);box-shadow:0 0 0 0.2rem rgba(255,136,0,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#FF8800;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#FF8800;border-color:#FF8800}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,136,0,0.5);box-shadow:0 0 0 0.2rem rgba(255,136,0,0.5)}.btn-outline-danger{color:#CC0000;background-color:transparent;background-image:none;border-color:#CC0000}.btn-outline-danger:hover{color:#fff;background-color:#CC0000;border-color:#CC0000}.btn-outline-danger:focus,.btn-outline-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(204,0,0,0.5);box-shadow:0 0 0 0.2rem rgba(204,0,0,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#CC0000;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#CC0000;border-color:#CC0000}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(204,0,0,0.5);box-shadow:0 0 0 0.2rem rgba(204,0,0,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5);box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5);box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#222;background-color:transparent;background-image:none;border-color:#222}.btn-outline-dark:hover{color:#fff;background-color:#222;border-color:#222}.btn-outline-dark:focus,.btn-outline-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5);box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#222;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#222;border-color:#222}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5);box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5)}.btn-link{font-weight:400;color:#2A9FD6;background-color:transparent}.btn-link:hover{color:#1d7097;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#555}.btn-lg,.btn-group-lg>.btn{padding:0.5rem 1rem;font-size:1.09375rem;line-height:1.5;border-radius:0.3rem}.btn-sm,.btn-group-sm>.btn{padding:0.25rem 0.5rem;font-size:0.765625rem;line-height:1.5;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 0.15s linear;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.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:0.875rem;color:#888;text-align:left;list-style:none;background-color:#282828;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:0.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:0.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:0.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:0.5rem 0;overflow:hidden;border-top:1px solid #222}.dropdown-item{display:block;width:100%;padding:0.25rem 1.5rem;clear:both;font-weight:400;color:#fff;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#fff;text-decoration:none;background-color:#2A9FD6}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#2A9FD6}.dropdown-item.disabled,.dropdown-item:disabled{color:#555;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0.5rem 1.5rem;margin-bottom:0;font-size:0.765625rem;color:#555;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.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:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.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-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:0.75rem;padding-left:0.75rem}.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:0.75rem;padding-left:0.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.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(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0.375rem 1rem;margin-bottom:0;font-size:0.875rem;font-weight:400;line-height:1.5;color:#282828;text-align:center;white-space:nowrap;background-color:#282828;border:1px solid transparent;border-radius:0.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#2A9FD6}.custom-control-input:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #060606,0 0 0 0.2rem rgba(42,159,214,0.25);box-shadow:0 0 0 1px #060606,0 0 0 0.2rem rgba(42,159,214,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#c0e2f3}.custom-control-input:disabled ~ .custom-control-label{color:#555}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:0.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#2A9FD6}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{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='%23fff' 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-label::before{background-color:#2A9FD6}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{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='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(42,159,214,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(42,159,214,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#2A9FD6}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{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='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(42,159,214,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.0625rem + 2px);padding:0.375rem 1.75rem 0.375rem 0.75rem;line-height:1.5;color:#282828;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='%23222' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;background-size:8px 10px;border:1px solid transparent;border-radius:0.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#95cfeb;outline:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(149,207,235,0.5);box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(149,207,235,0.5)}.custom-select:focus::-ms-value{color:#282828;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:0.75rem;background-image:none}.custom-select:disabled{color:#555;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.6484375rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:75%}.custom-select-lg{height:calc(2.640625rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.0625rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.0625rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#95cfeb;-webkit-box-shadow:0 0 0 0.2rem rgba(42,159,214,0.25);box-shadow:0 0 0 0.2rem rgba(42,159,214,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#95cfeb}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.0625rem + 2px);padding:0.375rem 1rem;line-height:1.5;color:#282828;background-color:#fff;border:1px solid transparent;border-radius:0.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.0625rem + 2px) - 1px * 2);padding:0.375rem 1rem;line-height:1.5;color:#282828;content:"Browse";background-color:#282828;border-left:1px solid transparent;border-radius:0 0.25rem 0.25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:0.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#555}.nav-tabs{border-bottom:1px solid #282828}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#282828}.nav-tabs .nav-link.disabled{color:#555;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#fff;background-color:#282828;border-color:#282828}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:0.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#2A9FD6}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:0.3359375rem;padding-bottom:0.3359375rem;margin-right:1rem;font-size:1.09375rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:0.5rem;padding-bottom:0.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:0.25rem 0.75rem;font-size:1.09375rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:0.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{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:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' 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 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#fff}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' 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 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#282828;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:0.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-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-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.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-header{padding:0.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:0.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.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-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(0.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:0.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:0.25rem;border-bottom-left-radius:0.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:0.75rem}@media (min-width: 576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#282828;border-radius:0.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:0.5rem;padding-left:0.5rem;color:#555;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#555}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:0.25rem}.page-link{position:relative;display:block;padding:0.5rem 0.75rem;margin-left:-1px;line-height:1.25;color:#fff;background-color:#282828;border:1px solid transparent}.page-link:hover{color:#fff;text-decoration:none;background-color:#2A9FD6;border-color:transparent}.page-link:focus{z-index:2;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(42,159,214,0.25);box-shadow:0 0 0 0.2rem rgba(42,159,214,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:0.25rem;border-bottom-left-radius:0.25rem}.page-item:last-child .page-link{border-top-right-radius:0.25rem;border-bottom-right-radius:0.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#2A9FD6;border-color:#2A9FD6}.page-item.disabled .page-link{color:#555;pointer-events:none;cursor:auto;background-color:#282828;border-color:transparent}.pagination-lg .page-link{padding:0.75rem 1.5rem;font-size:1.09375rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:0.3rem;border-bottom-left-radius:0.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:0.3rem;border-bottom-right-radius:0.3rem}.pagination-sm .page-link{padding:0.25rem 0.5rem;font-size:0.765625rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:0.2rem;border-bottom-left-radius:0.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:0.2rem;border-bottom-right-radius:0.2rem}.badge{display:inline-block;padding:0.25em 0.4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:0.6em;padding-left:0.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#2A9FD6}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#2180ac}.badge-secondary{color:#fff;background-color:#555}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#3c3b3b}.badge-success{color:#fff;background-color:#77B300}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#558000}.badge-info{color:#fff;background-color:#9933CC}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#7a29a3}.badge-warning{color:#212529;background-color:#FF8800}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#cc6d00}.badge-danger{color:#fff;background-color:#CC0000}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#990000}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#222}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#090808}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#282828;border-radius:0.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:0.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:0.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3.8125rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:0.75rem 1.25rem;color:inherit}.alert-primary{color:#16536f;background-color:#d4ecf7;border-color:#c3e4f4}.alert-primary hr{border-top-color:#addaf0}.alert-primary .alert-link{color:#0e3344}.alert-secondary{color:#2c2c2c;background-color:#dddddd;border-color:#cfcfcf}.alert-secondary hr{border-top-color:#c2c2c2}.alert-secondary .alert-link{color:#131212}.alert-success{color:#3e5d00;background-color:#e4f0cc;border-color:#d9eab8}.alert-success hr{border-top-color:#cee4a4}.alert-success .alert-link{color:#1c2a00}.alert-info{color:#501b6a;background-color:#ebd6f5;border-color:#e2c6f1}.alert-info hr{border-top-color:#d8b2ec}.alert-info .alert-link{color:#311141}.alert-warning{color:#854700;background-color:#ffe7cc;border-color:#ffdeb8}.alert-warning hr{border-top-color:#ffd29f}.alert-warning .alert-link{color:#522c00}.alert-danger{color:#6a0000;background-color:#f5cccc;border-color:#f1b8b8}.alert-danger hr{border-top-color:#eda3a3}.alert-danger .alert-link{color:#370000}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#121212;background-color:lightgray;border-color:#c1c1c1}.alert-dark hr{border-top-color:#b4b4b4}.alert-dark .alert-link{color:black}@-webkit-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:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:0.65625rem;background-color:#282828;border-radius:0.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#2A9FD6;-webkit-transition:width 0.6s ease;transition:width 0.6s ease}.progress-bar-striped{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-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#282828;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#282828;text-decoration:none;background-color:#2A9FD6}.list-group-item-action:active{color:#888;background-color:#2A9FD6}.list-group-item{position:relative;display:block;padding:0.75rem 1.25rem;margin-bottom:-1px;background-color:#222;border:1px solid #282828}.list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-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:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#555;background-color:#282828}.list-group-item.active{z-index:2;color:#fff;background-color:#2A9FD6;border-color:#2A9FD6}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#16536f;background-color:#c3e4f4}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#16536f;background-color:#addaf0}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#16536f;border-color:#16536f}.list-group-item-secondary{color:#2c2c2c;background-color:#cfcfcf}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#2c2c2c;background-color:#c2c2c2}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#2c2c2c;border-color:#2c2c2c}.list-group-item-success{color:#3e5d00;background-color:#d9eab8}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#3e5d00;background-color:#cee4a4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#3e5d00;border-color:#3e5d00}.list-group-item-info{color:#501b6a;background-color:#e2c6f1}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#501b6a;background-color:#d8b2ec}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#501b6a;border-color:#501b6a}.list-group-item-warning{color:#854700;background-color:#ffdeb8}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#854700;background-color:#ffd29f}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#854700;border-color:#854700}.list-group-item-danger{color:#6a0000;background-color:#f1b8b8}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#6a0000;background-color:#eda3a3}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#6a0000;border-color:#6a0000}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#121212;background-color:#c1c1c1}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#121212;background-color:#b4b4b4}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#121212;border-color:#121212}.close{float:right;font-size:1.3125rem;font-weight:700;line-height:1;color:#fff;text-shadow:none;opacity:.5}.close:hover,.close:focus{color:#fff;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color: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-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:0.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;transition:-webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out;transition:transform 0.3s ease-out, -webkit-transform 0.3s ease-out;-webkit-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.show .modal-dialog{-webkit-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (0.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#222;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.show{opacity:0.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #282828;border-top-left-radius:0.3rem;border-top-right-radius:0.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #282828}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.765625rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:1}.tooltip .arrow{position:absolute;display:block;width:0.8rem;height:0.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:0.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:0.4rem 0.4rem 0;border-top-color:#282828}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 0.4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:0.4rem;height:0.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:0.4rem 0.4rem 0.4rem 0;border-right-color:#282828}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:0.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 0.4rem 0.4rem;border-bottom-color:#282828}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 0.4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:0.4rem;height:0.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:0.4rem 0 0.4rem 0.4rem;border-left-color:#282828}.tooltip-inner{max-width:200px;padding:0.25rem 0.5rem;color:#fff;text-align:center;background-color:#282828;border-radius:0.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.765625rem;word-wrap:break-word;background-color:#282828;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:0.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:0.5rem;margin:0 0.3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:0.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((0.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:0.5rem 0.5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#282828}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:0.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:0.5rem 0.5rem 0.5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#282828}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:0.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((0.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 0.5rem 0.5rem 0.5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#282828}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #202020}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:0.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:0.5rem 0 0.5rem 0.5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#282828}.popover-header{padding:0.5rem 0.75rem;margin-bottom:0;font-size:0.875rem;color:#fff;background-color:#202020;border-bottom:1px solid #141414;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:0.5rem 0.75rem;color:#888}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-webkit-transition:-webkit-transform 0.6s ease;transition:-webkit-transform 0.6s ease;transition:transform 0.6s ease;transition:transform 0.6s ease, -webkit-transform 0.6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:0.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{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}.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-primary{background-color:#2A9FD6 !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#2180ac !important}.bg-secondary{background-color:#555 !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#3c3b3b !important}.bg-success{background-color:#77B300 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#558000 !important}.bg-info{background-color:#9933CC !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#7a29a3 !important}.bg-warning{background-color:#FF8800 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#cc6d00 !important}.bg-danger{background-color:#CC0000 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#990000 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#222 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#090808 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#2A9FD6 !important}.border-secondary{border-color:#555 !important}.border-success{border-color:#77B300 !important}.border-info{border-color:#9933CC !important}.border-warning{border-color:#FF8800 !important}.border-danger{border-color:#CC0000 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#222 !important}.border-white{border-color:#fff !important}.rounded{border-radius:0.25rem !important}.rounded-top{border-top-left-radius:0.25rem !important;border-top-right-radius:0.25rem !important}.rounded-right{border-top-right-radius:0.25rem !important;border-bottom-right-radius:0.25rem !important}.rounded-bottom{border-bottom-right-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-left{border-top-left-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-sm-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-md-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-lg-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-xl-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-print-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.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::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-sm-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-sm-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-sm-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-sm-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-sm-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-sm-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-sm-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-sm-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-sm-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-sm-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-sm-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-sm-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-sm-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-sm-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-sm-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-sm-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-sm-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-sm-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-sm-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-sm-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-sm-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-sm-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-sm-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-sm-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-sm-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-sm-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-sm-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-md-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-md-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-md-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-md-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-md-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-md-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-md-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-md-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-md-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-md-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-md-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-md-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-md-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-md-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-md-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-md-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-md-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-md-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-md-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-md-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-md-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-md-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-md-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-md-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-md-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-md-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-md-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-lg-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-lg-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-lg-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-lg-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-lg-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-lg-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-lg-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-lg-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-lg-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-lg-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-lg-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-lg-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-lg-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-lg-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-lg-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-lg-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-lg-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-lg-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-lg-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-lg-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-lg-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-lg-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-lg-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-lg-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-lg-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-lg-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-lg-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-xl-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-xl-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-xl-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-xl-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-xl-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-xl-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-xl-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-xl-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-xl-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-xl-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-xl-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-xl-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-xl-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-xl-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-xl-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-xl-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-xl-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-xl-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-xl-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-xl-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-xl-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-xl-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-xl-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-xl-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-xl-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-xl-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-xl-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-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}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: -webkit-sticky) or (position: sticky){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:0.25rem !important}.mt-1,.my-1{margin-top:0.25rem !important}.mr-1,.mx-1{margin-right:0.25rem !important}.mb-1,.my-1{margin-bottom:0.25rem !important}.ml-1,.mx-1{margin-left:0.25rem !important}.m-2{margin:0.5rem !important}.mt-2,.my-2{margin-top:0.5rem !important}.mr-2,.mx-2{margin-right:0.5rem !important}.mb-2,.my-2{margin-bottom:0.5rem !important}.ml-2,.mx-2{margin-left:0.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:0.25rem !important}.pt-1,.py-1{padding-top:0.25rem !important}.pr-1,.px-1{padding-right:0.25rem !important}.pb-1,.py-1{padding-bottom:0.25rem !important}.pl-1,.px-1{padding-left:0.25rem !important}.p-2{padding:0.5rem !important}.pt-2,.py-2{padding-top:0.5rem !important}.pr-2,.px-2{padding-right:0.5rem !important}.pb-2,.py-2{padding-bottom:0.5rem !important}.pl-2,.px-2{padding-left:0.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:0.25rem !important}.mt-sm-1,.my-sm-1{margin-top:0.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:0.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:0.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:0.25rem !important}.m-sm-2{margin:0.5rem !important}.mt-sm-2,.my-sm-2{margin-top:0.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:0.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:0.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:0.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:0.25rem !important}.pt-sm-1,.py-sm-1{padding-top:0.25rem !important}.pr-sm-1,.px-sm-1{padding-right:0.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:0.25rem !important}.pl-sm-1,.px-sm-1{padding-left:0.25rem !important}.p-sm-2{padding:0.5rem !important}.pt-sm-2,.py-sm-2{padding-top:0.5rem !important}.pr-sm-2,.px-sm-2{padding-right:0.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:0.5rem !important}.pl-sm-2,.px-sm-2{padding-left:0.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:0.25rem !important}.mt-md-1,.my-md-1{margin-top:0.25rem !important}.mr-md-1,.mx-md-1{margin-right:0.25rem !important}.mb-md-1,.my-md-1{margin-bottom:0.25rem !important}.ml-md-1,.mx-md-1{margin-left:0.25rem !important}.m-md-2{margin:0.5rem !important}.mt-md-2,.my-md-2{margin-top:0.5rem !important}.mr-md-2,.mx-md-2{margin-right:0.5rem !important}.mb-md-2,.my-md-2{margin-bottom:0.5rem !important}.ml-md-2,.mx-md-2{margin-left:0.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:0.25rem !important}.pt-md-1,.py-md-1{padding-top:0.25rem !important}.pr-md-1,.px-md-1{padding-right:0.25rem !important}.pb-md-1,.py-md-1{padding-bottom:0.25rem !important}.pl-md-1,.px-md-1{padding-left:0.25rem !important}.p-md-2{padding:0.5rem !important}.pt-md-2,.py-md-2{padding-top:0.5rem !important}.pr-md-2,.px-md-2{padding-right:0.5rem !important}.pb-md-2,.py-md-2{padding-bottom:0.5rem !important}.pl-md-2,.px-md-2{padding-left:0.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:0.25rem !important}.mt-lg-1,.my-lg-1{margin-top:0.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:0.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:0.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:0.25rem !important}.m-lg-2{margin:0.5rem !important}.mt-lg-2,.my-lg-2{margin-top:0.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:0.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:0.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:0.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:0.25rem !important}.pt-lg-1,.py-lg-1{padding-top:0.25rem !important}.pr-lg-1,.px-lg-1{padding-right:0.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:0.25rem !important}.pl-lg-1,.px-lg-1{padding-left:0.25rem !important}.p-lg-2{padding:0.5rem !important}.pt-lg-2,.py-lg-2{padding-top:0.5rem !important}.pr-lg-2,.px-lg-2{padding-right:0.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:0.5rem !important}.pl-lg-2,.px-lg-2{padding-left:0.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:0.25rem !important}.mt-xl-1,.my-xl-1{margin-top:0.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:0.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:0.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:0.25rem !important}.m-xl-2{margin:0.5rem !important}.mt-xl-2,.my-xl-2{margin-top:0.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:0.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:0.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:0.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:0.25rem !important}.pt-xl-1,.py-xl-1{padding-top:0.25rem !important}.pr-xl-1,.px-xl-1{padding-right:0.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:0.25rem !important}.pl-xl-1,.px-xl-1{padding-left:0.25rem !important}.p-xl-2{padding:0.5rem !important}.pt-xl-2,.py-xl-2{padding-top:0.5rem !important}.pr-xl-2,.px-xl-2{padding-right:0.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:0.5rem !important}.pl-xl-2,.px-xl-2{padding-left:0.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-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-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#2A9FD6 !important}a.text-primary:hover,a.text-primary:focus{color:#2180ac !important}.text-secondary{color:#555 !important}a.text-secondary:hover,a.text-secondary:focus{color:#3c3b3b !important}.text-success{color:#77B300 !important}a.text-success:hover,a.text-success:focus{color:#558000 !important}.text-info{color:#9933CC !important}a.text-info:hover,a.text-info:focus{color:#7a29a3 !important}.text-warning{color:#FF8800 !important}a.text-warning:hover,a.text-warning:focus{color:#cc6d00 !important}.text-danger{color:#CC0000 !important}a.text-danger:hover,a.text-danger:focus{color:#990000 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#222 !important}a.text-dark:hover,a.text-dark:focus{color:#090808 !important}.text-muted{color:#555 !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}a:not(.btn){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}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{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}}.navbar.bg-primary{border:1px solid #282828}.navbar.bg-dark{background-color:#060606 !important;border:1px solid #282828}.navbar.bg-light{background-color:#888 !important}.navbar.fixed-top{border-width:0 0 1px 0}.navbar.fixed-bottom{border-width:1px 0 0 0}.btn-warning,.btn-warning:hover{color:#fff}table{color:#fff}.table .thead-dark th{color:#fff}.table-success,.table-success>th,.table-success>td{background-color:#77B300}.table-info,.table-info>th,.table-info>td{background-color:#9933CC}.table-danger,.table-danger>th,.table-danger>td{background-color:#CC0000}.table-warning,.table-warning>th,.table-warning>td{background-color:#FF8800}.table-hover .table-success:hover,.table-hover .table-success:hover>th,.table-hover .table-success:hover>td{background-color:#669a00}.table-hover .table-info:hover,.table-hover .table-info:hover>th,.table-hover .table-info:hover>td{background-color:#8a2eb8}.table-hover .table-danger:hover,.table-hover .table-danger:hover>th,.table-hover .table-danger:hover>td{background-color:#b30000}.table-hover .table-warning:hover,.table-hover .table-warning:hover>th,.table-hover .table-warning:hover>td{background-color:#e67a00}legend,.input-group-addon{color:#fff}.nav-tabs .nav-link,.nav-pills .nav-link{color:#fff}.nav-tabs .nav-link:hover,.nav-pills .nav-link:hover{background-color:#282828}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:hover,.nav-pills .nav-link.disabled,.nav-pills .nav-link.disabled:hover{background-color:transparent;color:#555}.nav-tabs .nav-link.active,.nav-pills .nav-link.active{background-color:#2A9FD6}.breadcrumb a{color:#fff}.pagination a:hover{text-decoration:none}.alert{border:none;color:#fff}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-primary{background-color:#2A9FD6}.alert-secondary{background-color:#555}.alert-success{background-color:#77B300}.alert-info{background-color:#9933CC}.alert-warning{background-color:#FF8800}.alert-danger{background-color:#CC0000}.alert-light{background-color:#f8f9fa}.alert-dark{background-color:#222}.alert-light,.alert-light a,.alert-light .alert-link{color:#060606}.badge-warning{color:#fff}.close{opacity:0.6}.close:hover{opacity:1}.list-group-item:hover{background-color:#282828;color:#fff}.list-group-item-action{color:#888}.list-group-item-action .list-group-item-heading{color:#888}.list-group-item:hover .list-group-item-heading{color:#fff}.card h1,.card h2,.card h3,.card h4,.card h5,.card h6,.list-group-item h1,.list-group-item h2,.list-group-item h3,.list-group-item h4,.list-group-item h5,.list-group-item h6{color:inherit}.popover-title{border-bottom:none} diff --git a/modules/services/unix/http/parameterised_website/files/themes/journal.min.css b/modules/services/unix/http/parameterised_website/files/themes/journal.min.css new file mode 100644 index 000000000..b77b75c42 --- /dev/null +++ b/modules/services/unix/http/parameterised_website/files/themes/journal.min.css @@ -0,0 +1,12 @@ +/*! + * Bootswatch v4.0.0 + * Homepage: https://bootswatch.com + * Copyright 2012-2018 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */@import url("https://fonts.googleapis.com/css?family=News+Cycle:400,700");:root{--blue:#EB6864;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#F57A00;--orange:#fd7e14;--yellow:#F5E625;--green:#22B24C;--teal:#20c997;--cyan:#369;--white:#fff;--gray:#777;--gray-dark:#333;--primary:#EB6864;--secondary:#aaa;--success:#22B24C;--info:#369;--warning:#F5E625;--danger:#F57A00;--light:#f8f9fa;--dark:#222;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#222;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}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:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#EB6864;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#e22620;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:0.75rem;padding-bottom:0.75rem;color:#777;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}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{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:0.5rem;font-family:"News Cycle", "Arial Narrow Bold", sans-serif;font-weight:700;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;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}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:400}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:0.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#777}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:0.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:0.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:0.5rem;line-height:1}.figure-caption{font-size:90%;color:#777}code,kbd,pre,samp{font-family:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:0.2rem 0.4rem;font-size:87.5%;color:#fff;background-color:#222;border-radius:0.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#222}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.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-sm,.col-sm-auto,.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-md,.col-md-auto,.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-lg,.col-lg-auto,.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,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table th,.table td{padding:0.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:0.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.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-primary,.table-primary>th,.table-primary>td{background-color:#f9d5d4}.table-hover .table-primary:hover{background-color:#f6bfbe}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#f6bfbe}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#e7e7e7}.table-hover .table-secondary:hover{background-color:#dadada}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#dadada}.table-success,.table-success>th,.table-success>td{background-color:#c1e9cd}.table-hover .table-success:hover{background-color:#aee2be}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#aee2be}.table-info,.table-info>th,.table-info>td{background-color:#c6d4e2}.table-hover .table-info:hover{background-color:#b5c7d9}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b5c7d9}.table-warning,.table-warning>th,.table-warning>td{background-color:#fcf8c2}.table-hover .table-warning:hover{background-color:#fbf5aa}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#fbf5aa}.table-danger,.table-danger>th,.table-danger>td{background-color:#fcdab8}.table-hover .table-danger:hover{background-color:#fbcda0}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#fbcda0}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c1c1c1}.table-hover .table-dark:hover{background-color:#b4b4b4}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b4b4b4}.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 .thead-dark th{color:#fff;background-color:#222;border-color:#353535}.table .thead-light th{color:#495057;background-color:#eee;border-color:#dee2e6}.table-dark{color:#fff;background-color:#222}.table-dark th,.table-dark td,.table-dark thead th{border-color:#353535}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:0.375rem 1rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:0.25rem;-webkit-transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#fad6d5;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(235,104,100,0.25);box-shadow:0 0 0 0.2rem rgba(235,104,100,0.25)}.form-control::-webkit-input-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777;opacity:1}.form-control::-ms-input-placeholder{color:#777;opacity:1}.form-control::placeholder{color:#777;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eee;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:0.375rem;padding-bottom:0.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;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>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;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>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:0.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:0.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#777}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:0.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:0.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#22B24C}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(34,178,76,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#22B24C}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#22B24C;-webkit-box-shadow:0 0 0 0.2rem rgba(34,178,76,0.25);box-shadow:0 0 0 0.2rem rgba(34,178,76,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#22B24C}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#22B24C}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#70e492}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#30d761}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(34,178,76,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(34,178,76,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#22B24C}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(34,178,76,0.25);box-shadow:0 0 0 0.2rem rgba(34,178,76,0.25)}.invalid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#F57A00}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(245,122,0,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#F57A00}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#F57A00;-webkit-box-shadow:0 0 0 0.2rem rgba(245,122,0,0.25);box-shadow:0 0 0 0.2rem rgba(245,122,0,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#F57A00}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#F57A00}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#ffba76}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#ff9429}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(245,122,0,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(245,122,0,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#F57A00}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(245,122,0,0.25);box-shadow:0 0 0 0.2rem rgba(245,122,0,0.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:0.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:0.375rem 1rem;font-size:1rem;line-height:1.5;border-radius:0.25rem;-webkit-transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(235,104,100,0.25);box-shadow:0 0 0 0.2rem rgba(235,104,100,0.25)}.btn.disabled,.btn:disabled{opacity:0.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#EB6864;border-color:#EB6864}.btn-primary:hover{color:#fff;background-color:#e74742;border-color:#e53c37}.btn-primary:focus,.btn-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(235,104,100,0.5);box-shadow:0 0 0 0.2rem rgba(235,104,100,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#EB6864;border-color:#EB6864}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#e53c37;border-color:#e4312c}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(235,104,100,0.5);box-shadow:0 0 0 0.2rem rgba(235,104,100,0.5)}.btn-secondary{color:#222;background-color:#aaa;border-color:#aaa}.btn-secondary:hover{color:#222;background-color:#979797;border-color:#919090}.btn-secondary:focus,.btn-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(170,170,170,0.5);box-shadow:0 0 0 0.2rem rgba(170,170,170,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#222;background-color:#aaa;border-color:#aaa}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#919090;border-color:#8a8a8a}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(170,170,170,0.5);box-shadow:0 0 0 0.2rem rgba(170,170,170,0.5)}.btn-success{color:#fff;background-color:#22B24C;border-color:#22B24C}.btn-success:hover{color:#fff;background-color:#1c923e;border-color:#1a873a}.btn-success:focus,.btn-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,178,76,0.5);box-shadow:0 0 0 0.2rem rgba(34,178,76,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#22B24C;border-color:#22B24C}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1a873a;border-color:#187c35}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,178,76,0.5);box-shadow:0 0 0 0.2rem rgba(34,178,76,0.5)}.btn-info{color:#fff;background-color:#369;border-color:#369}.btn-info:hover{color:#fff;background-color:#29537c;border-color:#264d73}.btn-info:focus,.btn-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(51,102,153,0.5);box-shadow:0 0 0 0.2rem rgba(51,102,153,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#369;border-color:#369}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#264d73;border-color:#234669}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(51,102,153,0.5);box-shadow:0 0 0 0.2rem rgba(51,102,153,0.5)}.btn-warning{color:#222;background-color:#F5E625;border-color:#F5E625}.btn-warning:hover{color:#222;background-color:#e9d90b;border-color:#ddce0a}.btn-warning:focus,.btn-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(245,230,37,0.5);box-shadow:0 0 0 0.2rem rgba(245,230,37,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#222;background-color:#F5E625;border-color:#F5E625}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#222;background-color:#ddce0a;border-color:#d1c20a}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(245,230,37,0.5);box-shadow:0 0 0 0.2rem rgba(245,230,37,0.5)}.btn-danger{color:#fff;background-color:#F57A00;border-color:#F57A00}.btn-danger:hover{color:#fff;background-color:#cf6700;border-color:#c26100}.btn-danger:focus,.btn-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(245,122,0,0.5);box-shadow:0 0 0 0.2rem rgba(245,122,0,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#F57A00;border-color:#F57A00}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c26100;border-color:#b55a00}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(245,122,0,0.5);box-shadow:0 0 0 0.2rem rgba(245,122,0,0.5)}.btn-light{color:#222;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#222;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5);box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#222;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#222;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5);box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#222;border-color:#222}.btn-dark:hover{color:#fff;background-color:#0f0f0f;border-color:#090808}.btn-dark:focus,.btn-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5);box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#222;border-color:#222}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#090808;border-color:#020202}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5);box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5)}.btn-outline-primary{color:#EB6864;background-color:transparent;background-image:none;border-color:#EB6864}.btn-outline-primary:hover{color:#fff;background-color:#EB6864;border-color:#EB6864}.btn-outline-primary:focus,.btn-outline-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(235,104,100,0.5);box-shadow:0 0 0 0.2rem rgba(235,104,100,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#EB6864;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#EB6864;border-color:#EB6864}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(235,104,100,0.5);box-shadow:0 0 0 0.2rem rgba(235,104,100,0.5)}.btn-outline-secondary{color:#aaa;background-color:transparent;background-image:none;border-color:#aaa}.btn-outline-secondary:hover{color:#222;background-color:#aaa;border-color:#aaa}.btn-outline-secondary:focus,.btn-outline-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(170,170,170,0.5);box-shadow:0 0 0 0.2rem rgba(170,170,170,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#aaa;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#222;background-color:#aaa;border-color:#aaa}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(170,170,170,0.5);box-shadow:0 0 0 0.2rem rgba(170,170,170,0.5)}.btn-outline-success{color:#22B24C;background-color:transparent;background-image:none;border-color:#22B24C}.btn-outline-success:hover{color:#fff;background-color:#22B24C;border-color:#22B24C}.btn-outline-success:focus,.btn-outline-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,178,76,0.5);box-shadow:0 0 0 0.2rem rgba(34,178,76,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#22B24C;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#22B24C;border-color:#22B24C}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,178,76,0.5);box-shadow:0 0 0 0.2rem rgba(34,178,76,0.5)}.btn-outline-info{color:#369;background-color:transparent;background-image:none;border-color:#369}.btn-outline-info:hover{color:#fff;background-color:#369;border-color:#369}.btn-outline-info:focus,.btn-outline-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(51,102,153,0.5);box-shadow:0 0 0 0.2rem rgba(51,102,153,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#369;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#369;border-color:#369}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(51,102,153,0.5);box-shadow:0 0 0 0.2rem rgba(51,102,153,0.5)}.btn-outline-warning{color:#F5E625;background-color:transparent;background-image:none;border-color:#F5E625}.btn-outline-warning:hover{color:#222;background-color:#F5E625;border-color:#F5E625}.btn-outline-warning:focus,.btn-outline-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(245,230,37,0.5);box-shadow:0 0 0 0.2rem rgba(245,230,37,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#F5E625;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#222;background-color:#F5E625;border-color:#F5E625}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(245,230,37,0.5);box-shadow:0 0 0 0.2rem rgba(245,230,37,0.5)}.btn-outline-danger{color:#F57A00;background-color:transparent;background-image:none;border-color:#F57A00}.btn-outline-danger:hover{color:#fff;background-color:#F57A00;border-color:#F57A00}.btn-outline-danger:focus,.btn-outline-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(245,122,0,0.5);box-shadow:0 0 0 0.2rem rgba(245,122,0,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#F57A00;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#F57A00;border-color:#F57A00}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(245,122,0,0.5);box-shadow:0 0 0 0.2rem rgba(245,122,0,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#222;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5);box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#222;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5);box-shadow:0 0 0 0.2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#222;background-color:transparent;background-image:none;border-color:#222}.btn-outline-dark:hover{color:#fff;background-color:#222;border-color:#222}.btn-outline-dark:focus,.btn-outline-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5);box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#222;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#222;border-color:#222}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5);box-shadow:0 0 0 0.2rem rgba(34,34,34,0.5)}.btn-link{font-weight:400;color:#EB6864;background-color:transparent}.btn-link:hover{color:#e22620;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#777}.btn-lg,.btn-group-lg>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:0.3rem}.btn-sm,.btn-group-sm>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;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 0.15s linear;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.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:#222;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:0.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:0.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:0.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:0.5rem 0;overflow:hidden;border-top:1px solid #eee}.dropdown-item{display:block;width:100%;padding:0.25rem 1.5rem;clear:both;font-weight:400;color:#222;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#151515;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#EB6864}.dropdown-item.disabled,.dropdown-item:disabled{color:#777;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0.5rem 1.5rem;margin-bottom:0;font-size:0.875rem;color:#777;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.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:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.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-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:0.75rem;padding-left:0.75rem}.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:0.75rem;padding-left:0.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.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(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0.375rem 1rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#eee;border:1px solid #ced4da;border-radius:0.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#EB6864}.custom-control-input:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(235,104,100,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(235,104,100,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:white}.custom-control-input:disabled ~ .custom-control-label{color:#777}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#eee}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:0.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#EB6864}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{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='%23fff' 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-label::before{background-color:#EB6864}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{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='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(235,104,100,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(235,104,100,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#EB6864}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{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='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(235,104,100,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:0.375rem 1.75rem 0.375rem 0.75rem;line-height:1.5;color:#495057;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='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:0.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#fad6d5;outline:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(250,214,213,0.5);box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(250,214,213,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:0.75rem;background-image:none}.custom-select:disabled{color:#777;background-color:#eee}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#fad6d5;-webkit-box-shadow:0 0 0 0.2rem rgba(235,104,100,0.25);box-shadow:0 0 0 0.2rem rgba(235,104,100,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#fad6d5}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:0.375rem 1rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:0.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:0.375rem 1rem;line-height:1.5;color:#495057;content:"Browse";background-color:#eee;border-left:1px solid #ced4da;border-radius:0 0.25rem 0.25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:0.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#777}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#eee #eee #dee2e6}.nav-tabs .nav-link.disabled{color:#777;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:0.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#EB6864}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:0.3125rem;padding-bottom:0.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:0.5rem;padding-bottom:0.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:0.25rem 0.75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:0.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:#000}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#000}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:#000}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:#000}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.7)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.7)}.navbar-light .navbar-text a{color:#000}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#000}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' 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 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:0.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-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-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.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-header{padding:0.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:0.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.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-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(0.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:0.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:0.25rem;border-bottom-left-radius:0.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:0.75rem}@media (min-width: 576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eee;border-radius:0.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:0.5rem;padding-left:0.5rem;color:#777;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#777}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:0.25rem}.page-link{position:relative;display:block;padding:0.5rem 0.75rem;margin-left:-1px;line-height:1.25;color:#EB6864;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#fff;text-decoration:none;background-color:#EB6864;border-color:#EB6864}.page-link:focus{z-index:2;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(235,104,100,0.25);box-shadow:0 0 0 0.2rem rgba(235,104,100,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:0.25rem;border-bottom-left-radius:0.25rem}.page-item:last-child .page-link{border-top-right-radius:0.25rem;border-bottom-right-radius:0.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#EB6864;border-color:#EB6864}.page-item.disabled .page-link{color:#777;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:0.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:0.3rem;border-bottom-left-radius:0.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:0.3rem;border-bottom-right-radius:0.3rem}.pagination-sm .page-link{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:0.2rem;border-bottom-left-radius:0.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:0.2rem;border-bottom-right-radius:0.2rem}.badge{display:inline-block;padding:0.25em 0.4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:0.6em;padding-left:0.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#EB6864}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#e53c37}.badge-secondary{color:#222;background-color:#aaa}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#222;text-decoration:none;background-color:#919090}.badge-success{color:#fff;background-color:#22B24C}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1a873a}.badge-info{color:#fff;background-color:#369}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#264d73}.badge-warning{color:#222;background-color:#F5E625}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#222;text-decoration:none;background-color:#ddce0a}.badge-danger{color:#fff;background-color:#F57A00}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#c26100}.badge-light{color:#222;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#222;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#222}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#090808}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eee;border-radius:0.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:0.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:0.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:0.75rem 1.25rem;color:inherit}.alert-primary{color:#7a3634;background-color:#fbe1e0;border-color:#f9d5d4}.alert-primary hr{border-top-color:#f6bfbe}.alert-primary .alert-link{color:#562625}.alert-secondary{color:#585858;background-color:#eeeeee;border-color:#e7e7e7}.alert-secondary hr{border-top-color:#dadada}.alert-secondary .alert-link{color:#3f3e3e}.alert-success{color:#125d28;background-color:#d3f0db;border-color:#c1e9cd}.alert-success hr{border-top-color:#aee2be}.alert-success .alert-link{color:#0a3216}.alert-info{color:#1b3550;background-color:#d6e0eb;border-color:#c6d4e2}.alert-info hr{border-top-color:#b5c7d9}.alert-info .alert-link{color:#0e1c2a}.alert-warning{color:#7f7813;background-color:#fdfad3;border-color:#fcf8c2}.alert-warning hr{border-top-color:#fbf5aa}.alert-warning .alert-link{color:#534e0c}.alert-danger{color:#7f3f00;background-color:#fde4cc;border-color:#fcdab8}.alert-danger hr{border-top-color:#fbcda0}.alert-danger .alert-link{color:#4c2600}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#121212;background-color:lightgray;border-color:#c1c1c1}.alert-dark hr{border-top-color:#b4b4b4}.alert-dark .alert-link{color:black}@-webkit-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:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#eee;border-radius:0.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#EB6864;-webkit-transition:width 0.6s ease;transition:width 0.6s ease}.progress-bar-striped{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-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#222;background-color:#eee}.list-group-item{position:relative;display:block;padding:0.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-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:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#777;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#EB6864;border-color:#EB6864}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#7a3634;background-color:#f9d5d4}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#7a3634;background-color:#f6bfbe}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#7a3634;border-color:#7a3634}.list-group-item-secondary{color:#585858;background-color:#e7e7e7}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#585858;background-color:#dadada}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#585858;border-color:#585858}.list-group-item-success{color:#125d28;background-color:#c1e9cd}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#125d28;background-color:#aee2be}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#125d28;border-color:#125d28}.list-group-item-info{color:#1b3550;background-color:#c6d4e2}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#1b3550;background-color:#b5c7d9}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#1b3550;border-color:#1b3550}.list-group-item-warning{color:#7f7813;background-color:#fcf8c2}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#7f7813;background-color:#fbf5aa}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#7f7813;border-color:#7f7813}.list-group-item-danger{color:#7f3f00;background-color:#fcdab8}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#7f3f00;background-color:#fbcda0}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#7f3f00;border-color:#7f3f00}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#121212;background-color:#c1c1c1}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#121212;background-color:#b4b4b4}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#121212;border-color:#121212}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color: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-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:0.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;transition:-webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out;transition:transform 0.3s ease-out, -webkit-transform 0.3s ease-out;-webkit-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.show .modal-dialog{-webkit-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (0.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;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.show{opacity:0.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #eee;border-top-left-radius:0.3rem;border-top-right-radius:0.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #eee}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:0.9}.tooltip .arrow{position:absolute;display:block;width:0.8rem;height:0.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:0.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:0.4rem 0.4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 0.4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:0.4rem;height:0.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:0.4rem 0.4rem 0.4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:0.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 0.4rem 0.4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 0.4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:0.4rem;height:0.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:0.4rem 0 0.4rem 0.4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:0.25rem 0.5rem;color:#fff;text-align:center;background-color:#000;border-radius:0.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:0.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:0.5rem;margin:0 0.3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:0.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((0.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:0.5rem 0.5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:0.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:0.5rem 0.5rem 0.5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:0.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((0.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 0.5rem 0.5rem 0.5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:0.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:0.5rem 0 0.5rem 0.5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:0.5rem 0.75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:0.5rem 0.75rem;color:#222}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-webkit-transition:-webkit-transform 0.6s ease;transition:-webkit-transform 0.6s ease;transition:transform 0.6s ease;transition:transform 0.6s ease, -webkit-transform 0.6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:0.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{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}.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-primary{background-color:#EB6864 !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#e53c37 !important}.bg-secondary{background-color:#aaa !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#919090 !important}.bg-success{background-color:#22B24C !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1a873a !important}.bg-info{background-color:#369 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#264d73 !important}.bg-warning{background-color:#F5E625 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#ddce0a !important}.bg-danger{background-color:#F57A00 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#c26100 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#222 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#090808 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#EB6864 !important}.border-secondary{border-color:#aaa !important}.border-success{border-color:#22B24C !important}.border-info{border-color:#369 !important}.border-warning{border-color:#F5E625 !important}.border-danger{border-color:#F57A00 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#222 !important}.border-white{border-color:#fff !important}.rounded{border-radius:0.25rem !important}.rounded-top{border-top-left-radius:0.25rem !important;border-top-right-radius:0.25rem !important}.rounded-right{border-top-right-radius:0.25rem !important;border-bottom-right-radius:0.25rem !important}.rounded-bottom{border-bottom-right-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-left{border-top-left-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-sm-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-md-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-lg-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-xl-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-print-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.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::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-sm-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-sm-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-sm-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-sm-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-sm-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-sm-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-sm-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-sm-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-sm-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-sm-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-sm-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-sm-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-sm-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-sm-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-sm-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-sm-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-sm-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-sm-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-sm-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-sm-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-sm-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-sm-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-sm-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-sm-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-sm-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-sm-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-sm-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-md-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-md-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-md-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-md-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-md-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-md-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-md-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-md-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-md-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-md-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-md-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-md-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-md-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-md-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-md-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-md-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-md-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-md-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-md-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-md-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-md-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-md-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-md-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-md-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-md-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-md-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-md-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-lg-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-lg-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-lg-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-lg-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-lg-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-lg-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-lg-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-lg-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-lg-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-lg-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-lg-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-lg-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-lg-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-lg-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-lg-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-lg-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-lg-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-lg-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-lg-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-lg-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-lg-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-lg-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-lg-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-lg-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-lg-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-lg-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-lg-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-xl-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-xl-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-xl-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-xl-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-xl-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-xl-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-xl-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-xl-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-xl-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-xl-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-xl-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-xl-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-xl-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-xl-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-xl-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-xl-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-xl-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-xl-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-xl-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-xl-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-xl-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-xl-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-xl-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-xl-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-xl-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-xl-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-xl-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-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}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: -webkit-sticky) or (position: sticky){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:0.25rem !important}.mt-1,.my-1{margin-top:0.25rem !important}.mr-1,.mx-1{margin-right:0.25rem !important}.mb-1,.my-1{margin-bottom:0.25rem !important}.ml-1,.mx-1{margin-left:0.25rem !important}.m-2{margin:0.5rem !important}.mt-2,.my-2{margin-top:0.5rem !important}.mr-2,.mx-2{margin-right:0.5rem !important}.mb-2,.my-2{margin-bottom:0.5rem !important}.ml-2,.mx-2{margin-left:0.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:0.25rem !important}.pt-1,.py-1{padding-top:0.25rem !important}.pr-1,.px-1{padding-right:0.25rem !important}.pb-1,.py-1{padding-bottom:0.25rem !important}.pl-1,.px-1{padding-left:0.25rem !important}.p-2{padding:0.5rem !important}.pt-2,.py-2{padding-top:0.5rem !important}.pr-2,.px-2{padding-right:0.5rem !important}.pb-2,.py-2{padding-bottom:0.5rem !important}.pl-2,.px-2{padding-left:0.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:0.25rem !important}.mt-sm-1,.my-sm-1{margin-top:0.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:0.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:0.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:0.25rem !important}.m-sm-2{margin:0.5rem !important}.mt-sm-2,.my-sm-2{margin-top:0.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:0.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:0.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:0.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:0.25rem !important}.pt-sm-1,.py-sm-1{padding-top:0.25rem !important}.pr-sm-1,.px-sm-1{padding-right:0.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:0.25rem !important}.pl-sm-1,.px-sm-1{padding-left:0.25rem !important}.p-sm-2{padding:0.5rem !important}.pt-sm-2,.py-sm-2{padding-top:0.5rem !important}.pr-sm-2,.px-sm-2{padding-right:0.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:0.5rem !important}.pl-sm-2,.px-sm-2{padding-left:0.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:0.25rem !important}.mt-md-1,.my-md-1{margin-top:0.25rem !important}.mr-md-1,.mx-md-1{margin-right:0.25rem !important}.mb-md-1,.my-md-1{margin-bottom:0.25rem !important}.ml-md-1,.mx-md-1{margin-left:0.25rem !important}.m-md-2{margin:0.5rem !important}.mt-md-2,.my-md-2{margin-top:0.5rem !important}.mr-md-2,.mx-md-2{margin-right:0.5rem !important}.mb-md-2,.my-md-2{margin-bottom:0.5rem !important}.ml-md-2,.mx-md-2{margin-left:0.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:0.25rem !important}.pt-md-1,.py-md-1{padding-top:0.25rem !important}.pr-md-1,.px-md-1{padding-right:0.25rem !important}.pb-md-1,.py-md-1{padding-bottom:0.25rem !important}.pl-md-1,.px-md-1{padding-left:0.25rem !important}.p-md-2{padding:0.5rem !important}.pt-md-2,.py-md-2{padding-top:0.5rem !important}.pr-md-2,.px-md-2{padding-right:0.5rem !important}.pb-md-2,.py-md-2{padding-bottom:0.5rem !important}.pl-md-2,.px-md-2{padding-left:0.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:0.25rem !important}.mt-lg-1,.my-lg-1{margin-top:0.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:0.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:0.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:0.25rem !important}.m-lg-2{margin:0.5rem !important}.mt-lg-2,.my-lg-2{margin-top:0.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:0.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:0.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:0.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:0.25rem !important}.pt-lg-1,.py-lg-1{padding-top:0.25rem !important}.pr-lg-1,.px-lg-1{padding-right:0.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:0.25rem !important}.pl-lg-1,.px-lg-1{padding-left:0.25rem !important}.p-lg-2{padding:0.5rem !important}.pt-lg-2,.py-lg-2{padding-top:0.5rem !important}.pr-lg-2,.px-lg-2{padding-right:0.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:0.5rem !important}.pl-lg-2,.px-lg-2{padding-left:0.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:0.25rem !important}.mt-xl-1,.my-xl-1{margin-top:0.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:0.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:0.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:0.25rem !important}.m-xl-2{margin:0.5rem !important}.mt-xl-2,.my-xl-2{margin-top:0.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:0.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:0.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:0.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:0.25rem !important}.pt-xl-1,.py-xl-1{padding-top:0.25rem !important}.pr-xl-1,.px-xl-1{padding-right:0.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:0.25rem !important}.pl-xl-1,.px-xl-1{padding-left:0.25rem !important}.p-xl-2{padding:0.5rem !important}.pt-xl-2,.py-xl-2{padding-top:0.5rem !important}.pr-xl-2,.px-xl-2{padding-right:0.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:0.5rem !important}.pl-xl-2,.px-xl-2{padding-left:0.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-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-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#EB6864 !important}a.text-primary:hover,a.text-primary:focus{color:#e53c37 !important}.text-secondary{color:#aaa !important}a.text-secondary:hover,a.text-secondary:focus{color:#919090 !important}.text-success{color:#22B24C !important}a.text-success:hover,a.text-success:focus{color:#1a873a !important}.text-info{color:#369 !important}a.text-info:hover,a.text-info:focus{color:#264d73 !important}.text-warning{color:#F5E625 !important}a.text-warning:hover,a.text-warning:focus{color:#ddce0a !important}.text-danger{color:#F57A00 !important}a.text-danger:hover,a.text-danger:focus{color:#c26100 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#222 !important}a.text-dark:hover,a.text-dark:focus{color:#090808 !important}.text-muted{color:#777 !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}a:not(.btn){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}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{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}}.bg-dark{background-color:#000 !important}.bg-light{background-color:#fff !important;color:#000;border:1px solid #eee}.bg-light.navbar-fixed-top{border-width:0 0 1px 0}.bg-light.navbar-fixed-bottom{border-width:1px 0 0 0}.navbar{font-size:18px;font-family:"News Cycle", "Arial Narrow Bold", sans-serif;font-weight:700}.navbar-brand{padding-top:0.5rem;font-size:inherit;font-weight:700;text-transform:uppercase}.btn{font-family:"News Cycle", "Arial Narrow Bold", sans-serif;font-weight:700}.btn-secondary,.btn-warning{color:#fff}.pagination a:hover{text-decoration:none} diff --git a/modules/services/unix/http/parameterised_website/files/themes/sketchy.min.css b/modules/services/unix/http/parameterised_website/files/themes/sketchy.min.css new file mode 100644 index 000000000..2423a01d0 --- /dev/null +++ b/modules/services/unix/http/parameterised_website/files/themes/sketchy.min.css @@ -0,0 +1,12 @@ +/*! + * Bootswatch v4.0.0 + * Homepage: https://bootswatch.com + * Copyright 2012-2018 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */@import url("https://fonts.googleapis.com/css?family=Neucha|Cabin+Sketch");:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#868e96;--gray-dark:#333;--primary:#333;--secondary:#555;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#fff;--dark:#555;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Neucha", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Neucha", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:1rem;font-weight:700;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}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:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#333;text-decoration:underline;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0d0d0d;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:0.75rem;padding-bottom:0.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}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{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:0.5rem;font-family:"Cabin Sketch", cursive;font-weight:500;line-height:1.2;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;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:2px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}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:0.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#333}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:0.25rem;background-color:#fff;border:2px solid #dee2e6;border-radius:255px 25px 225px 25px/25px 225px 25px 255px;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:0.5rem;line-height:1}.figure-caption{font-size:90%;color:#868e96}code,kbd,pre,samp{font-family:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:0.2rem 0.4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.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-sm,.col-sm-auto,.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-md,.col-md-auto,.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-lg,.col-lg-auto,.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,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table th,.table td{padding:0.75rem;vertical-align:top;border-top:1px solid #333}.table thead th{vertical-align:bottom;border-bottom:2px solid #333}.table tbody+tbody{border-top:2px solid #333}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:0.3rem}.table-bordered{border:1px solid #333}.table-bordered th,.table-bordered td{border:1px solid #333}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:#ccc}.table-hover tbody tr:hover{background-color:#fff}.table-primary,.table-primary>th,.table-primary>td{background-color:#c6c6c6}.table-hover .table-primary:hover{background-color:#b9b9b9}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b9b9b9}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#cfcfcf}.table-hover .table-secondary:hover{background-color:#c2c2c2}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c2c2c2}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:white}.table-hover .table-light:hover{background-color:#f2f2f2}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#f2f2f2}.table-dark,.table-dark>th,.table-dark>td{background-color:#cfcfcf}.table-hover .table-dark:hover{background-color:#c2c2c2}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#c2c2c2}.table-active,.table-active>th,.table-active>td{background-color:#fff}.table-hover .table-active:hover{background-color:#f2f2f2}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:#f2f2f2}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#555;background-color:#f7f7f9;border-color:#333}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;color:#555;background-color:#fff;background-clip:padding-box;border:2px solid #333;border-radius:255px 25px 225px 25px/25px 225px 25px 255px;-webkit-transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#555;background-color:#fff;border-color:#333;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(51,51,51,0.25);box-shadow:0 0 0 0.2rem rgba(51,51,51,0.25)}.form-control::-webkit-input-placeholder{color:#868e96;opacity:1}.form-control:-ms-input-placeholder{color:#868e96;opacity:1}.form-control::-ms-input-placeholder{color:#868e96;opacity:1}.form-control::placeholder{color:#868e96;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#f7f7f9;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 4px)}select.form-control:focus::-ms-value{color:#555;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem + 2px);padding-bottom:calc(0.375rem + 2px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 2px);padding-bottom:calc(0.5rem + 2px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem + 2px);padding-bottom:calc(0.25rem + 2px);font-size:0.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:0.375rem;padding-bottom:0.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:2px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 4px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:555px 25px 15px 25px/25px 5px 35px 555px}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 4px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:0.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:0.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#868e96}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:0.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:0.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;-webkit-box-shadow:0 0 0 0.2rem rgba(40,167,69,0.25);box-shadow:0 0 0 0.2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(40,167,69,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(40,167,69,0.25);box-shadow:0 0 0 0.2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;-webkit-box-shadow:0 0 0 0.2rem rgba(220,53,69,0.25);box-shadow:0 0 0 0.2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(220,53,69,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(220,53,69,0.25);box-shadow:0 0 0 0.2rem rgba(220,53,69,0.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:0.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:2px solid transparent;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;border-radius:255px 25px 225px 25px/25px 225px 25px 255px;-webkit-transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(51,51,51,0.25);box-shadow:0 0 0 0.2rem rgba(51,51,51,0.25)}.btn.disabled,.btn:disabled{opacity:0.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#333;border-color:#333}.btn-primary:hover{color:#fff;background-color:#202020;border-color:#1a1919}.btn-primary:focus,.btn-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(51,51,51,0.5);box-shadow:0 0 0 0.2rem rgba(51,51,51,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#333;border-color:#333}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#1a1919;border-color:#131313}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(51,51,51,0.5);box-shadow:0 0 0 0.2rem rgba(51,51,51,0.5)}.btn-secondary{color:#fff;background-color:#555;border-color:#555}.btn-secondary:hover{color:#fff;background-color:#424242;border-color:#3c3b3b}.btn-secondary:focus,.btn-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#555;border-color:#555}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#3c3b3b;border-color:#353535}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5);box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5);box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5);box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5);box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5);box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5);box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5);box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5);box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#fff;border-color:#fff}.btn-light:hover{color:#212529;background-color:#ececec;border-color:#e6e5e5}.btn-light:focus,.btn-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,255,255,0.5);box-shadow:0 0 0 0.2rem rgba(255,255,255,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#fff;border-color:#fff}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#e6e5e5;border-color:#dfdfdf}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,255,255,0.5);box-shadow:0 0 0 0.2rem rgba(255,255,255,0.5)}.btn-dark{color:#fff;background-color:#555;border-color:#555}.btn-dark:hover{color:#fff;background-color:#424242;border-color:#3c3b3b}.btn-dark:focus,.btn-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#555;border-color:#555}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#3c3b3b;border-color:#353535}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-outline-primary{color:#333;background-color:transparent;background-image:none;border-color:#333}.btn-outline-primary:hover{color:#fff;background-color:#333;border-color:#333}.btn-outline-primary:focus,.btn-outline-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(51,51,51,0.5);box-shadow:0 0 0 0.2rem rgba(51,51,51,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#333;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#333;border-color:#333}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(51,51,51,0.5);box-shadow:0 0 0 0.2rem rgba(51,51,51,0.5)}.btn-outline-secondary{color:#555;background-color:transparent;background-image:none;border-color:#555}.btn-outline-secondary:hover{color:#fff;background-color:#555;border-color:#555}.btn-outline-secondary:focus,.btn-outline-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#555;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#555;border-color:#555}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5);box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5);box-shadow:0 0 0 0.2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5);box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5);box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5);box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5);box-shadow:0 0 0 0.2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5);box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5);box-shadow:0 0 0 0.2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#fff;background-color:transparent;background-image:none;border-color:#fff}.btn-outline-light:hover{color:#212529;background-color:#fff;border-color:#fff}.btn-outline-light:focus,.btn-outline-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,255,255,0.5);box-shadow:0 0 0 0.2rem rgba(255,255,255,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#fff;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#fff;border-color:#fff}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(255,255,255,0.5);box-shadow:0 0 0 0.2rem rgba(255,255,255,0.5)}.btn-outline-dark{color:#555;background-color:transparent;background-image:none;border-color:#555}.btn-outline-dark:hover{color:#fff;background-color:#555;border-color:#555}.btn-outline-dark:focus,.btn-outline-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#555;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#555;border-color:#555}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5);box-shadow:0 0 0 0.2rem rgba(85,85,85,0.5)}.btn-link{font-weight:400;color:#333;background-color:transparent}.btn-link:hover{color:#0d0d0d;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#868e96}.btn-lg,.btn-group-lg>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:555px 25px 15px 25px/25px 5px 35px 555px}.btn-sm,.btn-group-sm>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.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 0.15s linear;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.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:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:2px solid #333;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.dropup .dropdown-menu{margin-top:0;margin-bottom:0.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:0.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:0.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:0.5rem 0;overflow:hidden;border-top:1px solid #333}.dropdown-item{display:block;width:100%;padding:0.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#fff;text-decoration:none;background-color:#333}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#333}.dropdown-item.disabled,.dropdown-item:disabled{color:#868e96;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0.5rem 1.5rem;margin-bottom:0;font-size:0.875rem;color:#868e96;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.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:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.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-left:-2px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:0.5625rem;padding-left:0.5625rem}.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:0.75rem;padding-left:0.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.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:-2px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-2px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-2px}.input-group-prepend{margin-right:-2px}.input-group-append{margin-left:-2px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0.375rem 0.75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#555;text-align:center;white-space:nowrap;background-color:#f7f7f9;border:2px solid #333;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#333}.custom-control-input:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(51,51,51,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(51,51,51,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#8c8c8c}.custom-control-input:disabled ~ .custom-control-label{color:#868e96}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#f7f7f9}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#333}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{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='%23fff' 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-label::before{background-color:#333}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{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='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(51,51,51,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(51,51,51,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#333}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{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='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(51,51,51,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 4px);padding:0.375rem 1.75rem 0.375rem 0.75rem;line-height:1.5;color:#555;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='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;background-size:8px 10px;border:2px solid #333;border-radius:255px 25px 225px 25px/25px 225px 25px 255px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#333;outline:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(51,51,51,0.5);box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(51,51,51,0.5)}.custom-select:focus::-ms-value{color:#555;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:0.75rem;background-image:none}.custom-select:disabled{color:#868e96;background-color:#f7f7f9}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 4px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 4px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 4px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 4px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#333;-webkit-box-shadow:0 0 0 0.2rem rgba(51,51,51,0.25);box-shadow:0 0 0 0.2rem rgba(51,51,51,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#333}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 4px);padding:0.375rem 0.75rem;line-height:1.5;color:#555;background-color:#fff;border:2px solid #333;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 4px) - 2px * 2);padding:0.375rem 0.75rem;line-height:1.5;color:#555;content:"Browse";background-color:#f7f7f9;border-left:2px solid #333;border-radius:0 255px 25px 225px 25px/25px 225px 25px 255px 255px 25px 225px 25px/25px 225px 25px 255px 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:0.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#868e96}.nav-tabs{border-bottom:2px solid #333}.nav-tabs .nav-item{margin-bottom:-2px}.nav-tabs .nav-link{border:2px solid transparent;border-top-left-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-top-right-radius:255px 25px 225px 25px/25px 225px 25px 255px}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#333}.nav-tabs .nav-link.disabled{color:#868e96;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#333;background-color:#fff;border-color:#333}.nav-tabs .dropdown-menu{margin-top:-2px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#333}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:0.3125rem;padding-bottom:0.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:0.5rem;padding-bottom:0.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:0.25rem 0.75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:2px solid transparent;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:#333}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#333}.navbar-light .navbar-nav .nav-link{color:#333}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:#333}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:#333}.navbar-light .navbar-toggler{color:#333;border-color:#333}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:#333}.navbar-light .navbar-text a{color:#333}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#333}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#fff}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#fff}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:#fff;border-color:#fff}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:#fff}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:2px solid #333;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-top-right-radius:255px 25px 225px 25px/25px 225px 25px 255px}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-bottom-left-radius:255px 25px 225px 25px/25px 225px 25px 255px}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.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-header{padding:0.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:2px solid #333}.card-header:first-child{border-radius:calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px) calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:0.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:2px solid #333}.card-footer:last-child{border-radius:0 0 calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px) calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px)}.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-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px)}.card-img-top{width:100%;border-top-left-radius:calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px);border-top-right-radius:calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px);border-bottom-left-radius:calc(255px 25px 225px 25px/25px 225px 25px 255px - 2px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-top-right-radius:255px 25px 225px 25px/25px 225px 25px 255px}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-bottom-left-radius:255px 25px 225px 25px/25px 225px 25px 255px}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:0.75rem}@media (min-width: 576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#fff;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:0.5rem;padding-left:0.5rem;color:#333;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#333}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.page-link{position:relative;display:block;padding:0.5rem 0.75rem;margin-left:-2px;line-height:1.25;color:#333;background-color:#fff;border:2px solid #333}.page-link:hover{color:#fff;text-decoration:none;background-color:#333;border-color:#333}.page-link:focus{z-index:2;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(51,51,51,0.25);box-shadow:0 0 0 0.2rem rgba(51,51,51,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-bottom-left-radius:255px 25px 225px 25px/25px 225px 25px 255px}.page-item:last-child .page-link{border-top-right-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-bottom-right-radius:255px 25px 225px 25px/25px 225px 25px 255px}.page-item.active .page-link{z-index:1;color:#fff;background-color:#333;border-color:#333}.page-item.disabled .page-link{color:#ccc;pointer-events:none;cursor:auto;background-color:#fff;border-color:#333}.pagination-lg .page-link{padding:0.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:555px 25px 15px 25px/25px 5px 35px 555px;border-bottom-left-radius:555px 25px 15px 25px/25px 5px 35px 555px}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:555px 25px 15px 25px/25px 5px 35px 555px;border-bottom-right-radius:555px 25px 15px 25px/25px 5px 35px 555px}.pagination-sm .page-link{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-bottom-left-radius:255px 25px 225px 25px/25px 225px 25px 255px}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-bottom-right-radius:255px 25px 225px 25px/25px 225px 25px 255px}.badge{display:inline-block;padding:0.5em 1.2em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:0.6em;padding-left:0.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#333}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#1a1919}.badge-secondary{color:#fff;background-color:#555}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#3c3b3b}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#fff}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#e6e5e5}.badge-dark{color:#fff;background-color:#555}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#3c3b3b}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:transparent;border-radius:555px 25px 15px 25px/25px 5px 35px 555px}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:0.75rem 1.25rem;margin-bottom:1rem;border:2px solid transparent;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:0.75rem 1.25rem;color:inherit}.alert-primary{color:#1b1b1b;background-color:#d6d6d6;border-color:#c6c6c6}.alert-primary hr{border-top-color:#b9b9b9}.alert-primary .alert-link{color:#020101}.alert-secondary{color:#2c2c2c;background-color:#dddddd;border-color:#cfcfcf}.alert-secondary hr{border-top-color:#c2c2c2}.alert-secondary .alert-link{color:#131212}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#858585;background-color:white;border-color:white}.alert-light hr{border-top-color:#f2f2f2}.alert-light .alert-link{color:#6c6b6b}.alert-dark{color:#2c2c2c;background-color:#dddddd;border-color:#cfcfcf}.alert-dark hr{border-top-color:#c2c2c2}.alert-dark .alert-link{color:#131212}@-webkit-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:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#fff;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#ccc;-webkit-transition:width 0.6s ease;transition:width 0.6s ease}.progress-bar-striped{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-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#333;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#333;text-decoration:none;background-color:#dee2e6}.list-group-item-action:active{color:#212529;background-color:#f7f7f9}.list-group-item{position:relative;display:block;padding:0.75rem 1.25rem;margin-bottom:-2px;background-color:#fff;border:2px solid #333}.list-group-item:first-child{border-top-left-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-top-right-radius:255px 25px 225px 25px/25px 225px 25px 255px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:255px 25px 225px 25px/25px 225px 25px 255px;border-bottom-left-radius:255px 25px 225px 25px/25px 225px 25px 255px}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#868e96;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#333;border-color:#333}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#1b1b1b;background-color:#c6c6c6}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#1b1b1b;background-color:#b9b9b9}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1b1b1b;border-color:#1b1b1b}.list-group-item-secondary{color:#2c2c2c;background-color:#cfcfcf}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#2c2c2c;background-color:#c2c2c2}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#2c2c2c;border-color:#2c2c2c}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#858585;background-color:white}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#858585;background-color:#f2f2f2}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#858585;border-color:#858585}.list-group-item-dark{color:#2c2c2c;background-color:#cfcfcf}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#2c2c2c;background-color:#c2c2c2}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#2c2c2c;border-color:#2c2c2c}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#fff;text-shadow:none;opacity:.5}.close:hover,.close:focus{color:#fff;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color: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-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:0.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;transition:-webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out;transition:transform 0.3s ease-out, -webkit-transform 0.3s ease-out;-webkit-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.show .modal-dialog{-webkit-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (0.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:2px solid #333;border-radius:555px 25px 15px 25px/25px 5px 35px 555px;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.show{opacity:0.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:2px solid #333;border-top-left-radius:555px 25px 15px 25px/25px 5px 35px 555px;border-top-right-radius:555px 25px 15px 25px/25px 5px 35px 555px}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:2px solid #333}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Neucha", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:0.9}.tooltip .arrow{position:absolute;display:block;width:0.8rem;height:0.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:0.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:0.4rem 0.4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 0.4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:0.4rem;height:0.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:0.4rem 0.4rem 0.4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:0.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 0.4rem 0.4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 0.4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:0.4rem;height:0.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:0.4rem 0 0.4rem 0.4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:0.25rem 0.5rem;color:#fff;text-align:center;background-color:#000;border-radius:255px 25px 225px 25px/25px 225px 25px 255px}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Neucha", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:2px solid #333;border-radius:555px 25px 15px 25px/25px 5px 35px 555px}.popover .arrow{position:absolute;display:block;width:1rem;height:0.5rem;margin:0 555px 25px 15px 25px/25px 5px 35px 555px}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:0.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((0.5rem + 2px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:0.5rem 0.5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:#333333}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:2px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:0.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((0.5rem + 2px) * -1);width:0.5rem;height:1rem;margin:555px 25px 15px 25px/25px 5px 35px 555px 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:0.5rem 0.5rem 0.5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:#333333}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:2px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:0.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((0.5rem + 2px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 0.5rem 0.5rem 0.5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:#333333}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:2px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:2px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:0.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((0.5rem + 2px) * -1);width:0.5rem;height:1rem;margin:555px 25px 15px 25px/25px 5px 35px 555px 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:0.5rem 0 0.5rem 0.5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:#333333}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:2px;border-left-color:#fff}.popover-header{padding:0.5rem 0.75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:2px solid #ebebeb;border-top-left-radius:calc(555px 25px 15px 25px/25px 5px 35px 555px - 2px);border-top-right-radius:calc(555px 25px 15px 25px/25px 5px 35px 555px - 2px)}.popover-header:empty{display:none}.popover-body{padding:0.5rem 0.75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-webkit-transition:-webkit-transform 0.6s ease;transition:-webkit-transform 0.6s ease;transition:transform 0.6s ease;transition:transform 0.6s ease, -webkit-transform 0.6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:0.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{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}.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-primary{background-color:#333 !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#1a1919 !important}.bg-secondary{background-color:#555 !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#3c3b3b !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#fff !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#e6e5e5 !important}.bg-dark{background-color:#555 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#3c3b3b !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:2px solid #dee2e6 !important}.border-top{border-top:2px solid #dee2e6 !important}.border-right{border-right:2px solid #dee2e6 !important}.border-bottom{border-bottom:2px solid #dee2e6 !important}.border-left{border-left:2px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#333 !important}.border-secondary{border-color:#555 !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#fff !important}.border-dark{border-color:#555 !important}.border-white{border-color:#fff !important}.rounded{border-radius:255px 25px 225px 25px/25px 225px 25px 255px !important}.rounded-top{border-top-left-radius:255px 25px 225px 25px/25px 225px 25px 255px !important;border-top-right-radius:255px 25px 225px 25px/25px 225px 25px 255px !important}.rounded-right{border-top-right-radius:255px 25px 225px 25px/25px 225px 25px 255px !important;border-bottom-right-radius:255px 25px 225px 25px/25px 225px 25px 255px !important}.rounded-bottom{border-bottom-right-radius:255px 25px 225px 25px/25px 225px 25px 255px !important;border-bottom-left-radius:255px 25px 225px 25px/25px 225px 25px 255px !important}.rounded-left{border-top-left-radius:255px 25px 225px 25px/25px 225px 25px 255px !important;border-bottom-left-radius:255px 25px 225px 25px/25px 225px 25px 255px !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-sm-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-md-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-lg-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-xl-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-print-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.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::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-sm-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-sm-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-sm-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-sm-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-sm-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-sm-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-sm-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-sm-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-sm-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-sm-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-sm-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-sm-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-sm-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-sm-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-sm-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-sm-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-sm-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-sm-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-sm-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-sm-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-sm-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-sm-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-sm-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-sm-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-sm-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-sm-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-sm-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-md-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-md-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-md-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-md-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-md-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-md-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-md-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-md-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-md-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-md-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-md-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-md-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-md-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-md-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-md-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-md-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-md-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-md-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-md-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-md-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-md-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-md-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-md-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-md-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-md-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-md-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-md-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-lg-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-lg-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-lg-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-lg-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-lg-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-lg-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-lg-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-lg-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-lg-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-lg-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-lg-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-lg-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-lg-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-lg-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-lg-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-lg-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-lg-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-lg-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-lg-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-lg-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-lg-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-lg-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-lg-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-lg-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-lg-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-lg-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-lg-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-xl-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-xl-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-xl-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-xl-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-xl-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-xl-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-xl-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-xl-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-xl-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-xl-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-xl-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-xl-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-xl-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-xl-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-xl-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-xl-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-xl-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-xl-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-xl-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-xl-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-xl-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-xl-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-xl-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-xl-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-xl-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-xl-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-xl-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-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}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: -webkit-sticky) or (position: sticky){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:0.25rem !important}.mt-1,.my-1{margin-top:0.25rem !important}.mr-1,.mx-1{margin-right:0.25rem !important}.mb-1,.my-1{margin-bottom:0.25rem !important}.ml-1,.mx-1{margin-left:0.25rem !important}.m-2{margin:0.5rem !important}.mt-2,.my-2{margin-top:0.5rem !important}.mr-2,.mx-2{margin-right:0.5rem !important}.mb-2,.my-2{margin-bottom:0.5rem !important}.ml-2,.mx-2{margin-left:0.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:0.25rem !important}.pt-1,.py-1{padding-top:0.25rem !important}.pr-1,.px-1{padding-right:0.25rem !important}.pb-1,.py-1{padding-bottom:0.25rem !important}.pl-1,.px-1{padding-left:0.25rem !important}.p-2{padding:0.5rem !important}.pt-2,.py-2{padding-top:0.5rem !important}.pr-2,.px-2{padding-right:0.5rem !important}.pb-2,.py-2{padding-bottom:0.5rem !important}.pl-2,.px-2{padding-left:0.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:0.25rem !important}.mt-sm-1,.my-sm-1{margin-top:0.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:0.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:0.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:0.25rem !important}.m-sm-2{margin:0.5rem !important}.mt-sm-2,.my-sm-2{margin-top:0.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:0.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:0.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:0.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:0.25rem !important}.pt-sm-1,.py-sm-1{padding-top:0.25rem !important}.pr-sm-1,.px-sm-1{padding-right:0.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:0.25rem !important}.pl-sm-1,.px-sm-1{padding-left:0.25rem !important}.p-sm-2{padding:0.5rem !important}.pt-sm-2,.py-sm-2{padding-top:0.5rem !important}.pr-sm-2,.px-sm-2{padding-right:0.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:0.5rem !important}.pl-sm-2,.px-sm-2{padding-left:0.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:0.25rem !important}.mt-md-1,.my-md-1{margin-top:0.25rem !important}.mr-md-1,.mx-md-1{margin-right:0.25rem !important}.mb-md-1,.my-md-1{margin-bottom:0.25rem !important}.ml-md-1,.mx-md-1{margin-left:0.25rem !important}.m-md-2{margin:0.5rem !important}.mt-md-2,.my-md-2{margin-top:0.5rem !important}.mr-md-2,.mx-md-2{margin-right:0.5rem !important}.mb-md-2,.my-md-2{margin-bottom:0.5rem !important}.ml-md-2,.mx-md-2{margin-left:0.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:0.25rem !important}.pt-md-1,.py-md-1{padding-top:0.25rem !important}.pr-md-1,.px-md-1{padding-right:0.25rem !important}.pb-md-1,.py-md-1{padding-bottom:0.25rem !important}.pl-md-1,.px-md-1{padding-left:0.25rem !important}.p-md-2{padding:0.5rem !important}.pt-md-2,.py-md-2{padding-top:0.5rem !important}.pr-md-2,.px-md-2{padding-right:0.5rem !important}.pb-md-2,.py-md-2{padding-bottom:0.5rem !important}.pl-md-2,.px-md-2{padding-left:0.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:0.25rem !important}.mt-lg-1,.my-lg-1{margin-top:0.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:0.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:0.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:0.25rem !important}.m-lg-2{margin:0.5rem !important}.mt-lg-2,.my-lg-2{margin-top:0.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:0.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:0.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:0.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:0.25rem !important}.pt-lg-1,.py-lg-1{padding-top:0.25rem !important}.pr-lg-1,.px-lg-1{padding-right:0.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:0.25rem !important}.pl-lg-1,.px-lg-1{padding-left:0.25rem !important}.p-lg-2{padding:0.5rem !important}.pt-lg-2,.py-lg-2{padding-top:0.5rem !important}.pr-lg-2,.px-lg-2{padding-right:0.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:0.5rem !important}.pl-lg-2,.px-lg-2{padding-left:0.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:0.25rem !important}.mt-xl-1,.my-xl-1{margin-top:0.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:0.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:0.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:0.25rem !important}.m-xl-2{margin:0.5rem !important}.mt-xl-2,.my-xl-2{margin-top:0.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:0.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:0.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:0.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:0.25rem !important}.pt-xl-1,.py-xl-1{padding-top:0.25rem !important}.pr-xl-1,.px-xl-1{padding-right:0.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:0.25rem !important}.pl-xl-1,.px-xl-1{padding-left:0.25rem !important}.p-xl-2{padding:0.5rem !important}.pt-xl-2,.py-xl-2{padding-top:0.5rem !important}.pr-xl-2,.px-xl-2{padding-right:0.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:0.5rem !important}.pl-xl-2,.px-xl-2{padding-left:0.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-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-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#333 !important}a.text-primary:hover,a.text-primary:focus{color:#1a1919 !important}.text-secondary{color:#555 !important}a.text-secondary:hover,a.text-secondary:focus{color:#3c3b3b !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#fff !important}a.text-light:hover,a.text-light:focus{color:#e6e5e5 !important}.text-dark{color:#555 !important}a.text-dark:hover,a.text-dark:focus{color:#3c3b3b !important}.text-muted{color:#868e96 !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:2px 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}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:2px 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}}.navbar{border-width:2px;border-style:solid;border-radius:25px 25px 55px 5px/5px 55px 25px 25px}.navbar.bg-light{border-color:#333}.navbar.fixed-top{border-radius:0 25px 225px 0/25px 0 25px 255px;border-width:0 0 2px 0}.navbar.fixed-bottom{border-radius:255px 25px 0 25px/25px 225px 25px 0;border-width:2px 0 0 0}.navbar-brand{font-family:"Cabin Sketch", cursive;font-weight:normal;text-decoration:none}.btn{border-radius:255px 25px 225px 25px/25px 225px 25px 255px;text-decoration:none}.btn-warning{color:#fff}button,input,optgroup,select,textarea{font-family:"Neucha", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}blockquote{border-radius:15px 27px 25px 25px/25px 25px 305px 635px}table th,table td{background-color:#fff}.table-bordered{background-color:#333;border-collapse:separate;border-spacing:0;border-radius:5px 25px 5px 25px/25px 5px 25px 5px;overflow:hidden}.table-bordered th,.table-bordered td{border-radius:5px 5px 25px 4px/5px 4px 3px 5px}.table-bordered .table-success td,.table-bordered .table-success th,.table-bordered .table-success:hover td,.table-bordered .table-success:hover th{background-color:#28a745;color:#fff}.table-bordered .table-info td,.table-bordered .table-info th,.table-bordered .table-info:hover td,.table-bordered .table-info:hover th{background-color:#17a2b8;color:#fff}.table-bordered .table-warning td,.table-bordered .table-warning th,.table-bordered .table-warning:hover td,.table-bordered .table-warning:hover th{background-color:#ffc107;color:#fff}.table-bordered .table-danger td,.table-bordered .table-danger th,.table-bordered .table-danger:hover td,.table-bordered .table-danger:hover th{background-color:#dc3545;color:#fff}.table-dark th,.table-dark td,.table-dark.table-hover .table-active:hover>th,.table-dark.table-hover .table-active:hover>td{background-color:#333}input,.form-control{border-radius:255px 25px 225px 25px/25px 225px 25px 255px}textarea,textarea.form-control,select,select.form-control{border-radius:555px 25px 15px 25px/25px 5px 35px 555px !important}[type="checkbox"]{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}[type="checkbox"]:before{content:"";position:absolute;left:-1.2em;top:-0.9em;display:inline-block;width:15px;height:16px;border:2px solid #333;border-radius:2px 8px 2px 4px / 5px 3px 5px 3px}[type="checkbox"]:checked:after{content:"x";position:absolute;left:-0.64em;top:-0.48em;font-size:1.5rem;line-height:0.5;color:#333}[type="checkbox"]:disabled:before{border:2px solid #aaa}[type="radio"]{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}[type="radio"]:before{content:"";position:absolute;left:-1.2em;top:-0.9em;display:inline-block;width:16px;height:16px;border:2px solid #333;border-radius:50% 45% 40% 50% / 40% 50% 50% 45%}[type="radio"]:checked:before{background-color:#333}[type="radio"]:disabled:before{border:2px solid #aaa}.form-check-label{padding-left:2.5rem}.dropdown-menu{border-radius:555px 25px 25px 25px/25px 25px 25px 555px;overflow:hidden}.dropdown-divider{border-top-width:2px}.list-group{background-color:#333;border:2px solid #333;border-radius:45px 15px 35px 5px/15px 5px 15px 65px;overflow:hidden}.list-group-item{border-left:none;border-right:none;border-top:2px solid #333;border-radius:255px 5px 225px 5px/25px 225px 25px 255px}.list-group-item:first-child{border-top:none}.list-group-item:last-child{border-bottom:none}.nav-link,.page-link,.list-group-item,.dropdown-item{text-decoration:none}.nav-tabs .nav-link{border-radius:45px 15px 225px 5px/25px 225px 25px 255px}.breadcrumb{border:2px solid #333}.pagination .page-link{border-radius:425px 255px 25px 25px/25px 25px 5px 25px}.progress{border:2px solid #333}.badge-pill{border-radius:7rem 8rem 8rem 8rem / 4rem 5rem 6rem 6rem}.badge-warning{color:#fff}.alert-dismissible .close{color:transparent}.alert-dismissible .close:before{right:1rem;top:0.8rem}.alert-dismissible.alert-success{border-color:#28a745}.alert-dismissible.alert-success,.alert-dismissible.alert-success .alert-link,.alert-dismissible.alert-success .close:before{color:#28a745}.alert-dismissible.alert-info{border-color:#17a2b8}.alert-dismissible.alert-info,.alert-dismissible.alert-info .alert-link,.alert-dismissible.alert-info .close:before{color:#17a2b8}.alert-dismissible.alert-warning{border-color:#ffc107}.alert-dismissible.alert-warning,.alert-dismissible.alert-warning .alert-link,.alert-dismissible.alert-warning .close:before{color:#ffc107}.alert-dismissible.alert-danger{border-color:#dc3545}.alert-dismissible.alert-danger,.alert-dismissible.alert-danger .alert-link,.alert-dismissible.alert-danger .close:before{color:#dc3545}.card{border-radius:5px 5px 5px 5px/25px 25px 25px 5px}.card-outline-primary,.card-outline-success,.card-outline-info,.card-outline-warning,.card-outline-danger{border-width:2px}.card-header{border-bottom-width:2px;border-color:inherit}.card-footer{border-top-width:2px}.jumbotron{border:2px solid #333}.modal-content{border-radius:15px 5px 5px 25px/5px 25px 25px 5px}.popover{padding:0;border-radius:45px 85px 15px 25px/15px 10px 35px 555px}.popover-title{border-bottom:2px solid #333}.popover.popover-left::before,.popover.bs-tether-element-attached-right::before{right:-13px}.popover.popover-top::before,.popover.bs-tether-element-attached-bottom::before{bottom:-13px}.popover.popover-bottom::before,.popover.bs-tether-element-attached-top::before{top:-13px}.popover.popover-right::before,.popover.bs-tether-element-attached-left::before{left:-13px}pre{border:2px solid #333;border-radius:15px 5px 5px 25px/5px 25px 25px 5px}.close,.close:hover,.close:focus,.close:active{opacity:1}.close:before,.close:hover:before,.close:focus:before,.close:active:before{position:absolute;content:"X";color:#333} diff --git a/modules/services/unix/http/parameterised_website/files/themes/solar.min.css b/modules/services/unix/http/parameterised_website/files/themes/solar.min.css new file mode 100644 index 000000000..937e9abd6 --- /dev/null +++ b/modules/services/unix/http/parameterised_website/files/themes/solar.min.css @@ -0,0 +1,12 @@ +/*! + * Bootswatch v4.0.0 + * Homepage: https://bootswatch.com + * Copyright 2012-2018 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro");:root{--blue:#B58900;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#D33682;--orange:#fd7e14;--yellow:#CB4B16;--green:#2AA198;--teal:#20c997;--cyan:#268BD2;--white:#fff;--gray:#839496;--gray-dark:#073642;--primary:#B58900;--secondary:#839496;--success:#2AA198;--info:#268BD2;--warning:#CB4B16;--danger:#D33682;--light:#FDF6E3;--dark:#073642;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#839496;text-align:left;background-color:#002B36}[tabindex="-1"]:focus{outline:0 !important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}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:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#2AA198;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#2AA198;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:0.75rem;padding-bottom:0.75rem;color:#839496;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}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{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[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.2;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;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}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:400}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:0.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#839496}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:0.25rem;background-color:#002B36;border:1px solid #dee2e6;border-radius:0.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:0.5rem;line-height:1}.figure-caption{font-size:90%;color:#839496}code,kbd,pre,samp{font-family:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:0.2rem 0.4rem;font-size:87.5%;color:#fff;background-color:#002B36;border-radius:0.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#002B36}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.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-sm,.col-sm-auto,.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-md,.col-md-auto,.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-lg,.col-lg-auto,.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,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table th,.table td{padding:0.75rem;vertical-align:top;border-top:1px solid #073642}.table thead th{vertical-align:bottom;border-bottom:2px solid #073642}.table tbody+tbody{border-top:2px solid #073642}.table .table{background-color:#002B36}.table-sm th,.table-sm td{padding:0.3rem}.table-bordered{border:1px solid #073642}.table-bordered th,.table-bordered td{border:1px solid #073642}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#eadeb8}.table-hover .table-primary:hover{background-color:#e4d5a4}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#e4d5a4}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#dce1e2}.table-hover .table-secondary:hover{background-color:#ced5d6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#ced5d6}.table-success,.table-success>th,.table-success>td{background-color:#c3e5e2}.table-hover .table-success:hover{background-color:#b1ddd9}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1ddd9}.table-info,.table-info>th,.table-info>td{background-color:#c2dff2}.table-hover .table-info:hover{background-color:#add4ee}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#add4ee}.table-warning,.table-warning>th,.table-warning>td{background-color:#f0cdbe}.table-hover .table-warning:hover{background-color:#ebbda9}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ebbda9}.table-danger,.table-danger>th,.table-danger>td{background-color:#f3c7dc}.table-hover .table-danger:hover{background-color:#efb2cf}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#efb2cf}.table-light,.table-light>th,.table-light>td{background-color:#fefcf7}.table-hover .table-light:hover{background-color:#fbf4e0}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#fbf4e0}.table-dark,.table-dark>th,.table-dark>td{background-color:#bac7ca}.table-hover .table-dark:hover{background-color:#acbbbf}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#acbbbf}.table-active,.table-active>th,.table-active>td{background-color:rgba(255,255,255,0.075)}.table-hover .table-active:hover{background-color:rgba(242,242,242,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(242,242,242,0.075)}.table .thead-dark th{color:#002B36;background-color:#adb5bd;border-color:#a5adb6}.table .thead-light th{color:#495057;background-color:#EEE8D5;border-color:#073642}.table-dark{color:#002B36;background-color:#adb5bd}.table-dark th,.table-dark td,.table-dark thead th{border-color:#a5adb6}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#A9BDBD;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem;-webkit-transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#A9BDBD;border-color:#1394b5;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(7,54,66,0.25);box-shadow:0 0 0 0.2rem rgba(7,54,66,0.25)}.form-control::-webkit-input-placeholder{color:#657B83;opacity:1}.form-control:-ms-input-placeholder{color:#657B83;opacity:1}.form-control::-ms-input-placeholder{color:#657B83;opacity:1}.form-control::placeholder{color:#657B83;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#657B83;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#A9BDBD}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:0.375rem;padding-bottom:0.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;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>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;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>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:0.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:0.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#839496}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:0.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:0.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#2AA198}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(42,161,152,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#2AA198}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#2AA198;-webkit-box-shadow:0 0 0 0.2rem rgba(42,161,152,0.25);box-shadow:0 0 0 0.2rem rgba(42,161,152,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#2AA198}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#2AA198}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dad2}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#35c9be}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #002B36,0 0 0 0.2rem rgba(42,161,152,0.25);box-shadow:0 0 0 1px #002B36,0 0 0 0.2rem rgba(42,161,152,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#2AA198}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(42,161,152,0.25);box-shadow:0 0 0 0.2rem rgba(42,161,152,0.25)}.invalid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#D33682}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(211,54,130,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#D33682}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#D33682;-webkit-box-shadow:0 0 0 0.2rem rgba(211,54,130,0.25);box-shadow:0 0 0 0.2rem rgba(211,54,130,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#D33682}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#D33682}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#ea9fc3}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#dc609c}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #002B36,0 0 0 0.2rem rgba(211,54,130,0.25);box-shadow:0 0 0 1px #002B36,0 0 0 0.2rem rgba(211,54,130,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#D33682}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(211,54,130,0.25);box-shadow:0 0 0 0.2rem rgba(211,54,130,0.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:0.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;border-radius:0.25rem;-webkit-transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(7,54,66,0.25);box-shadow:0 0 0 0.2rem rgba(7,54,66,0.25)}.btn.disabled,.btn:disabled{opacity:0.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#B58900;border-color:#B58900}.btn-primary:hover{color:#fff;background-color:#8f6c00;border-color:#826200}.btn-primary:focus,.btn-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(181,137,0,0.5);box-shadow:0 0 0 0.2rem rgba(181,137,0,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#B58900;border-color:#B58900}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#826200;border-color:#755900}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(181,137,0,0.5);box-shadow:0 0 0 0.2rem rgba(181,137,0,0.5)}.btn-secondary{color:#fff;background-color:#839496;border-color:#839496}.btn-secondary:hover{color:#fff;background-color:#6f8183;border-color:#697b7d}.btn-secondary:focus,.btn-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(131,148,150,0.5);box-shadow:0 0 0 0.2rem rgba(131,148,150,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#839496;border-color:#839496}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#697b7d;border-color:#647476}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(131,148,150,0.5);box-shadow:0 0 0 0.2rem rgba(131,148,150,0.5)}.btn-success{color:#fff;background-color:#2AA198;border-color:#2AA198}.btn-success:hover{color:#fff;background-color:#22837b;border-color:#1f7972}.btn-success:focus,.btn-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(42,161,152,0.5);box-shadow:0 0 0 0.2rem rgba(42,161,152,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#2AA198;border-color:#2AA198}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1f7972;border-color:#1d6e68}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(42,161,152,0.5);box-shadow:0 0 0 0.2rem rgba(42,161,152,0.5)}.btn-info{color:#fff;background-color:#268BD2;border-color:#268BD2}.btn-info:hover{color:#fff;background-color:#2076b2;border-color:#1e6ea7}.btn-info:focus,.btn-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(38,139,210,0.5);box-shadow:0 0 0 0.2rem rgba(38,139,210,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#268BD2;border-color:#268BD2}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#1e6ea7;border-color:#1c679c}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(38,139,210,0.5);box-shadow:0 0 0 0.2rem rgba(38,139,210,0.5)}.btn-warning{color:#fff;background-color:#CB4B16;border-color:#CB4B16}.btn-warning:hover{color:#fff;background-color:#a83e12;border-color:#9d3a11}.btn-warning:focus,.btn-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(203,75,22,0.5);box-shadow:0 0 0 0.2rem rgba(203,75,22,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#fff;background-color:#CB4B16;border-color:#CB4B16}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#9d3a11;border-color:#913610}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(203,75,22,0.5);box-shadow:0 0 0 0.2rem rgba(203,75,22,0.5)}.btn-danger{color:#fff;background-color:#D33682;border-color:#D33682}.btn-danger:hover{color:#fff;background-color:#ba296f;border-color:#b02669}.btn-danger:focus,.btn-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(211,54,130,0.5);box-shadow:0 0 0 0.2rem rgba(211,54,130,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#D33682;border-color:#D33682}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02669;border-color:#a52463}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(211,54,130,0.5);box-shadow:0 0 0 0.2rem rgba(211,54,130,0.5)}.btn-light{color:#002B36;background-color:#FDF6E3;border-color:#FDF6E3}.btn-light:hover{color:#002B36;background-color:#faebbf;border-color:#fae7b3}.btn-light:focus,.btn-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(253,246,227,0.5);box-shadow:0 0 0 0.2rem rgba(253,246,227,0.5)}.btn-light.disabled,.btn-light:disabled{color:#002B36;background-color:#FDF6E3;border-color:#FDF6E3}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#002B36;background-color:#fae7b3;border-color:#f9e3a8}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(253,246,227,0.5);box-shadow:0 0 0 0.2rem rgba(253,246,227,0.5)}.btn-dark{color:#fff;background-color:#073642;border-color:#073642}.btn-dark:hover{color:#fff;background-color:#031a1f;border-color:#021014}.btn-dark:focus,.btn-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(7,54,66,0.5);box-shadow:0 0 0 0.2rem rgba(7,54,66,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#073642;border-color:#073642}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#021014;border-color:#010708}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(7,54,66,0.5);box-shadow:0 0 0 0.2rem rgba(7,54,66,0.5)}.btn-outline-primary{color:#B58900;background-color:transparent;background-image:none;border-color:#B58900}.btn-outline-primary:hover{color:#fff;background-color:#B58900;border-color:#B58900}.btn-outline-primary:focus,.btn-outline-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(181,137,0,0.5);box-shadow:0 0 0 0.2rem rgba(181,137,0,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#B58900;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#B58900;border-color:#B58900}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(181,137,0,0.5);box-shadow:0 0 0 0.2rem rgba(181,137,0,0.5)}.btn-outline-secondary{color:#839496;background-color:transparent;background-image:none;border-color:#839496}.btn-outline-secondary:hover{color:#fff;background-color:#839496;border-color:#839496}.btn-outline-secondary:focus,.btn-outline-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(131,148,150,0.5);box-shadow:0 0 0 0.2rem rgba(131,148,150,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#839496;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#839496;border-color:#839496}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(131,148,150,0.5);box-shadow:0 0 0 0.2rem rgba(131,148,150,0.5)}.btn-outline-success{color:#2AA198;background-color:transparent;background-image:none;border-color:#2AA198}.btn-outline-success:hover{color:#fff;background-color:#2AA198;border-color:#2AA198}.btn-outline-success:focus,.btn-outline-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(42,161,152,0.5);box-shadow:0 0 0 0.2rem rgba(42,161,152,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#2AA198;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#2AA198;border-color:#2AA198}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(42,161,152,0.5);box-shadow:0 0 0 0.2rem rgba(42,161,152,0.5)}.btn-outline-info{color:#268BD2;background-color:transparent;background-image:none;border-color:#268BD2}.btn-outline-info:hover{color:#fff;background-color:#268BD2;border-color:#268BD2}.btn-outline-info:focus,.btn-outline-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(38,139,210,0.5);box-shadow:0 0 0 0.2rem rgba(38,139,210,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#268BD2;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#268BD2;border-color:#268BD2}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(38,139,210,0.5);box-shadow:0 0 0 0.2rem rgba(38,139,210,0.5)}.btn-outline-warning{color:#CB4B16;background-color:transparent;background-image:none;border-color:#CB4B16}.btn-outline-warning:hover{color:#fff;background-color:#CB4B16;border-color:#CB4B16}.btn-outline-warning:focus,.btn-outline-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(203,75,22,0.5);box-shadow:0 0 0 0.2rem rgba(203,75,22,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#CB4B16;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#CB4B16;border-color:#CB4B16}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(203,75,22,0.5);box-shadow:0 0 0 0.2rem rgba(203,75,22,0.5)}.btn-outline-danger{color:#D33682;background-color:transparent;background-image:none;border-color:#D33682}.btn-outline-danger:hover{color:#fff;background-color:#D33682;border-color:#D33682}.btn-outline-danger:focus,.btn-outline-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(211,54,130,0.5);box-shadow:0 0 0 0.2rem rgba(211,54,130,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#D33682;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#D33682;border-color:#D33682}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(211,54,130,0.5);box-shadow:0 0 0 0.2rem rgba(211,54,130,0.5)}.btn-outline-light{color:#FDF6E3;background-color:transparent;background-image:none;border-color:#FDF6E3}.btn-outline-light:hover{color:#002B36;background-color:#FDF6E3;border-color:#FDF6E3}.btn-outline-light:focus,.btn-outline-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(253,246,227,0.5);box-shadow:0 0 0 0.2rem rgba(253,246,227,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#FDF6E3;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#002B36;background-color:#FDF6E3;border-color:#FDF6E3}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(253,246,227,0.5);box-shadow:0 0 0 0.2rem rgba(253,246,227,0.5)}.btn-outline-dark{color:#073642;background-color:transparent;background-image:none;border-color:#073642}.btn-outline-dark:hover{color:#fff;background-color:#073642;border-color:#073642}.btn-outline-dark:focus,.btn-outline-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(7,54,66,0.5);box-shadow:0 0 0 0.2rem rgba(7,54,66,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#073642;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#073642;border-color:#073642}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(7,54,66,0.5);box-shadow:0 0 0 0.2rem rgba(7,54,66,0.5)}.btn-link{font-weight:400;color:#2AA198;background-color:transparent}.btn-link:hover{color:#2AA198;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#839496}.btn-lg,.btn-group-lg>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:0.3rem}.btn-sm,.btn-group-sm>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;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 0.15s linear;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.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:#839496;text-align:left;list-style:none;background-color:#073642;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:0.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:0.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:0.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:0.5rem 0;overflow:hidden;border-top:1px solid #002B36}.dropdown-item{display:block;width:100%;padding:0.25rem 1.5rem;clear:both;font-weight:400;color:#839496;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:rgba(255,255,255,0.75);text-decoration:none;background-color:#002B36}.dropdown-item.active,.dropdown-item:active{color:rgba(255,255,255,0.75);text-decoration:none;background-color:#073642}.dropdown-item.disabled,.dropdown-item:disabled{color:#839496;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0.5rem 1.5rem;margin-bottom:0;font-size:0.875rem;color:#839496;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.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:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.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-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:0.5625rem;padding-left:0.5625rem}.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:0.75rem;padding-left:0.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.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(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0.375rem 0.75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#839496;text-align:center;white-space:nowrap;background-color:#073642;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:rgba(255,255,255,0.75);background-color:#073642}.custom-control-input:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #002B36,0 0 0 0.2rem rgba(7,54,66,0.25);box-shadow:0 0 0 1px #002B36,0 0 0 0.2rem rgba(7,54,66,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:rgba(255,255,255,0.75);background-color:#18bae3}.custom-control-input:disabled ~ .custom-control-label{color:#839496}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#EEE8D5}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:0.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#073642}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{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='rgba(255, 255, 255, 0.75)' 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-label::before{background-color:#073642}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{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='rgba(255, 255, 255, 0.75)' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(181,137,0,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(181,137,0,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#073642}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{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='rgba(255, 255, 255, 0.75)'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(181,137,0,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:0.375rem 1.75rem 0.375rem 0.75rem;line-height:1.5;color:#495057;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='%23073642' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;background-size:8px 10px;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#1394b5;outline:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(19,148,181,0.5);box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(19,148,181,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#A9BDBD}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:0.75rem;background-image:none}.custom-select:disabled{color:#839496;background-color:#EEE8D5}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#1394b5;-webkit-box-shadow:0 0 0 0.2rem rgba(7,54,66,0.25);box-shadow:0 0 0 0.2rem rgba(7,54,66,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#1394b5}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:0.375rem 0.75rem;line-height:1.5;color:#495057;background-color:#A9BDBD;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:0.375rem 0.75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#073642;border-left:1px solid rgba(0,0,0,0.15);border-radius:0 0.25rem 0.25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:0.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#839496}.nav-tabs{border-bottom:1px solid #073642}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#073642}.nav-tabs .nav-link.disabled{color:#839496;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:rgba(255,255,255,0.75);background-color:#002B36;border-color:#073642}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:0.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:rgba(255,255,255,0.75);background-color:#073642}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:0.3125rem;padding-bottom:0.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:0.5rem;padding-bottom:0.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:0.25rem 0.75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:0.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.7)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.4)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.7)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.4);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.4)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.4)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.7)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.7)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' 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 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:rgba(238,232,213,0.125);background-clip:border-box;border:1px solid rgba(0,43,54,0.95);border-radius:0.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-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-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.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-header{padding:0.75rem 1.25rem;margin-bottom:0;background-color:rgba(7,54,66,0.25);border-bottom:1px solid rgba(0,43,54,0.95)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:0.75rem 1.25rem;background-color:rgba(7,54,66,0.25);border-top:1px solid rgba(0,43,54,0.95)}.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-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(0.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:0.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:0.25rem;border-bottom-left-radius:0.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:0.75rem}@media (min-width: 576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#073642;border-radius:0.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:0.5rem;padding-left:0.5rem;color:#839496;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#839496}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:0.25rem}.page-link{position:relative;display:block;padding:0.5rem 0.75rem;margin-left:-1px;line-height:1.25;color:#2AA198;background-color:transparent;border:1px solid #073642}.page-link:hover{color:#2AA198;text-decoration:none;background-color:#073642;border-color:#073642}.page-link:focus{z-index:2;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(7,54,66,0.25);box-shadow:0 0 0 0.2rem rgba(7,54,66,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:0.25rem;border-bottom-left-radius:0.25rem}.page-item:last-child .page-link{border-top-right-radius:0.25rem;border-bottom-right-radius:0.25rem}.page-item.active .page-link{z-index:1;color:rgba(255,255,255,0.75);background-color:#073642;border-color:#073642}.page-item.disabled .page-link{color:#073642;pointer-events:none;cursor:auto;background-color:transparent;border-color:#073642}.pagination-lg .page-link{padding:0.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:0.3rem;border-bottom-left-radius:0.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:0.3rem;border-bottom-right-radius:0.3rem}.pagination-sm .page-link{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:0.2rem;border-bottom-left-radius:0.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:0.2rem;border-bottom-right-radius:0.2rem}.badge{display:inline-block;padding:0.25em 0.4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:0.6em;padding-left:0.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#B58900}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#826200}.badge-secondary{color:#fff;background-color:#839496}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#697b7d}.badge-success{color:#fff;background-color:#2AA198}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1f7972}.badge-info{color:#fff;background-color:#268BD2}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#1e6ea7}.badge-warning{color:#fff;background-color:#CB4B16}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#fff;text-decoration:none;background-color:#9d3a11}.badge-danger{color:#fff;background-color:#D33682}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#b02669}.badge-light{color:#002B36;background-color:#FDF6E3}.badge-light[href]:hover,.badge-light[href]:focus{color:#002B36;text-decoration:none;background-color:#fae7b3}.badge-dark{color:#fff;background-color:#073642}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#021014}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#073642;border-radius:0.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:0.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:0.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:0.75rem 1.25rem;color:inherit}.alert-primary{color:#5e4700;background-color:#f0e7cc;border-color:#eadeb8}.alert-primary hr{border-top-color:#e4d5a4}.alert-primary .alert-link{color:#2b2000}.alert-secondary{color:#444d4e;background-color:#e6eaea;border-color:#dce1e2}.alert-secondary hr{border-top-color:#ced5d6}.alert-secondary .alert-link{color:#2c3233}.alert-success{color:#16544f;background-color:#d4ecea;border-color:#c3e5e2}.alert-success hr{border-top-color:#b1ddd9}.alert-success .alert-link{color:#0b2c29}.alert-info{color:#14486d;background-color:#d4e8f6;border-color:#c2dff2}.alert-info hr{border-top-color:#add4ee}.alert-info .alert-link{color:#0c2c42}.alert-warning{color:#6a270b;background-color:#f5dbd0;border-color:#f0cdbe}.alert-warning hr{border-top-color:#ebbda9}.alert-warning .alert-link{color:#3c1606}.alert-danger{color:#6e1c44;background-color:#f6d7e6;border-color:#f3c7dc}.alert-danger hr{border-top-color:#efb2cf}.alert-danger .alert-link{color:#45122b}.alert-light{color:#848076;background-color:#fffdf9;border-color:#fefcf7}.alert-light hr{border-top-color:#fbf4e0}.alert-light .alert-link{color:#69665e}.alert-dark{color:#041c22;background-color:#cdd7d9;border-color:#bac7ca}.alert-dark hr{border-top-color:#acbbbf}.alert-dark .alert-link{color:black}@-webkit-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:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#073642;border-radius:0.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#B58900;text-align:center;background-color:#B58900;-webkit-transition:width 0.6s ease;transition:width 0.6s ease}.progress-bar-striped{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-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#839496;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:rgba(255,255,255,0.75);text-decoration:none;background-color:#073642}.list-group-item-action:active{color:#839496;background-color:#EEE8D5}.list-group-item{position:relative;display:block;padding:0.75rem 1.25rem;margin-bottom:-1px;background-color:transparent;border:1px solid #073642}.list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-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:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#073642;background-color:transparent}.list-group-item.active{z-index:2;color:rgba(255,255,255,0.75);background-color:#073642;border-color:#073642}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#5e4700;background-color:#eadeb8}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#5e4700;background-color:#e4d5a4}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#5e4700;border-color:#5e4700}.list-group-item-secondary{color:#444d4e;background-color:#dce1e2}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#444d4e;background-color:#ced5d6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#444d4e;border-color:#444d4e}.list-group-item-success{color:#16544f;background-color:#c3e5e2}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#16544f;background-color:#b1ddd9}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#16544f;border-color:#16544f}.list-group-item-info{color:#14486d;background-color:#c2dff2}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#14486d;background-color:#add4ee}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#14486d;border-color:#14486d}.list-group-item-warning{color:#6a270b;background-color:#f0cdbe}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#6a270b;background-color:#ebbda9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#6a270b;border-color:#6a270b}.list-group-item-danger{color:#6e1c44;background-color:#f3c7dc}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#6e1c44;background-color:#efb2cf}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#6e1c44;border-color:#6e1c44}.list-group-item-light{color:#848076;background-color:#fefcf7}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#848076;background-color:#fbf4e0}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#848076;border-color:#848076}.list-group-item-dark{color:#041c22;background-color:#bac7ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#041c22;background-color:#acbbbf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#041c22;border-color:#041c22}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#839496;text-shadow:none;opacity:.5}.close:hover,.close:focus{color:#839496;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color: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-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:0.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;transition:-webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out;transition:transform 0.3s ease-out, -webkit-transform 0.3s ease-out;-webkit-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.show .modal-dialog{-webkit-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (0.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#073642;background-clip:padding-box;border:1px solid #002B36;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.show{opacity:0.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #002B36;border-top-left-radius:0.3rem;border-top-right-radius:0.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #002B36}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:0.9}.tooltip .arrow{position:absolute;display:block;width:0.8rem;height:0.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:0.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:0.4rem 0.4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 0.4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:0.4rem;height:0.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:0.4rem 0.4rem 0.4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:0.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 0.4rem 0.4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 0.4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:0.4rem;height:0.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:0.4rem 0 0.4rem 0.4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:0.25rem 0.5rem;color:#fff;text-align:center;background-color:#000;border-radius:0.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#073642;background-clip:padding-box;border:1px solid #002B36;border-radius:0.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:0.5rem;margin:0 0.3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:0.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((0.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:0.5rem 0.5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:#002b36}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#073642}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:0.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:0.5rem 0.5rem 0.5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:#002b36}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#073642}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:0.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((0.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 0.5rem 0.5rem 0.5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:#002b36}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#073642}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #073642}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:0.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:0.5rem 0 0.5rem 0.5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:#002b36}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#073642}.popover-header{padding:0.5rem 0.75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#073642;border-bottom:1px solid #05232b;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:0.5rem 0.75rem;color:#839496}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-webkit-transition:-webkit-transform 0.6s ease;transition:-webkit-transform 0.6s ease;transition:transform 0.6s ease;transition:transform 0.6s ease, -webkit-transform 0.6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:0.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{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}.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-primary{background-color:#B58900 !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#826200 !important}.bg-secondary{background-color:#839496 !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#697b7d !important}.bg-success{background-color:#2AA198 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1f7972 !important}.bg-info{background-color:#268BD2 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#1e6ea7 !important}.bg-warning{background-color:#CB4B16 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#9d3a11 !important}.bg-danger{background-color:#D33682 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#b02669 !important}.bg-light{background-color:#FDF6E3 !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#fae7b3 !important}.bg-dark{background-color:#073642 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#021014 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#B58900 !important}.border-secondary{border-color:#839496 !important}.border-success{border-color:#2AA198 !important}.border-info{border-color:#268BD2 !important}.border-warning{border-color:#CB4B16 !important}.border-danger{border-color:#D33682 !important}.border-light{border-color:#FDF6E3 !important}.border-dark{border-color:#073642 !important}.border-white{border-color:#fff !important}.rounded{border-radius:0.25rem !important}.rounded-top{border-top-left-radius:0.25rem !important;border-top-right-radius:0.25rem !important}.rounded-right{border-top-right-radius:0.25rem !important;border-bottom-right-radius:0.25rem !important}.rounded-bottom{border-bottom-right-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-left{border-top-left-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-sm-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-md-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-lg-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-xl-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-print-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.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::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-sm-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-sm-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-sm-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-sm-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-sm-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-sm-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-sm-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-sm-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-sm-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-sm-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-sm-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-sm-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-sm-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-sm-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-sm-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-sm-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-sm-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-sm-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-sm-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-sm-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-sm-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-sm-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-sm-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-sm-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-sm-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-sm-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-sm-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-md-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-md-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-md-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-md-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-md-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-md-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-md-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-md-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-md-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-md-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-md-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-md-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-md-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-md-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-md-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-md-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-md-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-md-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-md-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-md-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-md-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-md-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-md-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-md-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-md-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-md-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-md-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-lg-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-lg-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-lg-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-lg-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-lg-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-lg-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-lg-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-lg-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-lg-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-lg-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-lg-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-lg-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-lg-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-lg-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-lg-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-lg-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-lg-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-lg-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-lg-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-lg-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-lg-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-lg-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-lg-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-lg-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-lg-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-lg-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-lg-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-xl-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-xl-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-xl-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-xl-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-xl-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-xl-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-xl-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-xl-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-xl-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-xl-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-xl-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-xl-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-xl-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-xl-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-xl-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-xl-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-xl-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-xl-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-xl-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-xl-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-xl-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-xl-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-xl-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-xl-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-xl-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-xl-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-xl-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-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}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: -webkit-sticky) or (position: sticky){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:0.25rem !important}.mt-1,.my-1{margin-top:0.25rem !important}.mr-1,.mx-1{margin-right:0.25rem !important}.mb-1,.my-1{margin-bottom:0.25rem !important}.ml-1,.mx-1{margin-left:0.25rem !important}.m-2{margin:0.5rem !important}.mt-2,.my-2{margin-top:0.5rem !important}.mr-2,.mx-2{margin-right:0.5rem !important}.mb-2,.my-2{margin-bottom:0.5rem !important}.ml-2,.mx-2{margin-left:0.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:0.25rem !important}.pt-1,.py-1{padding-top:0.25rem !important}.pr-1,.px-1{padding-right:0.25rem !important}.pb-1,.py-1{padding-bottom:0.25rem !important}.pl-1,.px-1{padding-left:0.25rem !important}.p-2{padding:0.5rem !important}.pt-2,.py-2{padding-top:0.5rem !important}.pr-2,.px-2{padding-right:0.5rem !important}.pb-2,.py-2{padding-bottom:0.5rem !important}.pl-2,.px-2{padding-left:0.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:0.25rem !important}.mt-sm-1,.my-sm-1{margin-top:0.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:0.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:0.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:0.25rem !important}.m-sm-2{margin:0.5rem !important}.mt-sm-2,.my-sm-2{margin-top:0.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:0.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:0.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:0.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:0.25rem !important}.pt-sm-1,.py-sm-1{padding-top:0.25rem !important}.pr-sm-1,.px-sm-1{padding-right:0.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:0.25rem !important}.pl-sm-1,.px-sm-1{padding-left:0.25rem !important}.p-sm-2{padding:0.5rem !important}.pt-sm-2,.py-sm-2{padding-top:0.5rem !important}.pr-sm-2,.px-sm-2{padding-right:0.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:0.5rem !important}.pl-sm-2,.px-sm-2{padding-left:0.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:0.25rem !important}.mt-md-1,.my-md-1{margin-top:0.25rem !important}.mr-md-1,.mx-md-1{margin-right:0.25rem !important}.mb-md-1,.my-md-1{margin-bottom:0.25rem !important}.ml-md-1,.mx-md-1{margin-left:0.25rem !important}.m-md-2{margin:0.5rem !important}.mt-md-2,.my-md-2{margin-top:0.5rem !important}.mr-md-2,.mx-md-2{margin-right:0.5rem !important}.mb-md-2,.my-md-2{margin-bottom:0.5rem !important}.ml-md-2,.mx-md-2{margin-left:0.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:0.25rem !important}.pt-md-1,.py-md-1{padding-top:0.25rem !important}.pr-md-1,.px-md-1{padding-right:0.25rem !important}.pb-md-1,.py-md-1{padding-bottom:0.25rem !important}.pl-md-1,.px-md-1{padding-left:0.25rem !important}.p-md-2{padding:0.5rem !important}.pt-md-2,.py-md-2{padding-top:0.5rem !important}.pr-md-2,.px-md-2{padding-right:0.5rem !important}.pb-md-2,.py-md-2{padding-bottom:0.5rem !important}.pl-md-2,.px-md-2{padding-left:0.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:0.25rem !important}.mt-lg-1,.my-lg-1{margin-top:0.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:0.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:0.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:0.25rem !important}.m-lg-2{margin:0.5rem !important}.mt-lg-2,.my-lg-2{margin-top:0.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:0.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:0.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:0.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:0.25rem !important}.pt-lg-1,.py-lg-1{padding-top:0.25rem !important}.pr-lg-1,.px-lg-1{padding-right:0.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:0.25rem !important}.pl-lg-1,.px-lg-1{padding-left:0.25rem !important}.p-lg-2{padding:0.5rem !important}.pt-lg-2,.py-lg-2{padding-top:0.5rem !important}.pr-lg-2,.px-lg-2{padding-right:0.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:0.5rem !important}.pl-lg-2,.px-lg-2{padding-left:0.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:0.25rem !important}.mt-xl-1,.my-xl-1{margin-top:0.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:0.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:0.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:0.25rem !important}.m-xl-2{margin:0.5rem !important}.mt-xl-2,.my-xl-2{margin-top:0.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:0.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:0.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:0.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:0.25rem !important}.pt-xl-1,.py-xl-1{padding-top:0.25rem !important}.pr-xl-1,.px-xl-1{padding-right:0.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:0.25rem !important}.pl-xl-1,.px-xl-1{padding-left:0.25rem !important}.p-xl-2{padding:0.5rem !important}.pt-xl-2,.py-xl-2{padding-top:0.5rem !important}.pr-xl-2,.px-xl-2{padding-right:0.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:0.5rem !important}.pl-xl-2,.px-xl-2{padding-left:0.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-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-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#B58900 !important}a.text-primary:hover,a.text-primary:focus{color:#826200 !important}.text-secondary{color:#839496 !important}a.text-secondary:hover,a.text-secondary:focus{color:#697b7d !important}.text-success{color:#2AA198 !important}a.text-success:hover,a.text-success:focus{color:#1f7972 !important}.text-info{color:#268BD2 !important}a.text-info:hover,a.text-info:focus{color:#1e6ea7 !important}.text-warning{color:#CB4B16 !important}a.text-warning:hover,a.text-warning:focus{color:#9d3a11 !important}.text-danger{color:#D33682 !important}a.text-danger:hover,a.text-danger:focus{color:#b02669 !important}.text-light{color:#FDF6E3 !important}a.text-light:hover,a.text-light:focus{color:#fae7b3 !important}.text-dark{color:#073642 !important}a.text-dark:hover,a.text-dark:focus{color:#021014 !important}.text-muted{color:#839496 !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}a:not(.btn){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}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{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}}.table-success,.table-info,.table-warning,.table-danger{color:#fff}.table-success,.table-success>th,.table-success>td{background-color:#2AA198}.table-info,.table-info>th,.table-info>td{background-color:#268BD2}.table-danger,.table-danger>th,.table-danger>td{background-color:#D33682}.table-warning,.table-warning>th,.table-warning>td{background-color:#CB4B16}.table-hover .table-success:hover,.table-hover .table-success:hover>th,.table-hover .table-success:hover>td{background-color:#258d85}.table-hover .table-info:hover,.table-hover .table-info:hover>th,.table-hover .table-info:hover>td{background-color:#227dbc}.table-hover .table-danger:hover,.table-hover .table-danger:hover>th,.table-hover .table-danger:hover>td{background-color:#c42b75}.table-hover .table-warning:hover,.table-hover .table-warning:hover>th,.table-hover .table-warning:hover>td{background-color:#b44314}.alert{border:none;color:#fff}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-primary{background-color:#B58900}.alert-secondary{background-color:#839496}.alert-success{background-color:#2AA198}.alert-info{background-color:#268BD2}.alert-warning{background-color:#CB4B16}.alert-danger{background-color:#D33682}.alert-light{background-color:#FDF6E3}.alert-dark{background-color:#073642}.alert-light,.alert-light a:not(.btn),.alert-light .alert-link{color:#002B36} diff --git a/modules/services/unix/http/parameterised_website/files/themes/superhero.min.css b/modules/services/unix/http/parameterised_website/files/themes/superhero.min.css new file mode 100644 index 000000000..14befe0ae --- /dev/null +++ b/modules/services/unix/http/parameterised_website/files/themes/superhero.min.css @@ -0,0 +1,12 @@ +/*! + * Bootswatch v4.0.0 + * Homepage: https://bootswatch.com + * Copyright 2012-2018 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */@import url("https://fonts.googleapis.com/css?family=Lato:300,400,700");:root{--blue:#DF691A;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#d9534f;--orange:#f0ad4e;--yellow:#f0ad4e;--green:#5cb85c;--teal:#20c997;--cyan:#5bc0de;--white:#fff;--gray:#868e96;--gray-dark:#343a40;--primary:#DF691A;--secondary:#4E5D6C;--success:#5cb85c;--info:#5bc0de;--warning:#f0ad4e;--danger:#d9534f;--light:#8d9dad;--dark:#4E5D6C;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#EBEBEB;text-align:left;background-color:#2B3E50}[tabindex="-1"]:focus{outline:0 !important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}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:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#DF691A;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#9a4912;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:0.75rem;padding-bottom:0.75rem;color:rgba(255,255,255,0.4);text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}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{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[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.2;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;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}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:400}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:0.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#868e96}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:0.25rem;background-color:#2B3E50;border:1px solid #dee2e6;border-radius:0;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:0.5rem;line-height:1}.figure-caption{font-size:90%;color:#868e96}code,kbd,pre,samp{font-family:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:0.2rem 0.4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:0}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.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-sm,.col-sm-auto,.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-md,.col-md-auto,.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-lg,.col-lg-auto,.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,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table th,.table td{padding:0.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#2B3E50}.table-sm th,.table-sm td{padding:0.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#f6d5bf}.table-hover .table-primary:hover{background-color:#f3c6a9}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#f3c6a9}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#cdd2d6}.table-hover .table-secondary:hover{background-color:#bfc5cb}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#bfc5cb}.table-success,.table-success>th,.table-success>td{background-color:#d1ebd1}.table-hover .table-success:hover{background-color:#bfe3bf}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#bfe3bf}.table-info,.table-info>th,.table-info>td{background-color:#d1edf6}.table-hover .table-info:hover{background-color:#bce5f2}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#bce5f2}.table-warning,.table-warning>th,.table-warning>td{background-color:#fbe8cd}.table-hover .table-warning:hover{background-color:#f9ddb5}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#f9ddb5}.table-danger,.table-danger>th,.table-danger>td{background-color:#f4cfce}.table-hover .table-danger:hover{background-color:#efbbb9}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#efbbb9}.table-light,.table-light>th,.table-light>td{background-color:#dfe3e8}.table-hover .table-light:hover{background-color:#d0d6dd}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#d0d6dd}.table-dark,.table-dark>th,.table-dark>td{background-color:#cdd2d6}.table-hover .table-dark:hover{background-color:#bfc5cb}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#bfc5cb}.table-active,.table-active>th,.table-active>td{background-color:rgba(255,255,255,0.075)}.table-hover .table-active:hover{background-color:rgba(242,242,242,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(242,242,242,0.075)}.table .thead-dark th{color:#2B3E50;background-color:#8d9dad;border-color:#4E5D6C}.table .thead-light th{color:#495057;background-color:#4E5D6C;border-color:#dee2e6}.table-dark{color:#2B3E50;background-color:#8d9dad}.table-dark th,.table-dark td,.table-dark thead th{border-color:#4E5D6C}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:0;-webkit-transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#f1b287;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(223,105,26,0.25);box-shadow:0 0 0 0.2rem rgba(223,105,26,0.25)}.form-control::-webkit-input-placeholder{color:#868e96;opacity:1}.form-control:-ms-input-placeholder{color:#868e96;opacity:1}.form-control::-ms-input-placeholder{color:#868e96;opacity:1}.form-control::placeholder{color:#868e96;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#4E5D6C;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:0.375rem;padding-bottom:0.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;border-radius:0}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:0}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:0.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:0.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:rgba(255,255,255,0.4)}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:0.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:0.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#5cb85c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(92,184,92,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#5cb85c}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#5cb85c;-webkit-box-shadow:0 0 0 0.2rem rgba(92,184,92,0.25);box-shadow:0 0 0 0.2rem rgba(92,184,92,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#5cb85c}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#5cb85c}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#b5dfb5}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#80c780}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #2B3E50,0 0 0 0.2rem rgba(92,184,92,0.25);box-shadow:0 0 0 1px #2B3E50,0 0 0 0.2rem rgba(92,184,92,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#5cb85c}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(92,184,92,0.25);box-shadow:0 0 0 0.2rem rgba(92,184,92,0.25)}.invalid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#d9534f}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(217,83,79,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#d9534f}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#d9534f;-webkit-box-shadow:0 0 0 0.2rem rgba(217,83,79,0.25);box-shadow:0 0 0 0.2rem rgba(217,83,79,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#d9534f}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#d9534f}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#f0b9b8}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e27c79}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #2B3E50,0 0 0 0.2rem rgba(217,83,79,0.25);box-shadow:0 0 0 1px #2B3E50,0 0 0 0.2rem rgba(217,83,79,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#d9534f}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(217,83,79,0.25);box-shadow:0 0 0 0.2rem rgba(217,83,79,0.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:0.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;border-radius:0;-webkit-transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(223,105,26,0.25);box-shadow:0 0 0 0.2rem rgba(223,105,26,0.25)}.btn.disabled,.btn:disabled{opacity:0.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#DF691A;border-color:#DF691A}.btn-primary:hover{color:#fff;background-color:#bd5916;border-color:#b15315}.btn-primary:focus,.btn-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(223,105,26,0.5);box-shadow:0 0 0 0.2rem rgba(223,105,26,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#DF691A;border-color:#DF691A}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#b15315;border-color:#a64e13}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(223,105,26,0.5);box-shadow:0 0 0 0.2rem rgba(223,105,26,0.5)}.btn-secondary{color:#fff;background-color:#4E5D6C;border-color:#4E5D6C}.btn-secondary:hover{color:#fff;background-color:#3e4a56;border-color:#39444e}.btn-secondary:focus,.btn-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5);box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#4E5D6C;border-color:#4E5D6C}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#39444e;border-color:#333d47}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5);box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5)}.btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:hover{color:#fff;background-color:#48a648;border-color:#449d44}.btn-success:focus,.btn-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(92,184,92,0.5);box-shadow:0 0 0 0.2rem rgba(92,184,92,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#409440}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(92,184,92,0.5);box-shadow:0 0 0 0.2rem rgba(92,184,92,0.5)}.btn-info{color:#212529;background-color:#5bc0de;border-color:#5bc0de}.btn-info:hover{color:#fff;background-color:#3bb4d8;border-color:#31b0d5}.btn-info:focus,.btn-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(91,192,222,0.5);box-shadow:0 0 0 0.2rem rgba(91,192,222,0.5)}.btn-info.disabled,.btn-info:disabled{color:#212529;background-color:#5bc0de;border-color:#5bc0de}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#2aaacf}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(91,192,222,0.5);box-shadow:0 0 0 0.2rem rgba(91,192,222,0.5)}.btn-warning{color:#212529;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#212529;background-color:#ed9d2b;border-color:#ec971f}.btn-warning:focus,.btn-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(240,173,78,0.5);box-shadow:0 0 0 0.2rem rgba(240,173,78,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#ec971f;border-color:#ea9214}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(240,173,78,0.5);box-shadow:0 0 0 0.2rem rgba(240,173,78,0.5)}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:hover{color:#fff;background-color:#d23430;border-color:#c9302c}.btn-danger:focus,.btn-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(217,83,79,0.5);box-shadow:0 0 0 0.2rem rgba(217,83,79,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#bf2e29}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(217,83,79,0.5);box-shadow:0 0 0 0.2rem rgba(217,83,79,0.5)}.btn-light{color:#212529;background-color:#8d9dad;border-color:#8d9dad}.btn-light:hover{color:#fff;background-color:#778a9d;border-color:#6f8397}.btn-light:focus,.btn-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(141,157,173,0.5);box-shadow:0 0 0 0.2rem rgba(141,157,173,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#8d9dad;border-color:#8d9dad}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#fff;background-color:#6f8397;border-color:#697d91}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(141,157,173,0.5);box-shadow:0 0 0 0.2rem rgba(141,157,173,0.5)}.btn-dark{color:#fff;background-color:#4E5D6C;border-color:#4E5D6C}.btn-dark:hover{color:#fff;background-color:#3e4a56;border-color:#39444e}.btn-dark:focus,.btn-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5);box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#4E5D6C;border-color:#4E5D6C}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#39444e;border-color:#333d47}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5);box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5)}.btn-outline-primary{color:#DF691A;background-color:transparent;background-image:none;border-color:#DF691A}.btn-outline-primary:hover{color:#fff;background-color:#DF691A;border-color:#DF691A}.btn-outline-primary:focus,.btn-outline-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(223,105,26,0.5);box-shadow:0 0 0 0.2rem rgba(223,105,26,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#DF691A;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#DF691A;border-color:#DF691A}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(223,105,26,0.5);box-shadow:0 0 0 0.2rem rgba(223,105,26,0.5)}.btn-outline-secondary{color:#4E5D6C;background-color:transparent;background-image:none;border-color:#4E5D6C}.btn-outline-secondary:hover{color:#fff;background-color:#4E5D6C;border-color:#4E5D6C}.btn-outline-secondary:focus,.btn-outline-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5);box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#4E5D6C;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#4E5D6C;border-color:#4E5D6C}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5);box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5)}.btn-outline-success{color:#5cb85c;background-color:transparent;background-image:none;border-color:#5cb85c}.btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success:focus,.btn-outline-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(92,184,92,0.5);box-shadow:0 0 0 0.2rem rgba(92,184,92,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(92,184,92,0.5);box-shadow:0 0 0 0.2rem rgba(92,184,92,0.5)}.btn-outline-info{color:#5bc0de;background-color:transparent;background-image:none;border-color:#5bc0de}.btn-outline-info:hover{color:#212529;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info:focus,.btn-outline-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(91,192,222,0.5);box-shadow:0 0 0 0.2rem rgba(91,192,222,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#212529;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(91,192,222,0.5);box-shadow:0 0 0 0.2rem rgba(91,192,222,0.5)}.btn-outline-warning{color:#f0ad4e;background-color:transparent;background-image:none;border-color:#f0ad4e}.btn-outline-warning:hover{color:#212529;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning:focus,.btn-outline-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(240,173,78,0.5);box-shadow:0 0 0 0.2rem rgba(240,173,78,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(240,173,78,0.5);box-shadow:0 0 0 0.2rem rgba(240,173,78,0.5)}.btn-outline-danger{color:#d9534f;background-color:transparent;background-image:none;border-color:#d9534f}.btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger:focus,.btn-outline-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(217,83,79,0.5);box-shadow:0 0 0 0.2rem rgba(217,83,79,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(217,83,79,0.5);box-shadow:0 0 0 0.2rem rgba(217,83,79,0.5)}.btn-outline-light{color:#8d9dad;background-color:transparent;background-image:none;border-color:#8d9dad}.btn-outline-light:hover{color:#212529;background-color:#8d9dad;border-color:#8d9dad}.btn-outline-light:focus,.btn-outline-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(141,157,173,0.5);box-shadow:0 0 0 0.2rem rgba(141,157,173,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#8d9dad;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#8d9dad;border-color:#8d9dad}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(141,157,173,0.5);box-shadow:0 0 0 0.2rem rgba(141,157,173,0.5)}.btn-outline-dark{color:#4E5D6C;background-color:transparent;background-image:none;border-color:#4E5D6C}.btn-outline-dark:hover{color:#fff;background-color:#4E5D6C;border-color:#4E5D6C}.btn-outline-dark:focus,.btn-outline-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5);box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#4E5D6C;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#4E5D6C;border-color:#4E5D6C}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5);box-shadow:0 0 0 0.2rem rgba(78,93,108,0.5)}.btn-link{font-weight:400;color:#DF691A;background-color:transparent}.btn-link:hover{color:#9a4912;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#868e96}.btn-lg,.btn-group-lg>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;border-radius:0}.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 0.15s linear;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.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:#EBEBEB;text-align:left;list-style:none;background-color:#4E5D6C;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:0}.dropup .dropdown-menu{margin-top:0;margin-bottom:0.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:0.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:0.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:0.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,0.15)}.dropdown-item{display:block;width:100%;padding:0.25rem 1.5rem;clear:both;font-weight:400;color:#EBEBEB;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#EBEBEB;text-decoration:none;background-color:rgba(255,255,255,0.075)}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#DF691A}.dropdown-item.disabled,.dropdown-item:disabled{color:#868e96;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0.5rem 1.5rem;margin-bottom:0;font-size:0.875rem;color:#868e96;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.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:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.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-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:0.5625rem;padding-left:0.5625rem}.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:0.75rem;padding-left:0.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.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(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0.375rem 0.75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#ced4da;text-align:center;white-space:nowrap;background-color:#4E5D6C;border:1px solid #ced4da;border-radius:0}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#DF691A}.custom-control-input:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #2B3E50,0 0 0 0.2rem rgba(223,105,26,0.25);box-shadow:0 0 0 1px #2B3E50,0 0 0 0.2rem rgba(223,105,26,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#f6cfb5}.custom-control-input:disabled ~ .custom-control-label{color:#868e96}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#4E5D6C}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:0}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#DF691A}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{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='%23fff' 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-label::before{background-color:#DF691A}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{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='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(223,105,26,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(223,105,26,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#DF691A}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{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='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(223,105,26,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:0.375rem 1.75rem 0.375rem 0.75rem;line-height:1.5;color:#495057;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='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#f1b287;outline:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(241,178,135,0.5);box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(241,178,135,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:0.75rem;background-image:none}.custom-select:disabled{color:#868e96;background-color:#4E5D6C}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#f1b287;-webkit-box-shadow:0 0 0 0.2rem rgba(223,105,26,0.25);box-shadow:0 0 0 0.2rem rgba(223,105,26,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#f1b287}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:0.375rem 0.75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:0}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:0.375rem 0.75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#4E5D6C;border-left:1px solid #ced4da;border-radius:0 0 0 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:0.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:rgba(255,255,255,0.4)}.nav-tabs{border-bottom:1px solid #4E5D6C}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0;border-top-right-radius:0}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#4E5D6C #4E5D6C #4E5D6C}.nav-tabs .nav-link.disabled{color:rgba(255,255,255,0.4);background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#EBEBEB;background-color:#2B3E50;border-color:#4E5D6C}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:0}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#DF691A}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0.25rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:0.3125rem;padding-bottom:0.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:0.5rem;padding-bottom:0.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:0.25rem 0.75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:0}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{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:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' 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 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#fff}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.75);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.75)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#4E5D6C;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:0}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.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-header{padding:0.75rem 1.25rem;margin-bottom:0;background-color:rgba(255,255,255,0.075);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(0 - 1px) calc(0 - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:0.75rem 1.25rem;background-color:rgba(255,255,255,0.075);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(0 - 1px) calc(0 - 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-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(0 - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(0 - 1px);border-top-right-radius:calc(0 - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(0 - 1px);border-bottom-left-radius:calc(0 - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:0}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:0;border-top-right-radius:0}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:0.75rem}@media (min-width: 576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#4E5D6C;border-radius:0}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:0.5rem;padding-left:0.5rem;color:#EBEBEB;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#EBEBEB}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:0}.page-link{position:relative;display:block;padding:0.5rem 0.75rem;margin-left:-1px;line-height:1.25;color:#fff;background-color:#4E5D6C;border:1px solid transparent}.page-link:hover{color:#fff;text-decoration:none;background-color:rgba(255,255,255,0.4);border-color:transparent}.page-link:focus{z-index:2;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(223,105,26,0.25);box-shadow:0 0 0 0.2rem rgba(223,105,26,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.page-item:last-child .page-link{border-top-right-radius:0;border-bottom-right-radius:0}.page-item.active .page-link{z-index:1;color:#fff;background-color:#DF691A;border-color:#DF691A}.page-item.disabled .page-link{color:rgba(255,255,255,0.4);pointer-events:none;cursor:auto;background-color:#4E5D6C;border-color:transparent}.pagination-lg .page-link{padding:0.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:0;border-bottom-left-radius:0}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:0;border-bottom-right-radius:0}.pagination-sm .page-link{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:0;border-bottom-left-radius:0}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:0;border-bottom-right-radius:0}.badge{display:inline-block;padding:0.25em 0.4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:0.6em;padding-left:0.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#DF691A}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#b15315}.badge-secondary{color:#fff;background-color:#4E5D6C}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#39444e}.badge-success{color:#fff;background-color:#5cb85c}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#449d44}.badge-info{color:#212529;background-color:#5bc0de}.badge-info[href]:hover,.badge-info[href]:focus{color:#212529;text-decoration:none;background-color:#31b0d5}.badge-warning{color:#212529;background-color:#f0ad4e}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#ec971f}.badge-danger{color:#fff;background-color:#d9534f}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#c9302c}.badge-light{color:#212529;background-color:#8d9dad}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#6f8397}.badge-dark{color:#fff;background-color:#4E5D6C}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#39444e}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#4E5D6C;border-radius:0}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:0.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:0}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:0.75rem 1.25rem;color:inherit}.alert-primary{color:#74370e;background-color:#f9e1d1;border-color:#f6d5bf}.alert-primary hr{border-top-color:#f3c6a9}.alert-primary .alert-link{color:#462109}.alert-secondary{color:#293038;background-color:#dcdfe2;border-color:#cdd2d6}.alert-secondary hr{border-top-color:#bfc5cb}.alert-secondary .alert-link{color:#13171b}.alert-success{color:#306030;background-color:#def1de;border-color:#d1ebd1}.alert-success hr{border-top-color:#bfe3bf}.alert-success .alert-link{color:#1f3e1f}.alert-info{color:#2f6473;background-color:#def2f8;border-color:#d1edf6}.alert-info hr{border-top-color:#bce5f2}.alert-info .alert-link{color:#20454f}.alert-warning{color:#7d5a29;background-color:#fcefdc;border-color:#fbe8cd}.alert-warning hr{border-top-color:#f9ddb5}.alert-warning .alert-link{color:#573e1c}.alert-danger{color:#712b29;background-color:#f7dddc;border-color:#f4cfce}.alert-danger hr{border-top-color:#efbbb9}.alert-danger .alert-link{color:#4c1d1b}.alert-light{color:#49525a;background-color:#e8ebef;border-color:#dfe3e8}.alert-light hr{border-top-color:#d0d6dd}.alert-light .alert-link{color:#32383e}.alert-dark{color:#293038;background-color:#dcdfe2;border-color:#cdd2d6}.alert-dark hr{border-top-color:#bfc5cb}.alert-dark .alert-link{color:#13171b}@-webkit-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:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#4E5D6C;border-radius:0}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#DF691A;text-align:center;background-color:#DF691A;-webkit-transition:width 0.6s ease;transition:width 0.6s ease}.progress-bar-striped{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-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#fff;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#fff;text-decoration:none;background-color:rgba(255,255,255,0.4)}.list-group-item-action:active{color:#EBEBEB;background-color:#4E5D6C}.list-group-item{position:relative;display:block;padding:0.75rem 1.25rem;margin-bottom:-1px;background-color:#4E5D6C;border:1px solid transparent}.list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:rgba(255,255,255,0.4);background-color:#4E5D6C}.list-group-item.active{z-index:2;color:#fff;background-color:#DF691A;border-color:#DF691A}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#74370e;background-color:#f6d5bf}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#74370e;background-color:#f3c6a9}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#74370e;border-color:#74370e}.list-group-item-secondary{color:#293038;background-color:#cdd2d6}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#293038;background-color:#bfc5cb}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#293038;border-color:#293038}.list-group-item-success{color:#306030;background-color:#d1ebd1}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#306030;background-color:#bfe3bf}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#306030;border-color:#306030}.list-group-item-info{color:#2f6473;background-color:#d1edf6}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#2f6473;background-color:#bce5f2}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#2f6473;border-color:#2f6473}.list-group-item-warning{color:#7d5a29;background-color:#fbe8cd}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#7d5a29;background-color:#f9ddb5}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#7d5a29;border-color:#7d5a29}.list-group-item-danger{color:#712b29;background-color:#f4cfce}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#712b29;background-color:#efbbb9}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#712b29;border-color:#712b29}.list-group-item-light{color:#49525a;background-color:#dfe3e8}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#49525a;background-color:#d0d6dd}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#49525a;border-color:#49525a}.list-group-item-dark{color:#293038;background-color:#cdd2d6}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#293038;background-color:#bfc5cb}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#293038;border-color:#293038}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color: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-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:0.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;transition:-webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out;transition:transform 0.3s ease-out, -webkit-transform 0.3s ease-out;-webkit-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.show .modal-dialog{-webkit-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (0.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#4E5D6C;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:0;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.show{opacity:0.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid rgba(0,0,0,0.2);border-top-left-radius:0;border-top-right-radius:0}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid rgba(0,0,0,0.2)}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:0.9}.tooltip .arrow{position:absolute;display:block;width:0.8rem;height:0.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:0.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:0.4rem 0.4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 0.4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:0.4rem;height:0.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:0.4rem 0.4rem 0.4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:0.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 0.4rem 0.4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 0.4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:0.4rem;height:0.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:0.4rem 0 0.4rem 0.4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:0.25rem 0.5rem;color:#fff;text-align:center;background-color:#000;border-radius:0}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#4E5D6C;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:0}.popover .arrow{position:absolute;display:block;width:1rem;height:0.5rem;margin:0 0}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:0.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((0.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:0.5rem 0.5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#4E5D6C}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:0.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:0.5rem 0.5rem 0.5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#4E5D6C}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:0.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((0.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 0.5rem 0.5rem 0.5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#4E5D6C}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid rgba(255,255,255,0.075)}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:0.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:0.5rem 0 0.5rem 0.5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#4E5D6C}.popover-header{padding:0.5rem 0.75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:rgba(255,255,255,0.075);border-bottom:1px solid rgba(242,242,242,0.075);border-top-left-radius:calc(0 - 1px);border-top-right-radius:calc(0 - 1px)}.popover-header:empty{display:none}.popover-body{padding:0.5rem 0.75rem;color:#EBEBEB}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-webkit-transition:-webkit-transform 0.6s ease;transition:-webkit-transform 0.6s ease;transition:transform 0.6s ease;transition:transform 0.6s ease, -webkit-transform 0.6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:0.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{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}.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-primary{background-color:#DF691A !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#b15315 !important}.bg-secondary{background-color:#4E5D6C !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#39444e !important}.bg-success{background-color:#5cb85c !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#449d44 !important}.bg-info{background-color:#5bc0de !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#31b0d5 !important}.bg-warning{background-color:#f0ad4e !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#ec971f !important}.bg-danger{background-color:#d9534f !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#c9302c !important}.bg-light{background-color:#8d9dad !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#6f8397 !important}.bg-dark{background-color:#4E5D6C !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#39444e !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#DF691A !important}.border-secondary{border-color:#4E5D6C !important}.border-success{border-color:#5cb85c !important}.border-info{border-color:#5bc0de !important}.border-warning{border-color:#f0ad4e !important}.border-danger{border-color:#d9534f !important}.border-light{border-color:#8d9dad !important}.border-dark{border-color:#4E5D6C !important}.border-white{border-color:#fff !important}.rounded{border-radius:0 !important}.rounded-top{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-right{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-bottom{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-left{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-sm-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-md-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-lg-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-xl-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-print-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.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::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-sm-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-sm-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-sm-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-sm-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-sm-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-sm-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-sm-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-sm-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-sm-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-sm-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-sm-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-sm-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-sm-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-sm-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-sm-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-sm-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-sm-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-sm-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-sm-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-sm-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-sm-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-sm-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-sm-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-sm-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-sm-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-sm-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-sm-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-md-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-md-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-md-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-md-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-md-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-md-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-md-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-md-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-md-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-md-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-md-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-md-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-md-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-md-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-md-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-md-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-md-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-md-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-md-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-md-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-md-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-md-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-md-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-md-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-md-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-md-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-md-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-lg-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-lg-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-lg-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-lg-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-lg-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-lg-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-lg-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-lg-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-lg-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-lg-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-lg-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-lg-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-lg-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-lg-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-lg-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-lg-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-lg-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-lg-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-lg-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-lg-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-lg-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-lg-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-lg-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-lg-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-lg-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-lg-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-lg-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-xl-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-xl-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-xl-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-xl-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-xl-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-xl-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-xl-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-xl-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-xl-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-xl-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-xl-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-xl-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-xl-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-xl-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-xl-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-xl-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-xl-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-xl-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-xl-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-xl-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-xl-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-xl-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-xl-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-xl-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-xl-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-xl-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-xl-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-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}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: -webkit-sticky) or (position: sticky){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:0.25rem !important}.mt-1,.my-1{margin-top:0.25rem !important}.mr-1,.mx-1{margin-right:0.25rem !important}.mb-1,.my-1{margin-bottom:0.25rem !important}.ml-1,.mx-1{margin-left:0.25rem !important}.m-2{margin:0.5rem !important}.mt-2,.my-2{margin-top:0.5rem !important}.mr-2,.mx-2{margin-right:0.5rem !important}.mb-2,.my-2{margin-bottom:0.5rem !important}.ml-2,.mx-2{margin-left:0.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:0.25rem !important}.pt-1,.py-1{padding-top:0.25rem !important}.pr-1,.px-1{padding-right:0.25rem !important}.pb-1,.py-1{padding-bottom:0.25rem !important}.pl-1,.px-1{padding-left:0.25rem !important}.p-2{padding:0.5rem !important}.pt-2,.py-2{padding-top:0.5rem !important}.pr-2,.px-2{padding-right:0.5rem !important}.pb-2,.py-2{padding-bottom:0.5rem !important}.pl-2,.px-2{padding-left:0.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:0.25rem !important}.mt-sm-1,.my-sm-1{margin-top:0.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:0.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:0.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:0.25rem !important}.m-sm-2{margin:0.5rem !important}.mt-sm-2,.my-sm-2{margin-top:0.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:0.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:0.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:0.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:0.25rem !important}.pt-sm-1,.py-sm-1{padding-top:0.25rem !important}.pr-sm-1,.px-sm-1{padding-right:0.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:0.25rem !important}.pl-sm-1,.px-sm-1{padding-left:0.25rem !important}.p-sm-2{padding:0.5rem !important}.pt-sm-2,.py-sm-2{padding-top:0.5rem !important}.pr-sm-2,.px-sm-2{padding-right:0.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:0.5rem !important}.pl-sm-2,.px-sm-2{padding-left:0.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:0.25rem !important}.mt-md-1,.my-md-1{margin-top:0.25rem !important}.mr-md-1,.mx-md-1{margin-right:0.25rem !important}.mb-md-1,.my-md-1{margin-bottom:0.25rem !important}.ml-md-1,.mx-md-1{margin-left:0.25rem !important}.m-md-2{margin:0.5rem !important}.mt-md-2,.my-md-2{margin-top:0.5rem !important}.mr-md-2,.mx-md-2{margin-right:0.5rem !important}.mb-md-2,.my-md-2{margin-bottom:0.5rem !important}.ml-md-2,.mx-md-2{margin-left:0.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:0.25rem !important}.pt-md-1,.py-md-1{padding-top:0.25rem !important}.pr-md-1,.px-md-1{padding-right:0.25rem !important}.pb-md-1,.py-md-1{padding-bottom:0.25rem !important}.pl-md-1,.px-md-1{padding-left:0.25rem !important}.p-md-2{padding:0.5rem !important}.pt-md-2,.py-md-2{padding-top:0.5rem !important}.pr-md-2,.px-md-2{padding-right:0.5rem !important}.pb-md-2,.py-md-2{padding-bottom:0.5rem !important}.pl-md-2,.px-md-2{padding-left:0.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:0.25rem !important}.mt-lg-1,.my-lg-1{margin-top:0.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:0.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:0.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:0.25rem !important}.m-lg-2{margin:0.5rem !important}.mt-lg-2,.my-lg-2{margin-top:0.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:0.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:0.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:0.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:0.25rem !important}.pt-lg-1,.py-lg-1{padding-top:0.25rem !important}.pr-lg-1,.px-lg-1{padding-right:0.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:0.25rem !important}.pl-lg-1,.px-lg-1{padding-left:0.25rem !important}.p-lg-2{padding:0.5rem !important}.pt-lg-2,.py-lg-2{padding-top:0.5rem !important}.pr-lg-2,.px-lg-2{padding-right:0.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:0.5rem !important}.pl-lg-2,.px-lg-2{padding-left:0.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:0.25rem !important}.mt-xl-1,.my-xl-1{margin-top:0.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:0.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:0.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:0.25rem !important}.m-xl-2{margin:0.5rem !important}.mt-xl-2,.my-xl-2{margin-top:0.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:0.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:0.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:0.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:0.25rem !important}.pt-xl-1,.py-xl-1{padding-top:0.25rem !important}.pr-xl-1,.px-xl-1{padding-right:0.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:0.25rem !important}.pl-xl-1,.px-xl-1{padding-left:0.25rem !important}.p-xl-2{padding:0.5rem !important}.pt-xl-2,.py-xl-2{padding-top:0.5rem !important}.pr-xl-2,.px-xl-2{padding-right:0.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:0.5rem !important}.pl-xl-2,.px-xl-2{padding-left:0.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-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-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#DF691A !important}a.text-primary:hover,a.text-primary:focus{color:#b15315 !important}.text-secondary{color:#4E5D6C !important}a.text-secondary:hover,a.text-secondary:focus{color:#39444e !important}.text-success{color:#5cb85c !important}a.text-success:hover,a.text-success:focus{color:#449d44 !important}.text-info{color:#5bc0de !important}a.text-info:hover,a.text-info:focus{color:#31b0d5 !important}.text-warning{color:#f0ad4e !important}a.text-warning:hover,a.text-warning:focus{color:#ec971f !important}.text-danger{color:#d9534f !important}a.text-danger:hover,a.text-danger:focus{color:#c9302c !important}.text-light{color:#8d9dad !important}a.text-light:hover,a.text-light:focus{color:#6f8397 !important}.text-dark{color:#4E5D6C !important}a.text-dark:hover,a.text-dark:focus{color:#39444e !important}.text-muted{color:rgba(255,255,255,0.4) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}a:not(.btn){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}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{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}}.navbar{font-size:0.875rem}.btn-info,.btn-warning{color:#fff}.dropdown-menu{font-size:0.875rem}.dropdown-header{font-size:0.875rem}.blockquote-footer{color:#EBEBEB}.table{font-size:0.875rem}.table .thead-dark th{color:#fff}.table a:not(.btn){color:#fff;text-decoration:underline}.table .dropdown-menu a{text-decoration:none}.table .text-muted{color:rgba(255,255,255,0.4)}.table-success,.table-success>th,.table-success>td{background-color:#5cb85c}.table-info,.table-info>th,.table-info>td{background-color:#5bc0de}.table-danger,.table-danger>th,.table-danger>td{background-color:#d9534f}.table-warning,.table-warning>th,.table-warning>td{background-color:#f0ad4e}.table-hover .table-success:hover,.table-hover .table-success:hover>th,.table-hover .table-success:hover>td{background-color:#4cae4c}.table-hover .table-info:hover,.table-hover .table-info:hover>th,.table-hover .table-info:hover>td{background-color:#46b8da}.table-hover .table-danger:hover,.table-hover .table-danger:hover>th,.table-hover .table-danger:hover>td{background-color:#d43f3a}.table-hover .table-warning:hover,.table-hover .table-warning:hover>th,.table-hover .table-warning:hover>td{background-color:#eea236}label,.radio label,.checkbox label,.help-block{font-size:0.875rem}.input-addon,.input-group-addon{color:#EBEBEB}.nav-tabs .nav-link,.nav-tabs .nav-link:hover,.nav-pills .nav-link,.nav-pills .nav-link:hover{color:#EBEBEB}.nav-tabs .nav-link.disabled,.nav-pills .nav-link.disabled{color:rgba(255,255,255,0.4)}.page-link:hover,.page-link:focus{color:#fff;text-decoration:none}.alert{border:none;color:#fff}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-primary{background-color:#DF691A}.alert-secondary{background-color:#4E5D6C}.alert-success{background-color:#5cb85c}.alert-info{background-color:#5bc0de}.alert-warning{background-color:#f0ad4e}.alert-danger{background-color:#d9534f}.alert-light{background-color:#8d9dad}.alert-dark{background-color:#4E5D6C}.badge-warning,.badge-info{color:#fff}.close{opacity:0.5}.close:hover,.close:focus{opacity:1}.modal-header,.modal-footer{background-color:rgba(255,255,255,0.075)}.modal-header .close,.modal-footer .close{color:#fff;text-shadow:none;opacity:0.5}.modal-header .close:hover,.modal-header .close:focus,.modal-footer .close:hover,.modal-footer .close:focus{opacity:1} diff --git a/modules/services/unix/http/parameterised_website/files/themes/united.min.css b/modules/services/unix/http/parameterised_website/files/themes/united.min.css new file mode 100644 index 000000000..7bd290370 --- /dev/null +++ b/modules/services/unix/http/parameterised_website/files/themes/united.min.css @@ -0,0 +1,12 @@ +/*! + * Bootswatch v4.0.0 + * Homepage: https://bootswatch.com + * Copyright 2012-2018 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */@import url("https://fonts.googleapis.com/css?family=Ubuntu:400,700");:root{--blue:#007bff;--indigo:#6610f2;--purple:#772953;--pink:#e83e8c;--red:#DF382C;--orange:#E95420;--yellow:#EFB73E;--green:#38B44A;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#868e96;--gray-dark:#333;--primary:#E95420;--secondary:#AEA79F;--success:#38B44A;--info:#17a2b8;--warning:#EFB73E;--danger:#DF382C;--light:#e9ecef;--dark:#772953;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:"Ubuntu", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:"Ubuntu", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#333;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}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:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#E95420;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#ac3911;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:0.75rem;padding-bottom:0.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}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{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[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.2;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;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}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:400}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:0.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#868e96}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:0.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:0.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:0.5rem;line-height:1}.figure-caption{font-size:90%;color:#868e96}code,kbd,pre,samp{font-family:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:0.2rem 0.4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:0.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.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-sm,.col-sm-auto,.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-md,.col-md-auto,.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-lg,.col-lg-auto,.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,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.3333333333%}.offset-2{margin-left:16.6666666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.3333333333%}.offset-5{margin-left:41.6666666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.3333333333%}.offset-8{margin-left:66.6666666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.3333333333%}.offset-11{margin-left:91.6666666667%}@media (min-width: 576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.3333333333%}.offset-sm-2{margin-left:16.6666666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.3333333333%}.offset-sm-5{margin-left:41.6666666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.3333333333%}.offset-sm-8{margin-left:66.6666666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.3333333333%}.offset-sm-11{margin-left:91.6666666667%}}@media (min-width: 768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.3333333333%}.offset-md-2{margin-left:16.6666666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.3333333333%}.offset-md-5{margin-left:41.6666666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.3333333333%}.offset-md-8{margin-left:66.6666666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.3333333333%}.offset-md-11{margin-left:91.6666666667%}}@media (min-width: 992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.3333333333%}.offset-lg-2{margin-left:16.6666666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.3333333333%}.offset-lg-5{margin-left:41.6666666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.3333333333%}.offset-lg-8{margin-left:66.6666666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.3333333333%}.offset-lg-11{margin-left:91.6666666667%}}@media (min-width: 1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.3333333333%;flex:0 0 8.3333333333%;max-width:8.3333333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.6666666667%;flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333333333%;flex:0 0 33.3333333333%;max-width:33.3333333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.6666666667%;flex:0 0 41.6666666667%;max-width:41.6666666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.3333333333%;flex:0 0 58.3333333333%;max-width:58.3333333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.6666666667%;flex:0 0 66.6666666667%;max-width:66.6666666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.3333333333%;flex:0 0 83.3333333333%;max-width:83.3333333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.6666666667%;flex:0 0 91.6666666667%;max-width:91.6666666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.3333333333%}.offset-xl-2{margin-left:16.6666666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.3333333333%}.offset-xl-5{margin-left:41.6666666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.3333333333%}.offset-xl-8{margin-left:66.6666666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.3333333333%}.offset-xl-11{margin-left:91.6666666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table th,.table td{padding:0.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:0.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.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-primary,.table-primary>th,.table-primary>td{background-color:#f9cfc1}.table-hover .table-primary:hover{background-color:#f7bdaa}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#f7bdaa}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#e8e6e4}.table-hover .table-secondary:hover{background-color:#dcd9d6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#dcd9d6}.table-success,.table-success>th,.table-success>td{background-color:#c7eacc}.table-hover .table-success:hover{background-color:#b4e3bb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b4e3bb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#fbebc9}.table-hover .table-warning:hover{background-color:#f9e2b1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#f9e2b1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f6c7c4}.table-hover .table-danger:hover{background-color:#f3b2ae}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f3b2ae}.table-light,.table-light>th,.table-light>td{background-color:#f9fafb}.table-hover .table-light:hover{background-color:#eaedf1}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#eaedf1}.table-dark,.table-dark>th,.table-dark>td{background-color:#d9c3cf}.table-hover .table-dark:hover{background-color:#cfb3c3}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#cfb3c3}.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 .thead-dark th{color:#fff;background-color:#772953;border-color:#642246}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#772953}.table-dark th,.table-dark td,.table-dark thead th{border-color:#642246}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:0.25rem;-webkit-transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#f4ad94;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(233,84,32,0.25);box-shadow:0 0 0 0.2rem rgba(233,84,32,0.25)}.form-control::-webkit-input-placeholder{color:#868e96;opacity:1}.form-control:-ms-input-placeholder{color:#868e96;opacity:1}.form-control::-ms-input-placeholder{color:#868e96;opacity:1}.form-control::placeholder{color:#868e96;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:0.375rem;padding-bottom:0.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;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>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;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>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:0.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:0.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#868e96}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:0.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:0.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#38B44A}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(56,180,74,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#38B44A}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#38B44A;-webkit-box-shadow:0 0 0 0.2rem rgba(56,180,74,0.25);box-shadow:0 0 0 0.2rem rgba(56,180,74,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#38B44A}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#38B44A}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#8fdc9a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#55ca66}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(56,180,74,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(56,180,74,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#38B44A}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(56,180,74,0.25);box-shadow:0 0 0 0.2rem rgba(56,180,74,0.25)}.invalid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:80%;color:#DF382C}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(223,56,44,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#DF382C}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#DF382C;-webkit-box-shadow:0 0 0 0.2rem rgba(223,56,44,0.25);box-shadow:0 0 0 0.2rem rgba(223,56,44,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#DF382C}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#DF382C}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#f0a09b}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e66258}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(223,56,44,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(223,56,44,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#DF382C}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{-webkit-box-shadow:0 0 0 0.2rem rgba(223,56,44,0.25);box-shadow:0 0 0 0.2rem rgba(223,56,44,0.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:0.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:0.375rem 0.75rem;font-size:1rem;line-height:1.5;border-radius:0.25rem;-webkit-transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(233,84,32,0.25);box-shadow:0 0 0 0.2rem rgba(233,84,32,0.25)}.btn.disabled,.btn:disabled{opacity:0.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#E95420;border-color:#E95420}.btn-primary:hover{color:#fff;background-color:#ce4414;border-color:#c34113}.btn-primary:focus,.btn-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(233,84,32,0.5);box-shadow:0 0 0 0.2rem rgba(233,84,32,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#E95420;border-color:#E95420}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#c34113;border-color:#b73d12}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(233,84,32,0.5);box-shadow:0 0 0 0.2rem rgba(233,84,32,0.5)}.btn-secondary{color:#fff;background-color:#AEA79F;border-color:#AEA79F}.btn-secondary:hover{color:#fff;background-color:#9c948a;border-color:#978e83}.btn-secondary:focus,.btn-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(174,167,159,0.5);box-shadow:0 0 0 0.2rem rgba(174,167,159,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#AEA79F;border-color:#AEA79F}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#978e83;border-color:#91877c}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(174,167,159,0.5);box-shadow:0 0 0 0.2rem rgba(174,167,159,0.5)}.btn-success{color:#fff;background-color:#38B44A;border-color:#38B44A}.btn-success:hover{color:#fff;background-color:#2f973e;border-color:#2c8d3a}.btn-success:focus,.btn-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(56,180,74,0.5);box-shadow:0 0 0 0.2rem rgba(56,180,74,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#38B44A;border-color:#38B44A}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#2c8d3a;border-color:#298336}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(56,180,74,0.5);box-shadow:0 0 0 0.2rem rgba(56,180,74,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5);box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5);box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-warning{color:#fff;background-color:#EFB73E;border-color:#EFB73E}.btn-warning:hover{color:#fff;background-color:#ecaa1b;border-color:#e7a413}.btn-warning:focus,.btn-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(239,183,62,0.5);box-shadow:0 0 0 0.2rem rgba(239,183,62,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#fff;background-color:#EFB73E;border-color:#EFB73E}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#e7a413;border-color:#db9c12}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(239,183,62,0.5);box-shadow:0 0 0 0.2rem rgba(239,183,62,0.5)}.btn-danger{color:#fff;background-color:#DF382C;border-color:#DF382C}.btn-danger:hover{color:#fff;background-color:#c7291e;border-color:#bc271c}.btn-danger:focus,.btn-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(223,56,44,0.5);box-shadow:0 0 0 0.2rem rgba(223,56,44,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#DF382C;border-color:#DF382C}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bc271c;border-color:#b0251b}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(223,56,44,0.5);box-shadow:0 0 0 0.2rem rgba(223,56,44,0.5)}.btn-light{color:#212529;background-color:#e9ecef;border-color:#e9ecef}.btn-light:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}.btn-light:focus,.btn-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(233,236,239,0.5);box-shadow:0 0 0 0.2rem rgba(233,236,239,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#cbd3da;border-color:#c4ccd4}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(233,236,239,0.5);box-shadow:0 0 0 0.2rem rgba(233,236,239,0.5)}.btn-dark{color:#fff;background-color:#772953;border-color:#772953}.btn-dark:hover{color:#fff;background-color:#5b1f3f;border-color:#511c39}.btn-dark:focus,.btn-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(119,41,83,0.5);box-shadow:0 0 0 0.2rem rgba(119,41,83,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#772953;border-color:#772953}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#511c39;border-color:#481932}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(119,41,83,0.5);box-shadow:0 0 0 0.2rem rgba(119,41,83,0.5)}.btn-outline-primary{color:#E95420;background-color:transparent;background-image:none;border-color:#E95420}.btn-outline-primary:hover{color:#fff;background-color:#E95420;border-color:#E95420}.btn-outline-primary:focus,.btn-outline-primary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(233,84,32,0.5);box-shadow:0 0 0 0.2rem rgba(233,84,32,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#E95420;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#E95420;border-color:#E95420}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(233,84,32,0.5);box-shadow:0 0 0 0.2rem rgba(233,84,32,0.5)}.btn-outline-secondary{color:#AEA79F;background-color:transparent;background-image:none;border-color:#AEA79F}.btn-outline-secondary:hover{color:#fff;background-color:#AEA79F;border-color:#AEA79F}.btn-outline-secondary:focus,.btn-outline-secondary.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(174,167,159,0.5);box-shadow:0 0 0 0.2rem rgba(174,167,159,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#AEA79F;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#AEA79F;border-color:#AEA79F}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(174,167,159,0.5);box-shadow:0 0 0 0.2rem rgba(174,167,159,0.5)}.btn-outline-success{color:#38B44A;background-color:transparent;background-image:none;border-color:#38B44A}.btn-outline-success:hover{color:#fff;background-color:#38B44A;border-color:#38B44A}.btn-outline-success:focus,.btn-outline-success.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(56,180,74,0.5);box-shadow:0 0 0 0.2rem rgba(56,180,74,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#38B44A;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#38B44A;border-color:#38B44A}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(56,180,74,0.5);box-shadow:0 0 0 0.2rem rgba(56,180,74,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5);box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5);box-shadow:0 0 0 0.2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#EFB73E;background-color:transparent;background-image:none;border-color:#EFB73E}.btn-outline-warning:hover{color:#fff;background-color:#EFB73E;border-color:#EFB73E}.btn-outline-warning:focus,.btn-outline-warning.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(239,183,62,0.5);box-shadow:0 0 0 0.2rem rgba(239,183,62,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#EFB73E;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#EFB73E;border-color:#EFB73E}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(239,183,62,0.5);box-shadow:0 0 0 0.2rem rgba(239,183,62,0.5)}.btn-outline-danger{color:#DF382C;background-color:transparent;background-image:none;border-color:#DF382C}.btn-outline-danger:hover{color:#fff;background-color:#DF382C;border-color:#DF382C}.btn-outline-danger:focus,.btn-outline-danger.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(223,56,44,0.5);box-shadow:0 0 0 0.2rem rgba(223,56,44,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#DF382C;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#DF382C;border-color:#DF382C}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(223,56,44,0.5);box-shadow:0 0 0 0.2rem rgba(223,56,44,0.5)}.btn-outline-light{color:#e9ecef;background-color:transparent;background-image:none;border-color:#e9ecef}.btn-outline-light:hover{color:#212529;background-color:#e9ecef;border-color:#e9ecef}.btn-outline-light:focus,.btn-outline-light.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(233,236,239,0.5);box-shadow:0 0 0 0.2rem rgba(233,236,239,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#e9ecef;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#e9ecef;border-color:#e9ecef}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(233,236,239,0.5);box-shadow:0 0 0 0.2rem rgba(233,236,239,0.5)}.btn-outline-dark{color:#772953;background-color:transparent;background-image:none;border-color:#772953}.btn-outline-dark:hover{color:#fff;background-color:#772953;border-color:#772953}.btn-outline-dark:focus,.btn-outline-dark.focus{-webkit-box-shadow:0 0 0 0.2rem rgba(119,41,83,0.5);box-shadow:0 0 0 0.2rem rgba(119,41,83,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#772953;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#772953;border-color:#772953}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{-webkit-box-shadow:0 0 0 0.2rem rgba(119,41,83,0.5);box-shadow:0 0 0 0.2rem rgba(119,41,83,0.5)}.btn-link{font-weight:400;color:#E95420;background-color:transparent}.btn-link:hover{color:#ac3911;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:underline;border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#868e96}.btn-lg,.btn-group-lg>.btn{padding:0.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:0.3rem}.btn-sm,.btn-group-sm>.btn{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5;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 0.15s linear;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.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:#333;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:0.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:0.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:0.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:0.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:0.255em;vertical-align:0.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:0.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:0.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#E95420}.dropdown-item.disabled,.dropdown-item:disabled{color:#868e96;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0.5rem 1.5rem;margin-bottom:0;font-size:0.875rem;color:#868e96;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.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:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.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-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:0.5625rem;padding-left:0.5625rem}.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:0.75rem;padding-left:0.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.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(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0.375rem 0.75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:0.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#E95420}.custom-control-input:focus ~ .custom-control-label::before{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(233,84,32,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.2rem rgba(233,84,32,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#f9d1c2}.custom-control-input:disabled ~ .custom-control-label{color:#868e96}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:0.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:0.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#E95420}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{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='%23fff' 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-label::before{background-color:#E95420}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{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='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(233,84,32,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(233,84,32,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#E95420}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{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='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(233,84,32,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:0.375rem 1.75rem 0.375rem 0.75rem;line-height:1.5;color:#495057;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='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:0.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#f4ad94;outline:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(244,173,148,0.5);box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(244,173,148,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:0.75rem;background-image:none}.custom-select:disabled{color:#868e96;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:0.375rem;padding-bottom:0.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#f4ad94;-webkit-box-shadow:0 0 0 0.2rem rgba(233,84,32,0.25);box-shadow:0 0 0 0.2rem rgba(233,84,32,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#f4ad94}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:0.375rem 0.75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:0.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:0.375rem 0.75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 0.25rem 0.25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:0.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#868e96}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#868e96;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:0.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#E95420}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:0.3125rem;padding-bottom:0.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:0.5rem;padding-bottom:0.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:0.25rem 0.75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:0.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:0.5rem;padding-left:0.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{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:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' 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 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' 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 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:0.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-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-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.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-header{padding:0.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:0.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.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-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(0.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:0.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:0.25rem;border-top-right-radius:0.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:0.25rem;border-bottom-left-radius:0.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:0.75rem}@media (min-width: 576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:0.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:0.5rem;padding-left:0.5rem;color:#868e96;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#868e96}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:0.25rem}.page-link{position:relative;display:block;padding:0.5rem 0.75rem;margin-left:-1px;line-height:1.25;color:#E95420;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#ac3911;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;-webkit-box-shadow:0 0 0 0.2rem rgba(233,84,32,0.25);box-shadow:0 0 0 0.2rem rgba(233,84,32,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:0.25rem;border-bottom-left-radius:0.25rem}.page-item:last-child .page-link{border-top-right-radius:0.25rem;border-bottom-right-radius:0.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#E95420;border-color:#E95420}.page-item.disabled .page-link{color:#868e96;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:0.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:0.3rem;border-bottom-left-radius:0.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:0.3rem;border-bottom-right-radius:0.3rem}.pagination-sm .page-link{padding:0.25rem 0.5rem;font-size:0.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:0.2rem;border-bottom-left-radius:0.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:0.2rem;border-bottom-right-radius:0.2rem}.badge{display:inline-block;padding:0.25em 0.4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:0.6em;padding-left:0.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#E95420}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#c34113}.badge-secondary{color:#fff;background-color:#AEA79F}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#978e83}.badge-success{color:#fff;background-color:#38B44A}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#2c8d3a}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#fff;background-color:#EFB73E}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#fff;text-decoration:none;background-color:#e7a413}.badge-danger{color:#fff;background-color:#DF382C}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bc271c}.badge-light{color:#212529;background-color:#e9ecef}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#cbd3da}.badge-dark{color:#fff;background-color:#772953}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#511c39}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:0.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:0.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:0.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:0.75rem 1.25rem;color:inherit}.alert-primary{color:#792c11;background-color:#fbddd2;border-color:#f9cfc1}.alert-primary hr{border-top-color:#f7bdaa}.alert-primary .alert-link{color:#4c1c0b}.alert-secondary{color:#5a5753;background-color:#efedec;border-color:#e8e6e4}.alert-secondary hr{border-top-color:#dcd9d6}.alert-secondary .alert-link{color:#3f3d3b}.alert-success{color:#1d5e26;background-color:#d7f0db;border-color:#c7eacc}.alert-success hr{border-top-color:#b4e3bb}.alert-success .alert-link{color:#113716}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#7c5f20;background-color:#fcf1d8;border-color:#fbebc9}.alert-warning hr{border-top-color:#f9e2b1}.alert-warning .alert-link{color:#534016}.alert-danger{color:#741d17;background-color:#f9d7d5;border-color:#f6c7c4}.alert-danger hr{border-top-color:#f3b2ae}.alert-danger .alert-link{color:#49120f}.alert-light{color:#797b7c;background-color:#fbfbfc;border-color:#f9fafb}.alert-light hr{border-top-color:#eaedf1}.alert-light .alert-link{color:#606162}.alert-dark{color:#3e152b;background-color:#e4d4dd;border-color:#d9c3cf}.alert-dark hr{border-top-color:#cfb3c3}.alert-dark .alert-link{color:#180811}@-webkit-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:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:0.75rem;background-color:#e9ecef;border-radius:0.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#E95420;-webkit-transition:width 0.6s ease;transition:width 0.6s ease}.progress-bar-striped{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-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#333;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:0.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:0.25rem;border-top-right-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:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#868e96;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#E95420;border-color:#E95420}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#792c11;background-color:#f9cfc1}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#792c11;background-color:#f7bdaa}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#792c11;border-color:#792c11}.list-group-item-secondary{color:#5a5753;background-color:#e8e6e4}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#5a5753;background-color:#dcd9d6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#5a5753;border-color:#5a5753}.list-group-item-success{color:#1d5e26;background-color:#c7eacc}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#1d5e26;background-color:#b4e3bb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#1d5e26;border-color:#1d5e26}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#7c5f20;background-color:#fbebc9}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#7c5f20;background-color:#f9e2b1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#7c5f20;border-color:#7c5f20}.list-group-item-danger{color:#741d17;background-color:#f6c7c4}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#741d17;background-color:#f3b2ae}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#741d17;border-color:#741d17}.list-group-item-light{color:#797b7c;background-color:#f9fafb}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#797b7c;background-color:#eaedf1}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#797b7c;border-color:#797b7c}.list-group-item-dark{color:#3e152b;background-color:#d9c3cf}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#3e152b;background-color:#cfb3c3}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#3e152b;border-color:#3e152b}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color: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-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:0.5rem;pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;transition:-webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out;transition:transform 0.3s ease-out, -webkit-transform 0.3s ease-out;-webkit-transform:translate(0, -25%);transform:translate(0, -25%)}.modal.show .modal-dialog{-webkit-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (0.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;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.show{opacity:0.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:0.3rem;border-top-right-radius:0.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:"Ubuntu", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:0.9}.tooltip .arrow{position:absolute;display:block;width:0.8rem;height:0.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:0.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:0.4rem 0.4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 0.4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:0.4rem;height:0.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:0.4rem 0.4rem 0.4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:0.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 0.4rem 0.4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 0.4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:0.4rem;height:0.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:0.4rem 0 0.4rem 0.4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:0.25rem 0.5rem;color:#fff;text-align:center;background-color:#000;border-radius:0.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:"Ubuntu", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:0.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:0.5rem;margin:0 0.3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:0.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((0.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:0.5rem 0.5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:0.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:0.5rem 0.5rem 0.5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:0.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((0.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 0.5rem 0.5rem 0.5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:0.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((0.5rem + 1px) * -1);width:0.5rem;height:1rem;margin:0.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:0.5rem 0 0.5rem 0.5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:0.5rem 0.75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:0.5rem 0.75rem;color:#333}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;-webkit-transition:-webkit-transform 0.6s ease;transition:-webkit-transform 0.6s ease;transition:transform 0.6s ease;transition:transform 0.6s ease, -webkit-transform 0.6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports (-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:0.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{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}.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-primary{background-color:#E95420 !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#c34113 !important}.bg-secondary{background-color:#AEA79F !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#978e83 !important}.bg-success{background-color:#38B44A !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#2c8d3a !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#EFB73E !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#e7a413 !important}.bg-danger{background-color:#DF382C !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bc271c !important}.bg-light{background-color:#e9ecef !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#cbd3da !important}.bg-dark{background-color:#772953 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#511c39 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#E95420 !important}.border-secondary{border-color:#AEA79F !important}.border-success{border-color:#38B44A !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#EFB73E !important}.border-danger{border-color:#DF382C !important}.border-light{border-color:#e9ecef !important}.border-dark{border-color:#772953 !important}.border-white{border-color:#fff !important}.rounded{border-radius:0.25rem !important}.rounded-top{border-top-left-radius:0.25rem !important;border-top-right-radius:0.25rem !important}.rounded-right{border-top-right-radius:0.25rem !important;border-bottom-right-radius:0.25rem !important}.rounded-bottom{border-bottom-right-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-left{border-top-left-radius:0.25rem !important;border-bottom-left-radius:0.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-sm-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-md-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-lg-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-xl-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}.d-print-inline-flex{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.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::before{padding-top:42.8571428571%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-sm-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-sm-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-sm-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-sm-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-sm-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-sm-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-sm-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-sm-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-sm-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-sm-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-sm-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-sm-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-sm-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-sm-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-sm-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-sm-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-sm-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-sm-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-sm-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-sm-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-sm-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-sm-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-sm-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-sm-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-sm-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-sm-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-sm-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-md-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-md-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-md-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-md-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-md-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-md-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-md-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-md-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-md-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-md-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-md-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-md-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-md-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-md-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-md-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-md-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-md-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-md-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-md-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-md-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-md-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-md-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-md-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-md-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-md-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-md-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-md-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-lg-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-lg-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-lg-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-lg-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-lg-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-lg-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-lg-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-lg-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-lg-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-lg-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-lg-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-lg-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-lg-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-lg-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-lg-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-lg-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-lg-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-lg-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-lg-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-lg-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-lg-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-lg-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-lg-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-lg-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-lg-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-lg-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-lg-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{-webkit-box-orient:horizontal !important;-webkit-box-direction:normal !important;-ms-flex-direction:row !important;flex-direction:row !important}.flex-xl-column{-webkit-box-orient:vertical !important;-webkit-box-direction:normal !important;-ms-flex-direction:column !important;flex-direction:column !important}.flex-xl-row-reverse{-webkit-box-orient:horizontal !important;-webkit-box-direction:reverse !important;-ms-flex-direction:row-reverse !important;flex-direction:row-reverse !important}.flex-xl-column-reverse{-webkit-box-orient:vertical !important;-webkit-box-direction:reverse !important;-ms-flex-direction:column-reverse !important;flex-direction:column-reverse !important}.flex-xl-wrap{-ms-flex-wrap:wrap !important;flex-wrap:wrap !important}.flex-xl-nowrap{-ms-flex-wrap:nowrap !important;flex-wrap:nowrap !important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.justify-content-xl-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-xl-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-xl-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.justify-content-xl-between{-webkit-box-pack:justify !important;-ms-flex-pack:justify !important;justify-content:space-between !important}.justify-content-xl-around{-ms-flex-pack:distribute !important;justify-content:space-around !important}.align-items-xl-start{-webkit-box-align:start !important;-ms-flex-align:start !important;align-items:flex-start !important}.align-items-xl-end{-webkit-box-align:end !important;-ms-flex-align:end !important;align-items:flex-end !important}.align-items-xl-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.align-items-xl-baseline{-webkit-box-align:baseline !important;-ms-flex-align:baseline !important;align-items:baseline !important}.align-items-xl-stretch{-webkit-box-align:stretch !important;-ms-flex-align:stretch !important;align-items:stretch !important}.align-content-xl-start{-ms-flex-line-pack:start !important;align-content:flex-start !important}.align-content-xl-end{-ms-flex-line-pack:end !important;align-content:flex-end !important}.align-content-xl-center{-ms-flex-line-pack:center !important;align-content:center !important}.align-content-xl-between{-ms-flex-line-pack:justify !important;align-content:space-between !important}.align-content-xl-around{-ms-flex-line-pack:distribute !important;align-content:space-around !important}.align-content-xl-stretch{-ms-flex-line-pack:stretch !important;align-content:stretch !important}.align-self-xl-auto{-ms-flex-item-align:auto !important;align-self:auto !important}.align-self-xl-start{-ms-flex-item-align:start !important;align-self:flex-start !important}.align-self-xl-end{-ms-flex-item-align:end !important;align-self:flex-end !important}.align-self-xl-center{-ms-flex-item-align:center !important;align-self:center !important}.align-self-xl-baseline{-ms-flex-item-align:baseline !important;align-self:baseline !important}.align-self-xl-stretch{-ms-flex-item-align:stretch !important;align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-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}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:-webkit-sticky !important;position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: -webkit-sticky) or (position: sticky){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:0.25rem !important}.mt-1,.my-1{margin-top:0.25rem !important}.mr-1,.mx-1{margin-right:0.25rem !important}.mb-1,.my-1{margin-bottom:0.25rem !important}.ml-1,.mx-1{margin-left:0.25rem !important}.m-2{margin:0.5rem !important}.mt-2,.my-2{margin-top:0.5rem !important}.mr-2,.mx-2{margin-right:0.5rem !important}.mb-2,.my-2{margin-bottom:0.5rem !important}.ml-2,.mx-2{margin-left:0.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:0.25rem !important}.pt-1,.py-1{padding-top:0.25rem !important}.pr-1,.px-1{padding-right:0.25rem !important}.pb-1,.py-1{padding-bottom:0.25rem !important}.pl-1,.px-1{padding-left:0.25rem !important}.p-2{padding:0.5rem !important}.pt-2,.py-2{padding-top:0.5rem !important}.pr-2,.px-2{padding-right:0.5rem !important}.pb-2,.py-2{padding-bottom:0.5rem !important}.pl-2,.px-2{padding-left:0.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:0.25rem !important}.mt-sm-1,.my-sm-1{margin-top:0.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:0.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:0.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:0.25rem !important}.m-sm-2{margin:0.5rem !important}.mt-sm-2,.my-sm-2{margin-top:0.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:0.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:0.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:0.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:0.25rem !important}.pt-sm-1,.py-sm-1{padding-top:0.25rem !important}.pr-sm-1,.px-sm-1{padding-right:0.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:0.25rem !important}.pl-sm-1,.px-sm-1{padding-left:0.25rem !important}.p-sm-2{padding:0.5rem !important}.pt-sm-2,.py-sm-2{padding-top:0.5rem !important}.pr-sm-2,.px-sm-2{padding-right:0.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:0.5rem !important}.pl-sm-2,.px-sm-2{padding-left:0.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:0.25rem !important}.mt-md-1,.my-md-1{margin-top:0.25rem !important}.mr-md-1,.mx-md-1{margin-right:0.25rem !important}.mb-md-1,.my-md-1{margin-bottom:0.25rem !important}.ml-md-1,.mx-md-1{margin-left:0.25rem !important}.m-md-2{margin:0.5rem !important}.mt-md-2,.my-md-2{margin-top:0.5rem !important}.mr-md-2,.mx-md-2{margin-right:0.5rem !important}.mb-md-2,.my-md-2{margin-bottom:0.5rem !important}.ml-md-2,.mx-md-2{margin-left:0.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:0.25rem !important}.pt-md-1,.py-md-1{padding-top:0.25rem !important}.pr-md-1,.px-md-1{padding-right:0.25rem !important}.pb-md-1,.py-md-1{padding-bottom:0.25rem !important}.pl-md-1,.px-md-1{padding-left:0.25rem !important}.p-md-2{padding:0.5rem !important}.pt-md-2,.py-md-2{padding-top:0.5rem !important}.pr-md-2,.px-md-2{padding-right:0.5rem !important}.pb-md-2,.py-md-2{padding-bottom:0.5rem !important}.pl-md-2,.px-md-2{padding-left:0.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:0.25rem !important}.mt-lg-1,.my-lg-1{margin-top:0.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:0.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:0.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:0.25rem !important}.m-lg-2{margin:0.5rem !important}.mt-lg-2,.my-lg-2{margin-top:0.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:0.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:0.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:0.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:0.25rem !important}.pt-lg-1,.py-lg-1{padding-top:0.25rem !important}.pr-lg-1,.px-lg-1{padding-right:0.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:0.25rem !important}.pl-lg-1,.px-lg-1{padding-left:0.25rem !important}.p-lg-2{padding:0.5rem !important}.pt-lg-2,.py-lg-2{padding-top:0.5rem !important}.pr-lg-2,.px-lg-2{padding-right:0.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:0.5rem !important}.pl-lg-2,.px-lg-2{padding-left:0.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:0.25rem !important}.mt-xl-1,.my-xl-1{margin-top:0.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:0.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:0.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:0.25rem !important}.m-xl-2{margin:0.5rem !important}.mt-xl-2,.my-xl-2{margin-top:0.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:0.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:0.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:0.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:0.25rem !important}.pt-xl-1,.py-xl-1{padding-top:0.25rem !important}.pr-xl-1,.px-xl-1{padding-right:0.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:0.25rem !important}.pl-xl-1,.px-xl-1{padding-left:0.25rem !important}.p-xl-2{padding:0.5rem !important}.pt-xl-2,.py-xl-2{padding-top:0.5rem !important}.pr-xl-2,.px-xl-2{padding-right:0.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:0.5rem !important}.pl-xl-2,.px-xl-2{padding-left:0.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-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-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#E95420 !important}a.text-primary:hover,a.text-primary:focus{color:#c34113 !important}.text-secondary{color:#AEA79F !important}a.text-secondary:hover,a.text-secondary:focus{color:#978e83 !important}.text-success{color:#38B44A !important}a.text-success:hover,a.text-success:focus{color:#2c8d3a !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#EFB73E !important}a.text-warning:hover,a.text-warning:focus{color:#e7a413 !important}.text-danger{color:#DF382C !important}a.text-danger:hover,a.text-danger:focus{color:#bc271c !important}.text-light{color:#e9ecef !important}a.text-light:hover,a.text-light:focus{color:#cbd3da !important}.text-dark{color:#772953 !important}a.text-dark:hover,a.text-dark:focus{color:#511c39 !important}.text-muted{color:#868e96 !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;-webkit-box-shadow:none !important;box-shadow:none !important}a:not(.btn){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}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{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}} diff --git a/modules/services/unix/http/parameterised_website/manifests/install.pp b/modules/services/unix/http/parameterised_website/manifests/install.pp index 67d4089bd..d601a33d1 100644 --- a/modules/services/unix/http/parameterised_website/manifests/install.pp +++ b/modules/services/unix/http/parameterised_website/manifests/install.pp @@ -177,4 +177,11 @@ class parameterised_website::install { } } + file { "$docroot/themes/": + ensure => directory, + recurse => true, + source => 'puppet:///modules/parameterised_website/themes', + require => File[$docroot], + } + } \ No newline at end of file diff --git a/modules/services/unix/http/parameterised_website/templates/acceptable_use_page.html.erb b/modules/services/unix/http/parameterised_website/templates/acceptable_use_page.html.erb index fb8b0549f..0064e3f44 100644 --- a/modules/services/unix/http/parameterised_website/templates/acceptable_use_page.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/acceptable_use_page.html.erb @@ -4,6 +4,6 @@ <%= scope.function_template(['parameterised_website/subtemplates/navbar.html.erb']) %> <%= scope.function_template(['parameterised_website/subtemplates/acceptable_use_policy.html.erb']) %> + <%= scope.function_template(['parameterised_website/subtemplates/scripts.html.erb']) %> -<%= scope.function_template(['parameterised_website/subtemplates/footer.html.erb']) %> \ No newline at end of file diff --git a/modules/services/unix/http/parameterised_website/templates/contact.html.erb b/modules/services/unix/http/parameterised_website/templates/contact.html.erb index 1552fe8e8..c2b19ce4e 100644 --- a/modules/services/unix/http/parameterised_website/templates/contact.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/contact.html.erb @@ -2,42 +2,42 @@ <%= scope.function_template(['parameterised_website/subtemplates/header.html.erb']) %> -<%= scope.function_template(['parameterised_website/subtemplates/navbar.html.erb']) %> -
-
-
-
-

<%= @business_name %>

-
-

<%= @business_motto %>

-
+ <%= scope.function_template(['parameterised_website/subtemplates/navbar.html.erb']) %> +
+
+
+
+

<%= @business_name %>

+
+

<%= @business_motto %>

+
-
-

Contact <%= @business_name %>

-

Address: <%= @business_address %>

-

Telephone: <%= @office_telephone %>

-

Email: <%= @office_email %>

-
+
+

Contact <%= @business_name %>

+

Address: <%= @business_address %>

+

Telephone: <%= @office_telephone %>

+

Email: <%= @office_email %>

+
-
-

Manager

-

<%= @manager_profile['name'] %>

-

<%= @manager_profile['phone_number'] %>

-

<%= @manager_profile['email_address'] %>

-
+
+

Manager

+

<%= @manager_profile['name'] %>

+

<%= @manager_profile['phone_number'] %>

+

<%= @manager_profile['email_address'] %>

+
-

Employees

- <% @employees.each do |employee| -%> -

<%= employee['name'] %>

-

<%= employee['phone_number'] %>

-

<%= employee['email_address'] %>

-

+

Employees

+ <% @employees.each do |employee| -%> +

<%= employee['name'] %>

+

<%= employee['phone_number'] %>

+

<%= employee['email_address'] %>

+

- <% end %> + <% end %> +

-
+ <%= scope.function_template(['parameterised_website/subtemplates/scripts.html.erb']) %> -<%= scope.function_template(['parameterised_website/subtemplates/footer.html.erb']) %> \ No newline at end of file diff --git a/modules/services/unix/http/parameterised_website/templates/default.css.erb b/modules/services/unix/http/parameterised_website/templates/default.css.erb index 2c97e810b..a393f52c8 100644 --- a/modules/services/unix/http/parameterised_website/templates/default.css.erb +++ b/modules/services/unix/http/parameterised_website/templates/default.css.erb @@ -1,13 +1,3 @@ -body { - background: #f8f8f8; - color: #666; - padding-top: 70px; -} - -body p { - align-content: center -} - <% if @white_text -%> #white_text { color: white; diff --git a/modules/services/unix/http/parameterised_website/templates/index.html.erb b/modules/services/unix/http/parameterised_website/templates/index.html.erb index 6e62ffae7..24426be29 100644 --- a/modules/services/unix/http/parameterised_website/templates/index.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/index.html.erb @@ -8,6 +8,7 @@ <%= scope.function_template(['parameterised_website/subtemplates/navbar.html.erb']) %> <%= scope.function_template(['parameterised_website/subtemplates/main_container.html.erb']) %> + <%= scope.function_template(['parameterised_website/subtemplates/scripts.html.erb']) %> + <%= scope.function_template(['parameterised_website/subtemplates/scripts.html.erb']) %> -<%= scope.function_template(['parameterised_website/subtemplates/footer.html.erb']) %> \ No newline at end of file diff --git a/modules/services/unix/http/parameterised_website/templates/intranet_index.html.erb b/modules/services/unix/http/parameterised_website/templates/intranet_index.html.erb index cc9e5412c..98ebd4243 100644 --- a/modules/services/unix/http/parameterised_website/templates/intranet_index.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/intranet_index.html.erb @@ -4,6 +4,6 @@ <%= scope.function_template(['parameterised_website/subtemplates/navbar.html.erb']) %> <%= scope.function_template(['parameterised_website/subtemplates/main_container.html.erb']) %> + <%= scope.function_template(['parameterised_website/subtemplates/scripts.html.erb']) %> -<%= scope.function_template(['parameterised_website/subtemplates/footer.html.erb']) %> \ No newline at end of file diff --git a/modules/services/unix/http/parameterised_website/templates/security_audit_remit_page.html.erb b/modules/services/unix/http/parameterised_website/templates/security_audit_remit_page.html.erb index 26e8da5c0..cc5a1cf64 100644 --- a/modules/services/unix/http/parameterised_website/templates/security_audit_remit_page.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/security_audit_remit_page.html.erb @@ -10,6 +10,6 @@
+ <%= scope.function_template(['parameterised_website/subtemplates/scripts.html.erb']) %> -<%= scope.function_template(['parameterised_website/subtemplates/footer.html.erb']) %> \ No newline at end of file diff --git a/modules/services/unix/http/parameterised_website/templates/subtemplates/footer.html.erb b/modules/services/unix/http/parameterised_website/templates/subtemplates/footer.html.erb deleted file mode 100644 index 882e32bbf..000000000 --- a/modules/services/unix/http/parameterised_website/templates/subtemplates/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -
- - - - - -
diff --git a/modules/services/unix/http/parameterised_website/templates/subtemplates/header.html.erb b/modules/services/unix/http/parameterised_website/templates/subtemplates/header.html.erb index 07deee90a..3265a4e83 100644 --- a/modules/services/unix/http/parameterised_website/templates/subtemplates/header.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/subtemplates/header.html.erb @@ -7,8 +7,9 @@ <%= $page_title %> + + - \ No newline at end of file diff --git a/modules/services/unix/http/parameterised_website/templates/subtemplates/main_container.html.erb b/modules/services/unix/http/parameterised_website/templates/subtemplates/main_container.html.erb index 6133a2ad2..0b3146501 100644 --- a/modules/services/unix/http/parameterised_website/templates/subtemplates/main_container.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/subtemplates/main_container.html.erb @@ -13,7 +13,7 @@ <% # Externally input / default style -%> <% elsif @manager_profile != '' or @employees[0] != '' or @business_address != ''-%>

<%= @business_name %>

-

<%= @product_name %>

+

<%= @product_name %>

<%= @main_page_paragraph_content.join %>

<% elsif @main_page_paragraph_content-%>

<%= @main_page_paragraph_content.join %>

diff --git a/modules/services/unix/http/parameterised_website/templates/subtemplates/navbar.html.erb b/modules/services/unix/http/parameterised_website/templates/subtemplates/navbar.html.erb index c71b2b57f..070cc4b1c 100644 --- a/modules/services/unix/http/parameterised_website/templates/subtemplates/navbar.html.erb +++ b/modules/services/unix/http/parameterised_website/templates/subtemplates/navbar.html.erb @@ -1,16 +1,16 @@ -