diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..2baf4c56 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*.sh] +# like -i=4 +indent_style = space +indent_size = 4 + +binary_next_line = true # like -bn +switch_case_indent = true # like -ci +space_redirects = true # like -sr +keep_padding = true # like -kp diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..eb82d347 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,123 @@ +name: Bug report +description: Report a problem with the DreadGOAD CLI, Ansible roles, Terraform modules, or another part of the tooling. +title: "[bug]: " +labels: ["bug", "triage"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to file a bug report. + + Before you continue, please confirm: + + - The issue is in the **DreadGOAD tooling** (CLI, Ansible, Terraform/Terragrunt, Packer, Warpgate, variant generator). Weak passwords and other intentional vulnerabilities inside the deployed labs are by design — please do not file those as bugs. + - If you believe you have found a **security vulnerability in the tooling itself**, do not open a public issue. Use [private vulnerability reporting](https://github.com/dreadnode/DreadGOAD/security/advisories/new) instead. See [SECURITY.md](https://github.com/dreadnode/DreadGOAD/blob/main/SECURITY.md). + + - type: checkboxes + id: preflight + attributes: + label: Pre-flight checks + options: + - label: I have searched existing issues and this is not a duplicate. + required: true + - label: I have run `dreadgoad doctor` (or the equivalent) and read its output. + required: false + - label: This is a bug in the DreadGOAD tooling, not an intentional lab vulnerability. + required: true + + - type: input + id: version + attributes: + label: DreadGOAD version + description: "Output of `dreadgoad --version`, or the commit SHA of `main` you are on." + placeholder: "e.g. 1.2.3 (commit: abc1234, built: 2026-04-07) -or- main @ abc1234" + validations: + required: true + + - type: dropdown + id: provider + attributes: + label: Provider + description: Which infrastructure provider were you using? + options: + - VirtualBox + - VMware + - Proxmox + - AWS + - Azure + - Ludus + - Not provider-specific + - Other (please describe in the bug report) + validations: + required: true + + - type: dropdown + id: lab + attributes: + label: Lab + description: Which lab were you deploying when you hit the issue? + options: + - GOAD + - GOAD-Light + - GOAD-Mini + - MINILAB + - SCCM + - NHA + - DRACARYS + - A generated variant + - Not lab-specific + - Other (please describe in the bug report) + validations: + required: true + + - type: input + id: os + attributes: + label: Operator OS + description: The OS where you are running the DreadGOAD CLI / Ansible (not the lab VMs). + placeholder: "e.g. macOS 14.5 (arm64), Ubuntu 22.04, Windows 11 + WSL2" + validations: + required: true + + - type: textarea + id: description + attributes: + label: What happened? + description: A clear description of the bug, including what you expected to happen and what actually happened. + validations: + required: true + + - type: textarea + id: repro + attributes: + label: Steps to reproduce + description: | + The exact commands you ran. Please include the full command line, any relevant config snippets (`dreadgoad.yaml`, `globalsettings.ini`), and the working directory. + placeholder: | + 1. `git clone https://github.com/dreadnode/DreadGOAD.git` + 2. `cd cli && go build -o dreadgoad .` + 3. `./dreadgoad provision --lab GOAD-Light --provider virtualbox` + 4. ... + render: shell + validations: + required: true + + - type: textarea + id: logs + attributes: + label: Relevant logs + description: | + Paste the relevant CLI output, Ansible log lines, or Terraform error. + + Tip: rerun with `--debug` for more detail. Logs are also written to `~/.ansible/logs/goad/`. + render: shell + validations: + required: false + + - type: textarea + id: extra + attributes: + label: Anything else? + description: Screenshots, related issues, recent changes you made, ideas about the cause, etc. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..f08a1ea7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: Security vulnerability in the DreadGOAD tooling + url: https://github.com/dreadnode/DreadGOAD/security/advisories/new + about: "Report security issues in the CLI, Ansible collection, Terraform / Terragrunt modules, or other tooling privately. Do NOT use a public issue. Note: weak passwords and other intentional vulnerabilities inside the deployed labs are by design and should not be reported." + - name: Upstream GOAD documentation + url: https://orange-cyberdefense.github.io/GOAD/ + about: "Background on the original GOAD project that DreadGOAD is forked from." + - name: DreadGOAD documentation + url: https://github.com/dreadnode/DreadGOAD/tree/main/docs + about: "Provider guides, lab descriptions, validation guide, and the full vulnerability catalog." diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 00000000..97be7ca2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,70 @@ +name: Feature request +description: Suggest a new feature, improvement, or change to DreadGOAD. +title: "[feature]: " +labels: ["enhancement", "triage"] +body: + - type: markdown + attributes: + value: | + Thanks for suggesting an improvement to DreadGOAD. + + Before you continue, please check the [existing issues](https://github.com/dreadnode/DreadGOAD/issues?q=is%3Aissue) to see whether something similar has already been proposed. + + - type: checkboxes + id: preflight + attributes: + label: Pre-flight checks + options: + - label: I have searched existing issues and discussions for a similar request. + required: true + + - type: dropdown + id: area + attributes: + label: Area + description: Which part of the project does this affect? + options: + - CLI (`dreadgoad`) + - Ansible collection / roles + - Terraform / Terragrunt modules + - Packer / Warpgate templates + - A specific lab (GOAD, GOAD-Light, MINILAB, SCCM, NHA, DRACARYS, ...) + - A specific extension (ELK, Exchange, Wazuh, Guacamole, ...) + - Variant generator + - Documentation + - CI / release tooling + - Other + validations: + required: true + + - type: textarea + id: problem + attributes: + label: What problem does this solve? + description: Describe the use case and the pain point you are running into. "I'm always frustrated when..." + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: How would you like this to work? Be as concrete as you can — example commands, config snippets, or UI sketches all help. + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Other approaches you considered and why you rejected them. + validations: + required: false + + - type: textarea + id: extra + attributes: + label: Additional context + description: Links, references, related issues, or anything else useful. + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..384bddbf --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,77 @@ + + +## Summary + + + +## Type of change + + + +- [ ] Bug fix (non-breaking change that fixes an issue) +- [ ] New feature (non-breaking change that adds functionality) +- [ ] Breaking change (fix or feature that would change existing behavior) +- [ ] New lab, lab variant, or extension +- [ ] New / updated provider support +- [ ] Refactor / internal cleanup (no functional change) +- [ ] Documentation +- [ ] CI / build / release tooling +- [ ] Dependency update + +## Area + + + +- [ ] CLI (`cli/`) +- [ ] Ansible collection (`ansible/`) +- [ ] Terraform / Terragrunt (`infra/`, `modules/`) +- [ ] Packer / Warpgate (`packer/`, `warpgate-templates/`) +- [ ] Lab definitions (`ad/`) +- [ ] Extensions (`extensions/`) +- [ ] Variant generator / tools (`tools/`) +- [ ] Documentation (`docs/`, `README.md`, etc.) +- [ ] CI workflows (`.github/`) + +## Related issues + + + +## How was this tested? + + + +- Provider(s) tested: +- Lab(s) tested: +- Operator OS: + +## Screenshots / logs (optional) + + + +## Checklist + +- [ ] I have read [CONTRIBUTING.md](../CONTRIBUTING.md). +- [ ] My changes follow the existing code style of the area I touched. +- [ ] I have added or updated tests where it makes sense (Go tests under `cli/`, Ansible syntax checks, etc.). +- [ ] I have updated documentation (README, `docs/`, role README, command help text) where relevant. +- [ ] I have checked that I am not committing real secrets, personal credentials, or internal hostnames. (Intentional lab credentials inside `ad/`, `ansible/`, and `extensions/` are expected and fine.) +- [ ] If this PR changes user-facing CLI behavior, I have updated the relevant `--help` text and any docs that reference it. +- [ ] If this PR introduces a breaking change, I have called it out in the **Summary** above. diff --git a/.github/labeler.yaml b/.github/labeler.yaml new file mode 100644 index 00000000..b49ed384 --- /dev/null +++ b/.github/labeler.yaml @@ -0,0 +1,88 @@ +--- +# Area +area/github: + - changed-files: + - any-glob-to-any-file: ".github/**/*" + +area/pre-commit: + - changed-files: + - any-glob-to-any-file: ".pre-commit-config.yaml" + - any-glob-to-any-file: ".hooks/**/*" + +area/license: + - changed-files: + - any-glob-to-any-file: "LICENSE" + +area/readme: + - changed-files: + - any-glob-to-any-file: "README.md" + +area/roles: + - changed-files: + - any-glob-to-any-file: "ansible/roles/**/*" + +area/playbooks: + - changed-files: + - any-glob-to-any-file: "ansible/playbooks/**/*" + +area/taskfiles: + - changed-files: + - any-glob-to-any-file: "Taskfile.yaml" + +area/terraform: + - changed-files: + - any-glob-to-any-file: "ad/*/providers/terraform/**/*" + +area/packer: + - changed-files: + - any-glob-to-any-file: "packer/**/*" + +area/docker: + - changed-files: + - any-glob-to-any-file: "Dockerfile" + +area/docs: + - changed-files: + - any-glob-to-any-file: "docs/**/*" + +area/scripts: + - changed-files: + - any-glob-to-any-file: "scripts/**/*" + +area/extensions: + - changed-files: + - any-glob-to-any-file: "ansible/playbooks/templates/extensions/**/*" + - any-glob-to-any-file: "ansible/playbooks/files/extensions/**/*" + - any-glob-to-any-file: "providers/**/*" + +area/python: + - changed-files: + - any-glob-to-any-file: "goad/**/*" + - any-glob-to-any-file: "goad.py" + - any-glob-to-any-file: "pyproject.toml" + - any-glob-to-any-file: "poetry.lock" + +area/ad-labs: + - changed-files: + - any-glob-to-any-file: "ad/**/*" + +# Lab variants +lab/GOAD: + - changed-files: + - any-glob-to-any-file: "ad/GOAD/**/*" + +lab/GOAD-Light: + - changed-files: + - any-glob-to-any-file: "ad/GOAD-Light/**/*" + +lab/GOAD-Mini: + - changed-files: + - any-glob-to-any-file: "ad/GOAD-Mini/**/*" + +lab/NHA: + - changed-files: + - any-glob-to-any-file: "ad/NHA/**/*" + +lab/SCCM: + - changed-files: + - any-glob-to-any-file: "ad/SCCM/**/*" diff --git a/.github/labels.yaml b/.github/labels.yaml new file mode 100644 index 00000000..c1b9e45c --- /dev/null +++ b/.github/labels.yaml @@ -0,0 +1,132 @@ +--- +# Area +- name: area/github + color: "72CCF3" # Light Blue + description: >- + Changes made to github actions + +- name: area/pre-commit + color: "BC9BE3" # Lavender + description: >- + Changes made to pre-commit hooks + +- name: area/license + color: "F4D1B7" # Peach + description: >- + Changes made to license file + +- name: area/readme + color: "84B6EB" # Steel Blue + description: >- + Changes made to README.md file + +- name: area/roles + color: "FF6600" # Orange + description: >- + Changes made to Ansible roles + +- name: area/playbooks + color: "FF99CC" # Pink + description: >- + Changes made to playbooks directory + +- name: area/taskfiles + color: "66CCFF" # Sky Blue + description: >- + Changes made to taskfiles + +- name: area/terraform + color: "7B42BC" # Terraform Purple + description: >- + Changes made to Terraform/provider configs + +- name: area/packer + color: "02A8EF" # Packer Blue + description: >- + Changes made to Packer configurations + +- name: area/docker + color: "2496ED" # Docker Blue + description: >- + Changes made to Docker configurations + +- name: area/docs + color: "0075CA" # Documentation Blue + description: >- + Changes made to documentation + +- name: area/scripts + color: "A8D08D" # Sage Green + description: >- + Changes made to utility scripts + +- name: area/extensions + color: "E0C068" # Amber + description: >- + Changes made to extensions (ELK, Exchange, Wazuh, etc.) + +- name: area/python + color: "3776AB" # Python Blue + description: >- + Changes made to Python application code + +- name: area/ad-labs + color: "D4A017" # Gold + description: >- + Changes made to AD lab definitions + +# Lab variants +- name: lab/GOAD + color: "C0392B" # Dark Red + description: >- + Changes made to GOAD lab + +- name: lab/GOAD-Light + color: "E74C3C" # Light Red + description: >- + Changes made to GOAD-Light lab + +- name: lab/GOAD-Mini + color: "F1948A" # Salmon + description: >- + Changes made to GOAD-Mini lab + +- name: lab/NHA + color: "8E44AD" # Wisteria + description: >- + Changes made to NHA lab + +- name: lab/SCCM + color: "2980B9" # Belize Blue + description: >- + Changes made to SCCM lab + +# Renovate +- name: renovate/container + color: "FFC300" # Golden Yellow +- name: renovate/github-action + color: "FFD700" # Gold +- name: renovate/github-release + color: "FFE4B5" # Moccasin + +# Semantic Type +- name: type/digest + color: "FFEC19" # Yellow +- name: type/patch + color: "FF9800" # Dark Orange +- name: type/minor + color: "FF6B6B" # Salmon +- name: type/major + color: "F6412D" # Red Orange +- name: type/break + color: "FF0000" # Bright Red + +# Uncategorized +- name: bug + color: "D93F0B" # Dark Red +- name: do-not-merge + color: "B60205" # Blood Red +- name: docs + color: "0075CA" # Documentation Blue +- name: enhancement + color: "A2EEEF" # Light Blue diff --git a/.github/renovate.json5 b/.github/renovate.json5 new file mode 100644 index 00000000..c0b5d6fa --- /dev/null +++ b/.github/renovate.json5 @@ -0,0 +1,140 @@ +{ + $schema: 'https://docs.renovatebot.com/renovate-schema.json', + gitAuthor: 'cowdogmoo-renovate-bot <157187596+cowdogmoo-renovate-bot[bot]@users.noreply.github.com>', + extends: [ + 'config:recommended', + 'docker:enableMajor', + ':disableRateLimiting', + ':dependencyDashboard', + ':semanticCommits', + ':enablePreCommit', + ':automergeDigest', + 'helpers:pinGitHubActionDigests', + ], + dependencyDashboardLabels: [ + 'renovate-dashboard', + ], + dependencyDashboardTitle: 'Renovate Dashboard 🤖', + suppressNotifications: [ + 'prIgnoreNotification', + ], + rebaseWhen: 'conflicted', + commitBodyTable: true, + labels: [ + 'renovate', + ], + 'pre-commit': { + enabled: true, + }, + pip_requirements: { + managerFilePatterns: [ + '/(^|/)requirements\\.txt$/', + '/(^|/)\\.hooks/requirements\\.txt$/', + ], + }, + packageRules: [ + { + description: 'Auto merge Galaxy dependencies', + matchManagers: [ + 'ansible-galaxy', + ], + automerge: true, + automergeType: 'pr', + matchUpdateTypes: [ + 'minor', + 'patch', + ], + }, + { + description: 'Auto-merge GitHub Actions', + matchManagers: [ + 'github-actions', + ], + automerge: true, + automergeType: 'pr', + matchUpdateTypes: [ + 'major', + 'minor', + 'patch', + ], + }, + { + description: 'Auto-merge pre-commit hooks', + matchManagers: [ + 'pre-commit', + ], + automerge: true, + automergeType: 'pr', + matchUpdateTypes: [ + 'minor', + 'patch', + ], + }, + { + description: 'Disable updates for ansible-core (pinned to <2.18 due to SSM pipelining bug)', + matchPackageNames: [ + 'ansible-core', + ], + enabled: false, + }, + { + description: 'Auto-merge pip dependencies', + matchManagers: [ + 'pip_requirements', + ], + automerge: true, + automergeType: 'pr', + matchUpdateTypes: [ + 'minor', + 'patch', + ], + }, + { + description: 'Group Ansible Galaxy dependencies', + matchManagers: [ + 'ansible-galaxy', + ], + groupName: 'ansible-dependencies', + }, + ], + customManagers: [ + { + customType: 'regex', + description: 'Update Python version in GitHub Actions workflows', + managerFilePatterns: [ + '/^\\.github\\/workflows\\/[^/]+\\.ya?ml$/', + ], + matchStrings: [ + 'PYTHON_VERSION:\\s*["\']?(?[0-9.]+)["\']?', + ], + depNameTemplate: 'python', + datasourceTemplate: 'python-version', + }, + { + customType: 'regex', + description: 'Update Go version in GitHub Actions workflows', + managerFilePatterns: [ + '/^\\.github\\/workflows\\/[^/]+\\.ya?ml$/', + ], + matchStrings: [ + 'GO_VERSION:\\s*["\']?(?[0-9.]+)["\']?', + ], + depNameTemplate: 'go', + datasourceTemplate: 'golang-version', + }, + { + customType: 'regex', + description: 'Update Task version in GitHub Actions workflows', + managerFilePatterns: [ + '/^\\.github\\/workflows\\/[^/]+\\.ya?ml$/', + ], + matchStrings: [ + 'TASK_VERSION:\\s*(?[0-9.]+)', + ], + depNameTemplate: 'task', + datasourceTemplate: 'github-releases', + packageNameTemplate: 'go-task/task', + extractVersionTemplate: '^v(?.+)$', + }, + ], +} diff --git a/.github/workflows/goreleaser.yaml b/.github/workflows/goreleaser.yaml new file mode 100644 index 00000000..3b5d4c8b --- /dev/null +++ b/.github/workflows/goreleaser.yaml @@ -0,0 +1,40 @@ +--- +name: goreleaser +on: + push: + tags: + - "*" + +env: + GO_VERSION: 1.26.2 + +jobs: + goreleaser: + name: Run GoReleaser + runs-on: ubuntu-latest + steps: + - name: Set up git repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + + - name: Fetch all tags + run: git fetch --force --tags + + - name: Set up Go + uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 + with: + go-version: "${{ env.GO_VERSION }}" + cache-dependency-path: "**/*.sum" + + - name: Fix GOPATH + run: echo "PATH=$(go env GOPATH)/bin:$PATH" >> "$GITHUB_ENV" + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@ec59f474b9834571250b370d4735c50f8e2d1e29 # v7 + with: + distribution: goreleaser + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/meta-labeler.yaml b/.github/workflows/meta-labeler.yaml new file mode 100644 index 00000000..aaaefe19 --- /dev/null +++ b/.github/workflows/meta-labeler.yaml @@ -0,0 +1,28 @@ +--- +name: "Labeler" +on: + pull_request_target: + branches: ["main"] + types: ["opened", "synchronize"] + +permissions: + contents: read + pull-requests: write + +jobs: + labeler: + name: Labeler + runs-on: ubuntu-latest + steps: + - name: Generate Token + uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0 + id: app-token + with: + app-id: "${{ secrets.BOT_APP_ID }}" + private-key: "${{ secrets.BOT_APP_PRIVATE_KEY }}" + + - name: Labeler + uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1 + with: + configuration-path: .github/labeler.yaml + repo-token: "${{ steps.app-token.outputs.token }}" diff --git a/.github/workflows/meta-sync-labels.yaml b/.github/workflows/meta-sync-labels.yaml new file mode 100644 index 00000000..7352b21b --- /dev/null +++ b/.github/workflows/meta-sync-labels.yaml @@ -0,0 +1,36 @@ +--- +name: "Meta Sync labels" +on: + workflow_dispatch: + push: + branches: ["main"] + paths: [".github/labels.yaml"] + +permissions: + contents: read + issues: write + pull-requests: write + +jobs: + labels: + name: Sync Labels + runs-on: ubuntu-latest + steps: + - name: Generate Token + uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0 + id: app-token + with: + app-id: "${{ secrets.BOT_APP_ID }}" + private-key: "${{ secrets.BOT_APP_PRIVATE_KEY }}" + + - name: Set up git repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + token: "${{ steps.app-token.outputs.token }}" + + - name: Sync Labels + uses: EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a # v2.3.3 + with: + config-file: .github/labels.yaml + token: "${{ steps.app-token.outputs.token }}" + delete-other-labels: true diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml new file mode 100644 index 00000000..3f4571b1 --- /dev/null +++ b/.github/workflows/pre-commit.yaml @@ -0,0 +1,98 @@ +--- +name: Pre-Commit +on: + merge_group: + pull_request: + branches: + - main + types: + - opened + - synchronize + - reopened + push: + branches: + - main + schedule: + # Run once a week (see https://crontab.guru) + - cron: "0 0 * * 0" + workflow_dispatch: + +# Cancel any in-progress job when a new workflow is triggered +concurrency: + cancel-in-progress: true + group: pre-commit-${{ github.workflow }}-${{ github.ref }} + +env: + GO_VERSION: "1.26.2" + PYTHON_VERSION: "3.14.4" + +jobs: + pre-commit: + name: Update pre-commit hooks and run pre-commit + runs-on: ubuntu-latest + steps: + - name: Checkout git repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Set up Python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 + with: + python-version: ${{ env.PYTHON_VERSION }} + cache: 'pip' + cache-dependency-path: '.hooks/requirements.txt' + + - name: Install dependencies + run: | + python3 -m pip install -r .hooks/requirements.txt + + - name: Install Ansible collections + run: | + ansible-galaxy collection install -r ansible/requirements.yml --force + + - name: Build and install collection locally + working-directory: ansible + run: | + ansible-galaxy collection build --force + ansible-galaxy collection install dreadnode-goad-*.tar.gz -p ~/.ansible/collections --force --pre + + - name: Set up Terraform + uses: hashicorp/setup-terraform@5e8dbf3c6d9deaf4193ca7a8fb23f2ac83bb6c85 # v4 + with: + terraform_version: "1.9.7" + + - name: Set up TFLint + uses: terraform-linters/setup-tflint@b480b8fcdaa6f2c577f8e4fa799e89e756bb7c93 # v6 + with: + tflint_version: latest + + - name: Init TFLint + run: tflint --init --config .hooks/linters/.tflint.hcl + + - name: Set up Go + uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Install Go tools + run: | + # Install shfmt + go install mvdan.cc/sh/v3/cmd/shfmt@latest + + # Install goimports + go install golang.org/x/tools/cmd/goimports@latest + + # Install gocyclo + go install github.com/fzipp/gocyclo/cmd/gocyclo@latest + + # Install golangci-lint + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b "$(go env GOPATH)/bin" + + # Install gocritic + go install github.com/go-critic/go-critic/cmd/gocritic@latest + + # Add Go bin directory to PATH + echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH" + + - name: Run pre-commit + run: | + pre-commit run --show-diff-on-failure --color=always --all-files diff --git a/.github/workflows/renovate.yaml b/.github/workflows/renovate.yaml new file mode 100644 index 00000000..096f5a5f --- /dev/null +++ b/.github/workflows/renovate.yaml @@ -0,0 +1,78 @@ +--- +name: "\U0001F916 Renovate" +on: + push: + branches: ["main"] + paths: + - .github/renovate.json5 + schedule: + # Run every week on sunday and wednesday at 00:00 UTC + - cron: "0 0 * * 0,3" + workflow_dispatch: + inputs: + dryRun: + description: Dry Run + type: boolean + default: false + required: true + logLevel: + description: Log Level + type: choice + default: info + options: + - debug + - info + required: true + version: + description: Renovate Version + default: latest + required: true + +concurrency: + cancel-in-progress: true + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + +# Retrieve BOT_USER_ID via `curl -s "https://api.github.com/users/${BOT_USERNAME}%5Bbot%5D" | jq .id` +env: + RENOVATE_ONBOARDING_CONFIG_FILE_NAME: .github/renovate.json5 + RENOVATE_GIT_AUTHOR: "${{ secrets.BOT_USERNAME }} <${{ secrets.BOT_USER_ID }}+${{ secrets.BOT_USERNAME }}[bot]@users.noreply.github.com>" + +# Permissions block for GitHub App +permissions: + actions: write + contents: write + issues: write + pull-requests: write + statuses: read + +jobs: + renovate: + name: Renovate + runs-on: ubuntu-latest + steps: + - name: Generate Token + uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0 + id: app-token + with: + app-id: "${{ secrets.BOT_APP_ID }}" + private-key: "${{ secrets.BOT_APP_PRIVATE_KEY }}" + + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + token: "${{ steps.app-token.outputs.token }}" + + - name: Renovate + uses: renovatebot/github-action@b67590ea780158ccd13192c22a3655a5231f869d # v46.1.8 + env: + LOG_LEVEL: "${{ inputs.logLevel || 'info' }}" + RENOVATE_AUTODISCOVER: true + RENOVATE_AUTODISCOVER_FILTER: "${{ github.repository }}" + RENOVATE_DRY_RUN: "${{ inputs.dryRun }}" + RENOVATE_INTERNAL_CHECKS_FILTER: strict + RENOVATE_PLATFORM: github + RENOVATE_PLATFORM_COMMIT: true + with: + configurationFile: "${{ env.RENOVATE_ONBOARDING_CONFIG_FILE_NAME }}" + token: "${{ steps.app-token.outputs.token }}" + renovate-version: "${{ inputs.version || 'full' }}" diff --git a/.github/workflows/syntax-check.yaml b/.github/workflows/syntax-check.yaml new file mode 100644 index 00000000..2fd0433d --- /dev/null +++ b/.github/workflows/syntax-check.yaml @@ -0,0 +1,222 @@ +--- +name: Ansible Syntax Check +on: + merge_group: + pull_request: + branches: + - main + types: + - opened + - synchronize + - reopened + push: + branches: + - main + schedule: + # Runs every Sunday at 4 AM (see https://crontab.guru) + - cron: "0 4 * * 0" + workflow_dispatch: + inputs: + ROLE: + description: 'Role to test (e.g. "elk", "ad", "vulns_acls")' + required: false + default: '' + type: string + +concurrency: + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref }} + +env: + ANSIBLE_FORCE_COLOR: "1" + COLLECTION_NAMESPACE: dreadnode + COLLECTION_NAME: goad + COLLECTION_PATH: ansible_collections/dreadnode/goad + REQUIREMENTS_FILE: .hooks/requirements.txt + PY_COLORS: "1" + PYTHON_VERSION: "3.14.4" + ROLE: ${{ github.event.inputs.ROLE }} + ANSIBLE_COLLECTIONS_PATH: ~/.ansible/collections + +jobs: + detect-changes: + runs-on: ubuntu-latest + outputs: + roles: ${{ steps.detect.outputs.roles }} + test_all: ${{ steps.check-event.outputs.test_all }} + steps: + - name: Checkout git repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + path: ${{ env.COLLECTION_PATH }} + fetch-depth: 0 + + - name: Check event type + id: check-event + run: | + if [[ "${{ github.event_name }}" == "push" ]] || \ + [[ "${{ github.event_name }}" == "schedule" ]] || \ + [[ "${{ github.event_name }}" == "merge_group" ]] || \ + [[ "${{ github.event_name }}" == "workflow_dispatch" && -z "${{ env.ROLE }}" ]]; then + echo "test_all=true" >> "$GITHUB_OUTPUT" + else + echo "test_all=false" >> "$GITHUB_OUTPUT" + fi + + - name: Detect changed roles + id: detect + if: steps.check-event.outputs.test_all == 'false' + working-directory: ${{ env.COLLECTION_PATH }} + run: | + if [[ "${{ github.event_name }}" == "pull_request" ]]; then + BASE="${{ github.event.pull_request.base.sha }}" + HEAD="${{ github.event.pull_request.head.sha }}" + else + BASE="origin/main" + HEAD="HEAD" + fi + + CHANGED_FILES=$(git diff --name-only "$BASE"..."$HEAD") + echo "Changed files:" + echo "$CHANGED_FILES" + + ROLES=$(echo "$CHANGED_FILES" | grep '^ansible/roles/' | cut -d'/' -f3 | sort -u | tr '\n' ' ') + echo "roles=$ROLES" >> "$GITHUB_OUTPUT" + echo "Changed roles: $ROLES" + + validate-inputs: + runs-on: ubuntu-latest + if: ${{ github.event.inputs.ROLE != '' }} + steps: + - name: Checkout git repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + path: ${{ env.COLLECTION_PATH }} + + - name: Validate inputs + run: | + if [[ -n "${{ env.ROLE }}" ]]; then + if [[ ! -d "${{ env.COLLECTION_PATH }}/ansible/roles/${{ env.ROLE }}" ]]; then + echo "::error::Role '${{ env.ROLE }}' not found in ansible/roles/" + exit 1 + fi + if [[ ! -f "${{ env.COLLECTION_PATH }}/ansible/roles/${{ env.ROLE }}/tasks/main.yml" ]]; then + echo "::error::Role '${{ env.ROLE }}' has no tasks/main.yml" + exit 1 + fi + fi + + syntax-check: + needs: detect-changes + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - name: Checkout git repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + path: ${{ env.COLLECTION_PATH }} + + - name: Set up Python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 + with: + python-version: ${{ env.PYTHON_VERSION }} + cache: 'pip' + cache-dependency-path: '${{ env.COLLECTION_PATH }}/${{ env.REQUIREMENTS_FILE }}' + + - name: Cache Ansible collections + uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 + with: + path: ~/.ansible/collections + key: ${{ runner.os }}-ansible-${{ hashFiles('**/requirements.yml') }} + + - name: Install dependencies + run: | + python3 -m pip install -r "${{ env.COLLECTION_PATH }}/${{ env.REQUIREMENTS_FILE }}" + + - name: Install galaxy dependencies + working-directory: ${{ env.COLLECTION_PATH }}/ansible + run: | + ansible-galaxy collection install -r requirements.yml --force + + - name: Build and install collection locally + working-directory: ${{ env.COLLECTION_PATH }}/ansible + run: | + ansible-galaxy collection build --force + ansible-galaxy collection install ${{ env.COLLECTION_NAMESPACE }}-${{ env.COLLECTION_NAME }}-*.tar.gz -p ~/.ansible/collections --force --pre + + - name: Syntax check roles + env: + ANSIBLE_CONFIG: ${{ env.COLLECTION_PATH }}/ansible/ansible.cfg + ANSIBLE_ROLES_PATH: ${{ env.COLLECTION_PATH }}/ansible/roles + TEST_ALL: ${{ needs.detect-changes.outputs.test_all }} + CHANGED_ROLES: ${{ needs.detect-changes.outputs.roles }} + SINGLE_ROLE: ${{ env.ROLE }} + run: | + set -e + FAILED=0 + PASSED=0 + SKIPPED=0 + ROLES_DIR="${{ env.COLLECTION_PATH }}/ansible/roles" + TMPDIR=$(mktemp -d) + + for role_dir in "$ROLES_DIR"/*/; do + role=$(basename "$role_dir") + + # Skip roles without tasks + if [ ! -f "$role_dir/tasks/main.yml" ]; then + continue + fi + + # If a single role was specified, only test that one + if [ -n "$SINGLE_ROLE" ]; then + if [ "$role" != "$SINGLE_ROLE" ]; then + continue + fi + # If not testing all, filter to changed roles + elif [ "$TEST_ALL" != "true" ] && [ -n "$CHANGED_ROLES" ]; then + if ! echo "$CHANGED_ROLES" | grep -qw "$role"; then + SKIPPED=$((SKIPPED + 1)) + continue + fi + fi + + echo "::group::Syntax check: $role" + + # Generate temporary playbook + cat > "$TMPDIR/check_${role}.yml" <&1); then + cd "$REPO_ROOT" + + # Check if changed + if [ -f "$readme.bak" ]; then + if ! cmp -s "$readme.bak" "$readme"; then + echo " Updated with custom template" + FILES_MODIFIED=1 + else + echo " No changes" + fi + rm -f "$readme.bak" + else + echo " Created with custom template" + FILES_MODIFIED=1 + fi + else + cd "$REPO_ROOT" + echo -e "${RED} Failed to generate docs${NC}" + echo -e "${RED} Error: $output${NC}" + # Restore original if it existed + if [ -f "$readme.bak" ]; then + mv "$readme.bak" "$readme" + fi + fi +done + +# Clean up any docsible backup files +find . -name "README_backup_*.md" -type f -delete 2> /dev/null || true +find . -name ".docsible" -type f -delete 2> /dev/null || true + +# Exit +if [ $FILES_MODIFIED -eq 1 ]; then + echo -e "${YELLOW}Documentation updated with custom template. Review and commit.${NC}" + exit 1 +else + echo -e "${GREEN}All documentation up to date${NC}" + exit 0 +fi diff --git a/.hooks/gen-arch-diagram.py b/.hooks/gen-arch-diagram.py new file mode 100755 index 00000000..a3c5806b --- /dev/null +++ b/.hooks/gen-arch-diagram.py @@ -0,0 +1,357 @@ +#!/usr/bin/env python3 +""" +Ansible Collection Architecture Diagram Generator (Pre-commit Hook) + +Analyzes the collection structure, generates a categorized Mermaid diagram, +renders it to SVG via mermaid-cli (mmdc), and updates the README to reference +the SVG image. +""" + +from pathlib import Path +import re +import shutil +import subprocess +import sys + +# ── Role categories ────────────────────────────────────────────────────────── +# Roles are matched top-down; first match wins. Prefix-based entries cover +# most roles, explicit names handle the exceptions. +CATEGORIES = [ + ("LAPS", { + "prefixes": ["laps_"], + "names": ["laps_dc"], + "color": "#f39c12", + "border": "#d68910", + "detail_bg": "#3d2e0a", + }), + ("SCCM", { + "prefixes": ["sccm_"], + "names": [], + "color": "#1abc9c", + "border": "#16a085", + "detail_bg": "#0d2e28", + }), + ("Vulnerabilities", { + "prefixes": ["vulns_"], + "names": [], + "color": "#9b59b6", + "border": "#8e44ad", + "detail_bg": "#2a1a33", + }), + ("Security", { + "prefixes": ["security_"], + "names": ["dc_audit_sacl", "ldap_diagnostic_logging"], + "color": "#e67e22", + "border": "#d35400", + "detail_bg": "#3a2210", + }), + ("Settings", { + "prefixes": ["settings_"], + "names": [], + "color": "#3498db", + "border": "#2980b9", + "detail_bg": "#132a3d", + }), + ("Active Directory", { + "prefixes": [], + "names": [ + "ad", "acl", "adcs", "adcs_templates", + "child_domain", "domain_controller", "domain_controller_slave", + "member_server", "trusts", + "gmsa", "gmsa_hosts", "password_policy", + "move_to_ou", "groups_domains", "onlyusers", + "dns_conditional_forwarder", "dc_dns_conditional_forwarder", + "parent_child_dns", "sync_domains", + "disable_user", "enable_user", + ], + "color": "#e74c3c", + "border": "#c0392b", + "detail_bg": "#3a1515", + }), + ("Server Roles", { + "prefixes": ["mssql_"], + "names": [ + "common", "commonwkstn", "localusers", + "mssql", "iis", "elk", "webdav", "dhcp", + "logs_windows", "fix_dns", "ps", + ], + "color": "#2ecc71", + "border": "#27ae60", + "detail_bg": "#133320", + }), +] + + +def categorize_roles(roles): + """Assign each role to its category. Returns {category: [role, ...]}.""" + result = {name: [] for name, _ in CATEGORIES} + uncategorized = [] + + for role in sorted(roles): + matched = False + for cat_name, cat_cfg in CATEGORIES: + if role in cat_cfg["names"]: + result[cat_name].append(role) + matched = True + break + for prefix in cat_cfg["prefixes"]: + if role.startswith(prefix): + result[cat_name].append(role) + matched = True + break + if matched: + break + if not matched: + uncategorized.append(role) + + if uncategorized: + print(f" Warning: uncategorized roles: {uncategorized}", file=sys.stderr) + # Put them in Server Roles as a catch-all + result["Server Roles"].extend(uncategorized) + + return result + + +def discover_collection(collection_path): + """Return roles, plugins, and playbooks from the collection.""" + base = Path(collection_path) + roles = [] + plugins = [] + playbooks = [] + + roles_dir = base / "roles" + if roles_dir.exists(): + roles = [d.name for d in roles_dir.iterdir() + if d.is_dir() and not d.name.startswith(".")] + + plugins_dir = base / "plugins" / "modules" + if plugins_dir.exists(): + plugins = [f.stem for f in plugins_dir.glob("*.py") + if not f.name.startswith("__")] + + playbooks_dir = base / "playbooks" + if playbooks_dir.exists(): + playbooks = [f.stem for f in playbooks_dir.glob("*.yml") + if not f.name.startswith(".") and not f.name.endswith(".retry")] + + return sorted(roles), sorted(plugins), sorted(playbooks) + + +def abbreviate_roles(roles, prefixes=None): + """Return a string listing all roles for the detail box.""" + def strip_prefix(name): + if prefixes: + for p in prefixes: + if name.startswith(p): + return name[len(p):] + return name + + display = [strip_prefix(r) for r in roles] + # 3 per line via
+ chunks = [] + for i in range(0, len(display), 3): + chunks.append(" • ".join(display[i:i + 3])) + return "
".join(chunks) + + +def generate_mermaid(roles, plugins, playbooks): + """Build a categorized Mermaid diagram string.""" + categorized = categorize_roles(roles) + lines = ["graph LR"] + lines.append(' Collection["dreadnode.goad
Ansible Collection"]') + lines.append("") + + # Category nodes + for cat_name, cat_cfg in CATEGORIES: + cat_roles = categorized.get(cat_name, []) + if not cat_roles: + continue + node_id = cat_name.replace(" ", "") + lines.append( + f' Collection --> {node_id}' + f'["{cat_name}
{len(cat_roles)} roles"]' + ) + + lines.append("") + + # Detail nodes (dashed links) + for cat_name, cat_cfg in CATEGORIES: + cat_roles = categorized.get(cat_name, []) + if not cat_roles: + continue + node_id = cat_name.replace(" ", "") + detail_id = f"{node_id}_detail" + summary = abbreviate_roles(cat_roles, prefixes=cat_cfg["prefixes"]) + lines.append(f' {node_id} -.- {detail_id}["{summary}"]') + + # Plugins node + if plugins: + lines.append("") + lines.append( + f' Collection --> Plugins' + f'["Plugins
{len(plugins)} modules"]' + ) + plugin_summary = "
".join( + " • ".join(plugins[i:i + 3]) + for i in range(0, len(plugins), 3) + ) + lines.append(f' Plugins -.- Plugins_detail["{plugin_summary}"]') + + # Playbooks node + if playbooks: + lines.append("") + lines.append( + f' Collection --> Playbooks' + f'["Playbooks
{len(playbooks)} playbook{"s" if len(playbooks) != 1 else ""}"]' + ) + chunks = [] + for i in range(0, len(playbooks), 3): + chunks.append(" • ".join(playbooks[i:i + 3])) + pb_summary = "
".join(chunks) + lines.append(f' Playbooks -.- Playbooks_detail["{pb_summary}"]') + + # Styles + lines.append("") + lines.append(" style Collection fill:#4a9eff,stroke:#2d7cd4,color:#fff,font-weight:bold") + if plugins: + lines.append(" style Plugins fill:#34495e,stroke:#2c3e50,color:#fff") + lines.append(" style Plugins_detail fill:#ebedef,stroke:#34495e,color:#333") + if playbooks: + lines.append(" style Playbooks fill:#7f8c8d,stroke:#6c7a7d,color:#fff") + lines.append(" style Playbooks_detail fill:#2a2a2a,stroke:#6c7a7d,color:#ccc") + for cat_name, cat_cfg in CATEGORIES: + cat_roles = categorized.get(cat_name, []) + if not cat_roles: + continue + nid = cat_name.replace(" ", "") + lines.append( + f" style {nid} fill:{cat_cfg['color']}," + f"stroke:{cat_cfg['border']},color:#fff" + ) + lines.append( + f" style {nid}_detail fill:{cat_cfg['detail_bg']}," + f"stroke:{cat_cfg['border']},color:#ccc" + ) + + return "\n".join(lines) + + +def render_svg(mmd_path, svg_path): + """Render .mmd to .svg via mermaid-cli (mmdc).""" + # Try mmdc directly, then npx fallback + mmdc = shutil.which("mmdc") + if mmdc: + cmd = [mmdc] + else: + npx = shutil.which("npx") + if not npx: + print("Error: neither mmdc nor npx found - install @mermaid-js/mermaid-cli", + file=sys.stderr) + return False + cmd = [npx, "--yes", "@mermaid-js/mermaid-cli"] + + # Use dark theme with dark background + config_path = mmd_path.parent / "mermaid-config.json" + config_path.write_text('{"theme":"dark","themeVariables":{"darkMode":true}}\n') + # Puppeteer config for CI (no-sandbox required on GitHub Actions) + puppeteer_config_path = mmd_path.parent / "puppeteer-config.json" + puppeteer_config_path.write_text('{"args":["--no-sandbox","--disable-setuid-sandbox"]}\n') + cmd += [ + "-i", str(mmd_path), "-o", str(svg_path), + "-c", str(config_path), + "-p", str(puppeteer_config_path), + "-b", "#1a1a2e", + "-w", "1600", + ] + try: + subprocess.run(cmd, check=True, capture_output=True, text=True) + except subprocess.CalledProcessError as exc: + print(f"Error rendering SVG: {exc.stderr}", file=sys.stderr) + return False + finally: + config_path.unlink(missing_ok=True) + puppeteer_config_path.unlink(missing_ok=True) + + # Ensure trailing newline so end-of-file-fixer has nothing to fix + svg = Path(svg_path) + content = svg.read_bytes() + if content and not content.endswith(b"\n"): + svg.write_bytes(content + b"\n") + + return True + + +def update_readme(readme_path="README.md"): + """Ensure README references the SVG image instead of inline mermaid.""" + path = Path(readme_path) + if not path.exists(): + print("README.md not found", file=sys.stderr) + return False + + content = path.read_text() + + start_marker = "## Architecture Diagram" + start_pos = content.find(start_marker) + if start_pos == -1: + print("Could not find '## Architecture Diagram' section", file=sys.stderr) + return False + + # Find the next ## heading + next_heading = re.search(r"\n## (?!Architecture Diagram)", content[start_pos + len(start_marker):]) + if next_heading: + end_pos = start_pos + len(start_marker) + next_heading.start() + 1 + else: + end_pos = len(content) + + new_section = f"""{start_marker} + +![Architecture](docs/architecture.svg) + +""" + + new_content = content[:start_pos] + new_section + content[end_pos:] + + if new_content != content: + path.write_text(new_content) + return True + + return True # No change needed + + +def main(): + """Main entry point for pre-commit hook.""" + roles, plugins, playbooks = discover_collection("ansible") + + print(f" Collection: {len(roles)} roles, {len(plugins)} plugins, {len(playbooks)} playbooks") + + # Generate mermaid source + mermaid_content = generate_mermaid(roles, plugins, playbooks) + mmd_path = Path("docs/architecture.mmd") + mmd_path.parent.mkdir(parents=True, exist_ok=True) + mmd_path.write_text(mermaid_content + "\n") + + # Render to SVG + svg_path = Path("docs/architecture.svg") + if not render_svg(mmd_path, svg_path): + print("Failed to render SVG - is @mermaid-js/mermaid-cli installed?", + file=sys.stderr) + return 1 + + # Update README + update_readme() + + # Stage generated files + try: + subprocess.run( + ["git", "add", "README.md", str(mmd_path), str(svg_path)], + check=True, + ) + except subprocess.CalledProcessError: + print("Warning: could not stage files", file=sys.stderr) + + print(" Architecture diagram updated (docs/architecture.svg)") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/.hooks/go-no-replacement.sh b/.hooks/go-no-replacement.sh new file mode 100755 index 00000000..1050ac11 --- /dev/null +++ b/.hooks/go-no-replacement.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +REPO_ROOT=$(git rev-parse --show-toplevel 2> /dev/null) +GO_MOD="${REPO_ROOT}/cli/go.mod" + +if grep -q "^replace " "${GO_MOD}" 2> /dev/null; then + echo "ERROR: Don't commit a replacement in go.mod!" + exit 1 +fi diff --git a/.hooks/go-vet.sh b/.hooks/go-vet.sh new file mode 100755 index 00000000..743d7348 --- /dev/null +++ b/.hooks/go-vet.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +REPO_ROOT=$(git rev-parse --show-toplevel 2> /dev/null) +cd "${REPO_ROOT}/cli" + +pkgs=$(go list ./...) + +for pkg in $pkgs; do + dir="$(basename "$pkg")/" + if [[ "${dir}" != .*/ ]]; then + go vet "${pkg}" + fi +done diff --git a/.hooks/linters/.tflint.hcl b/.hooks/linters/.tflint.hcl new file mode 100644 index 00000000..6faba8e8 --- /dev/null +++ b/.hooks/linters/.tflint.hcl @@ -0,0 +1,21 @@ +plugin "aws" { + enabled = true + version = "0.47.0" + source = "github.com/terraform-linters/tflint-ruleset-aws" +} + +rule "terraform_naming_convention" { + enabled = true +} + +rule "terraform_documented_outputs" { + enabled = true +} + +rule "terraform_documented_variables" { + enabled = true +} + +rule "terraform_unused_declarations" { + enabled = true +} diff --git a/.hooks/linters/ansible-lint.yaml b/.hooks/linters/ansible-lint.yaml new file mode 100644 index 00000000..39671957 --- /dev/null +++ b/.hooks/linters/ansible-lint.yaml @@ -0,0 +1,47 @@ +--- +# exclude_paths included in this file are parsed relative to this file's location +# and not relative to the CWD of execution. CLI arguments passed to the --exclude +# option are parsed relative to the CWD of execution. +exclude_paths: + - .claude/ + - .github/ + - infra/ + # Files with unskippable load-failure (unicode/runtime) or syntax-check issues + - ad/GOAD-Light/files/dc01/templates/ + - ad/GOAD-Mini/files/dc01/templates/ + - ad/NHA/files/templates/ + - docs/mkdocs/mkdocs.yml + - noansible_requirements.yml + - ansible/requirements_311.yml + - template/provider/ludus/ + - playbooks.yml + # Extension playbooks reference roles/deps not resolvable in the linter sandbox + - ansible/playbooks/ext-exchange.yml + - ansible/playbooks/ext-guacamole.yml + - ansible/playbooks/ext-lx01.yml + - ansible/playbooks/ext-wazuh.yml + - ansible/playbooks/network_setup.yml + - ansible/roles/onlyusers/ + +skip_list: + - yaml + - command-instead-of-shell + - role-name + - git-latest + - package-latest + - var-naming[no-role-prefix] + - var-naming[pattern] + - naming[pattern] + # syntax-check is unskippable - use exclude_paths instead + - hostvars + # load-failure is unskippable - use exclude_paths instead + - no-changed-when + - risky-shell-pipe + - risky-file-permissions + - meta-no-tags + - no-handler + - ignore-errors + - literal-compare + - no-free-form + - run-once[task] + - key-order[task] diff --git a/.hooks/linters/markdownlint.json b/.hooks/linters/markdownlint.json new file mode 100644 index 00000000..703952b1 --- /dev/null +++ b/.hooks/linters/markdownlint.json @@ -0,0 +1,19 @@ +{ + "default": true, + "MD004": false, + "MD005": false, + "MD007": false, + "MD012": true, + "MD013": false, + "MD029": false, + "MD033": false, + "MD034": false, + "MD041": false, + "MD055": false, + "MD056": false, + "MD011": false, + "MD057": false, + "MD060": false, + "line-length": false, + "no-multiple-blanks": false +} diff --git a/.hooks/linters/yamllint.yaml b/.hooks/linters/yamllint.yaml new file mode 100644 index 00000000..9e2267ae --- /dev/null +++ b/.hooks/linters/yamllint.yaml @@ -0,0 +1,32 @@ +--- +extends: default + +rules: + braces: + max-spaces-inside: 1 + level: error + brackets: + max-spaces-inside: 1 + level: error + colons: + max-spaces-after: -1 + level: error + commas: + max-spaces-after: -1 + level: error + comments: disable + comments-indentation: disable + document-start: disable + empty-lines: + max: 3 + level: error + hyphens: + level: error + indentation: disable + key-duplicates: enable + line-length: disable + new-line-at-end-of-file: disable + new-lines: + type: unix + trailing-spaces: disable + truthy: disable diff --git a/.hooks/prettier.sh b/.hooks/prettier.sh new file mode 100755 index 00000000..535d3357 --- /dev/null +++ b/.hooks/prettier.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -exo pipefail + +# Check if npm is installed +if ! [ -x "$(command -v npm)" ]; then + echo 'Error: npm is not installed.' >&2 + exit 1 +else + # Check if Prettier is installed + if ! [ -x "$(command -v prettier)" ]; then + echo 'Error: Prettier is not installed.' >&2 + echo 'Installing Prettier...' + npm install -g prettier + fi +fi + +# Check if Prettier is installed +if ! [ -x "$(command -v prettier)" ]; then + echo 'Error: Prettier is not installed.' >&2 + exit 1 +fi + +# Run Prettier on staged .json, .yaml, and .yml files +echo "Running Prettier on staged files..." + +# List all staged files, filter for the desired extensions, and run Prettier +git diff --cached --name-only --diff-filter=d \ + | grep -E '\.(json|ya?ml)$' \ + | xargs -I {} prettier --write {} + +# Add the files back to staging area as Prettier may have modified them +git diff --name-only --diff-filter=d \ + | grep -E '\.(json|ya?ml)$' \ + | xargs git add + +echo "Prettier formatting completed." + +exit 0 diff --git a/.hooks/requirements.txt b/.hooks/requirements.txt new file mode 100644 index 00000000..587539ba --- /dev/null +++ b/.hooks/requirements.txt @@ -0,0 +1,3 @@ +ansible-core==2.20.4 +docsible==0.8.0 +pre-commit==4.5.1 diff --git a/.hooks/run-go-tests.sh b/.hooks/run-go-tests.sh new file mode 100755 index 00000000..182958c4 --- /dev/null +++ b/.hooks/run-go-tests.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +set -euo pipefail + +TESTS_TO_RUN=${1:-} +RETURN_CODE=0 +GITHUB_ACTIONS=${GITHUB_ACTIONS:-} +PROJECT_NAME=$(basename "$(git rev-parse --show-toplevel 2> /dev/null)" || echo "dreadgoad") + +TIMESTAMP=$(date +"%Y%m%d%H%M%S") +LOGFILE="/tmp/${PROJECT_NAME}-unit-test-results-$TIMESTAMP.log" + +# Go code lives in the cli/ subdirectory +REPO_ROOT=$(git rev-parse --show-toplevel 2> /dev/null) +GO_DIR="${REPO_ROOT}/cli" + +if [[ -z "${TESTS_TO_RUN}" ]]; then + echo "No tests input" | tee -a "$LOGFILE" + echo "Example - Run all shorter collection of tests: bash .hooks/run-go-tests.sh short" | tee -a "$LOGFILE" + echo "Example - Run all tests: bash .hooks/run-go-tests.sh all" | tee -a "$LOGFILE" + echo "Example - Run coverage for a specific version: bash .hooks/run-go-tests.sh coverage" | tee -a "$LOGFILE" + echo "Example - Run tests for modified files: bash .hooks/run-go-tests.sh modified" | tee -a "$LOGFILE" + exit 1 +fi + +run_tests() { + local coverage_file=${1:-} + pushd "${GO_DIR}" > /dev/null || exit + echo "Logging output to ${LOGFILE}" | tee -a "$LOGFILE" + echo "Running tests..." | tee -a "$LOGFILE" + + # Check if go.mod and go.sum exist + if [[ -f "go.mod" && -f "go.sum" ]]; then + MOD_TMP=$(mktemp) + SUM_TMP=$(mktemp) + cp go.mod "$MOD_TMP" + cp go.sum "$SUM_TMP" + go mod tidy + if ! cmp -s go.mod "$MOD_TMP" || ! cmp -s go.sum "$SUM_TMP"; then + echo "Running 'go mod tidy' to clean up module dependencies..." | tee -a "$LOGFILE" + go mod tidy 2>&1 | tee -a "$LOGFILE" + fi + rm "$MOD_TMP" "$SUM_TMP" + fi + + if [[ "${TESTS_TO_RUN}" == 'coverage' ]]; then + go test -v -race -failfast -coverprofile="${coverage_file}" ./... 2>&1 | tee -a "$LOGFILE" + elif [[ "${TESTS_TO_RUN}" == 'all' ]]; then + go test -v -race -failfast ./... 2>&1 | tee -a "$LOGFILE" + elif [[ "${TESTS_TO_RUN}" == 'short' ]] && [[ "${GITHUB_ACTIONS}" != "true" ]]; then + go test -v -short -failfast -race ./... 2>&1 | tee -a "$LOGFILE" + elif [[ "${TESTS_TO_RUN}" == 'modified' ]]; then + local modified_files=() + while IFS= read -r file; do + [[ -n "$file" ]] && modified_files+=("$file") + done < <(git diff --name-only --cached | grep '^cli/.*\.go$' | sed 's|^cli/||' || true) + + if [[ ${#modified_files[@]} -eq 0 ]]; then + echo "No modified Go files found to test" | tee -a "$LOGFILE" + popd > /dev/null + return 0 + fi + + local pkg_dirs=() + for file in "${modified_files[@]}"; do + local pkg_dir + pkg_dir=$(dirname "$file") + pkg_dirs+=("$pkg_dir") + done + + # Remove duplicate package directories + IFS=$'\n' read -r -a pkg_dirs <<< "$(printf '%s\n' "${pkg_dirs[@]}" | sort -u)" + unset IFS + + for dir in "${pkg_dirs[@]}"; do + if [[ -n "$dir" ]]; then + local pkg_list + pkg_list=$(go list "./$dir/..." 2>&1) + if [[ -n "$pkg_list" ]] && [[ ! "$pkg_list" =~ "matched no packages" ]]; then + go test -v -short -race -failfast "./$dir/..." 2>&1 | tee -a "$LOGFILE" + else + echo "Skipping $dir (no packages match current platform/build constraints)" | tee -a "$LOGFILE" + fi + fi + done + else + if [[ "${GITHUB_ACTIONS}" != 'true' ]]; then + go test -v -failfast -race "./.../${TESTS_TO_RUN}" 2>&1 | tee -a "$LOGFILE" + fi + fi + + RETURN_CODE=$? + popd > /dev/null +} + +if [[ "${TESTS_TO_RUN}" == 'coverage' ]]; then + run_tests 'coverage-all.out' +else + run_tests +fi + +if [[ "${RETURN_CODE}" -ne 0 ]]; then + echo "unit tests failed" | tee -a "$LOGFILE" + exit 1 +fi diff --git a/.hooks/templates/docsible-template.md.j2 b/.hooks/templates/docsible-template.md.j2 new file mode 100755 index 00000000..afcfb167 --- /dev/null +++ b/.hooks/templates/docsible-template.md.j2 @@ -0,0 +1,72 @@ +# {{ role.name }} +{%- if role.meta.galaxy_info.description %} + +## Description + +{{ role.meta.galaxy_info.description }} +{%- endif %} + +## Requirements + +- Ansible >= {{ role.meta.galaxy_info.min_ansible_version }} +{%- if role.meta.dependencies %} + +## Dependencies +{% for dep in role.meta.dependencies %} +- {{ dep.role }} +{%- endfor %} +{%- endif %} + +## Role Variables +{%- for defaultfile in role.defaults %} + +### Default Variables ({{ defaultfile.file }}) + +| Variable | Type | Default | Description | +| -------- | ---- | ------- | ----------- | +{%- for key, details in defaultfile.data.items() %} +{%- if not key.endswith('.0') and not key.endswith('.1') and not key.endswith('.2') and not key.endswith('.3') and not key.endswith('.4') and not key.endswith('.5') and not key.endswith('.6') and '.' not in key or key.count('.') == 1 %} +| `{{ key }}` | {{ details.type }} | `{{ details.value }}` | {{ details.description or 'No description' }} | +{%- endif %} +{%- endfor %} +{%- endfor %} +{%- if role.vars %} +{%- for varsfile in role.vars %} + +### Role Variables ({{ varsfile.file }}) + +| Variable | Type | Value | Description | +| -------- | ---- | ----- | ----------- | +{%- for key, details in varsfile.data.items() %} +| `{{ key }}` | {{ details.type }} | `{{ details.value }}` | {{ details.description or 'No description' }} | +{%- endfor %} +{%- endfor %} +{%- endif %} + +## Tasks +{%- for taskfile in role.tasks | sort(attribute='file') %} + +### {{ taskfile.file }} +{% for task in taskfile.tasks %} +- **{{ task.name }}** ({{ task.module }}){% if task.when %} - Conditional{% endif %} +{%- endfor %} +{%- endfor %} + +## Example Playbook + +```yaml +- hosts: servers + roles: + - {{ role.name }} +``` + +## Author Information + +- **Author**: {{ role.meta.galaxy_info.author }} +- **Company**:{% if role.meta.galaxy_info.company %} {{ role.meta.galaxy_info.company }}{% endif %} +- **License**: {{ role.meta.galaxy_info.license }} + +## Platforms +{% for platform in role.meta.galaxy_info.platforms %} +- {{ platform.name }}: {{ platform.versions | join(', ') }} +{%- endfor %} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..eb5e6ea9 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,178 @@ +--- +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: check-case-conflict + - id: check-merge-conflict + - id: check-symlinks + - id: end-of-file-fixer + - id: trailing-whitespace + - id: check-added-large-files + exclude: '(docs/img/.*\.png|ad/.*/files/.*/wwwroot/bin/.*\.(dll|exe))$' + - id: detect-private-key + exclude: 'ad/.*/files/.*' + - id: check-shebang-scripts-are-executable + + - repo: https://github.com/rhysd/actionlint + rev: v1.7.12 + hooks: + - id: actionlint + + - repo: https://github.com/adrienverge/yamllint.git + rev: v1.38.0 + hooks: + - id: yamllint + entry: yamllint --strict -c .hooks/linters/yamllint.yaml + exclude: 'template/provider/ludus/config\.yml|requirements_311\.yml|noansible_requirements\.yml' + + - repo: https://github.com/codespell-project/codespell + rev: v2.4.2 + hooks: + - id: codespell + entry: codespell -q 3 -f -S ".git,.github,README.md" + exclude: '(\.min\.css\.map|\.css\.map|\.min\.map|\.min\.js|sysmonconfig-export\.xml|jquery\.validate\.(min\.)?js|jquery-3\.4\.1(\.slim)?\.js|modernizr-[\d\.]+\.js)$' + + - repo: https://github.com/jumanjihouse/pre-commit-hooks + rev: 3.0.0 + hooks: + - id: script-must-have-extension + name: Ensure shell scripts end with .sh + types: [shell] + exclude: '\.sh\.tpl$' + - id: shellcheck + exclude: '\.sh\.tpl$' + - id: shfmt + + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.48.0 + hooks: + - id: markdownlint + args: ['--fix', '--config', '.hooks/linters/markdownlint.json'] + + - repo: https://github.com/ansible/ansible-lint + rev: v26.4.0 + hooks: + - id: ansible-lint + entry: ansible-lint -v --force-color -c .hooks/linters/ansible-lint.yaml + language: python + language_version: python3 + # do not pass files to ansible-lint, see: + # https://github.com/ansible-community/ansible-lint/issues/611 + # pass_filenames: false + always_run: true + # https://github.com/pre-commit/pre-commit/issues/1526 + # if you want to use only the base ansible version for linting, + # replace 'community' extra with 'core' or just mention the exact + # version of Ansible you want to install as a dependency. + additional_dependencies: [".[community]"] + + - repo: https://github.com/antonbabenko/pre-commit-terraform + rev: v1.105.0 + hooks: + - id: terraform_fmt + files: ^(modules|infra)/ + - id: terraform_validate + files: ^modules/ + args: + - --hook-config=--retry-once-with-cleanup=true + - id: terraform_tflint + files: ^(modules|infra)/ + args: + - --args=--config=__GIT_WORKING_DIR__/.hooks/linters/.tflint.hcl + + - repo: local + hooks: + - id: prettier + name: Run prettier + entry: .hooks/prettier-hook.sh + language: script + types: [json, yaml] + + - id: docsible + name: Generate Ansible documentation with docsible + entry: .hooks/docsible-hook.sh + language: script + always_run: true + pass_filenames: false + stages: [pre-commit] + + - id: update-architecture-diagram + name: Update Architecture Diagram + entry: python .hooks/gen-arch-diagram.py + language: system + pass_filenames: false + always_run: false + files: ^ansible/(roles/|plugins/|playbooks/).* + + - id: go-fmt + name: Run gofmt + entry: bash -c 'cd cli && gofmt -l -w .' + language: system + files: '\.go$' + pass_filenames: false + + - id: go-imports + name: Run goimports + entry: bash -c 'cd cli && goimports -l -w .' + language: system + files: '\.go$' + pass_filenames: false + + - id: go-cyclo + name: Run gocyclo + entry: bash -c 'cd cli && gocyclo -over 15 .' + language: system + files: '\.go$' + pass_filenames: false + + - id: golangci-lint + name: Run golangci-lint + entry: bash -c 'cd cli && golangci-lint run --timeout=5m --enable=unused ./...' + language: system + files: '\.go$' + pass_filenames: false + + - id: go-critic + name: Run go-critic + entry: bash -c 'cd cli && gocritic check ./...' + language: system + files: '\.go$' + pass_filenames: false + + - id: go-build + name: Run go build + entry: bash -c 'cd cli && go build ./...' + language: system + files: '\.go$' + pass_filenames: false + + - id: go-mod-tidy + name: Run go mod tidy + entry: bash -c 'cd cli && go mod tidy' + language: system + files: '(go\.mod|go\.sum)$' + pass_filenames: false + + - id: go-no-replacement + name: Avoid committing a go module replacement + entry: .hooks/go-no-replacement.sh + language: script + files: go.mod + + - id: go-unit-tests + name: Go unit tests + language: script + entry: .hooks/run-go-tests.sh modified + files: '\.go$' + pass_filenames: true + + - id: go-vet + name: Run go vet + language: script + entry: .hooks/go-vet.sh + files: '\.go$' + always_run: true + pass_filenames: true + require_serial: true + log_file: /tmp/go-vet.log diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..b0678fc3 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,66 @@ +# Contributing to DreadGOAD + +Thanks for your interest in contributing! DreadGOAD is a fork of +[GOAD](https://github.com/Orange-Cyberdefense/GOAD) and we welcome +contributions that improve the labs, tooling, and documentation. + +## Getting Started + +1. Fork the repository +2. Create a feature branch from `main` +3. Make your changes +4. Submit a pull request + +## What We're Looking For + +- New vulnerability scenarios or attack paths +- Improvements to existing Ansible roles +- Bug fixes in provisioning or the Go CLI +- New provider support or extension modules +- Documentation improvements +- Test coverage + +## Guidelines + +### Code + +- Follow the existing code style in each language (Go, Python, Ansible/YAML) +- Ansible roles should include a `README.md` describing the role's purpose and variables +- Test your changes against at least one provider before submitting + +### Ansible Roles + +- Place new roles under `ansible/roles/` +- Use the collection namespace `dreadnode.goad` for module references +- Include default variables in `defaults/main.yml` + +### Lab Configurations + +- Lab definitions live under `ad//` +- Use `ad/TEMPLATE/` as a starting point for new labs +- Document the lab's topology, users, and intended vulnerabilities in its `README.md` + +### Commits + +- Write clear, descriptive commit messages +- Keep commits focused -- one logical change per commit + +### Pull Requests + +- Describe what changed and why +- Reference any related issues +- Include testing details (which provider, which lab) + +## Reporting Issues + +Open an issue on GitHub with: + +- What you expected to happen +- What actually happened +- Steps to reproduce +- Provider and OS details + +## License + +By contributing, you agree that your contributions will be licensed under the +GPL-3.0-or-later license. diff --git a/Dockerfile b/Dockerfile index a7044719..75bba12e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 +FROM ubuntu:24.04 RUN apt-get update \ && apt-get install -y python3-pip @@ -13,4 +13,4 @@ RUN apt-get update -y && \ COPY ./ansible/requirements.yml . -RUN ansible-galaxy install -r requirements.yml +RUN ansible-galaxy collection install -r requirements.yml diff --git a/README.md b/README.md index 031eed6f..3eb9bd96 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,135 @@ -
-

GOAD (Game Of Active Directory)

-
-
+# DreadGOAD -**GOAD (v3)** +A heavily modified fork of [GOAD (Game of Active Directory)](https://github.com/Orange-Cyberdefense/GOAD) +by Orange Cyberdefense. DreadGOAD deploys vulnerable Active Directory lab +environments for penetration testing and security research. -:bookmark: Documentation : [https://orange-cyberdefense.github.io/GOAD/](https://orange-cyberdefense.github.io/GOAD/) +> **Warning:** This lab is extremely vulnerable by design. Do not deploy it on +> the internet without proper network isolation, and do not reuse any of these +> configurations in production environments. -## Description -GOAD is a pentest active directory LAB project. -The purpose of this lab is to give pentesters a vulnerable Active directory environment ready to use to practice usual attack techniques. +## What's Different from GOAD? -> [!CAUTION] -> This lab is extremely vulnerable, do not reuse recipe to build your environment and do not deploy this environment on internet without isolation (this is a recommendation, use it as your own risk).
-> This repository was build for pentest practice. +DreadGOAD extends the upstream GOAD project with: -![goad_screenshot](./docs/img/goad_screenshot.png) +- **Go CLI (`dreadgoad`)** -- single binary for provisioning, health checks, trust verification, and vulnerability validation +- **AWS infrastructure automation** -- Terragrunt/Terraform modules for deploying labs in AWS with SSM-based management (no open ports) +- **Modular extension system** -- plug-in extensions for ELK, Exchange, Wazuh, Guacamole, and more +- **Variant generator** -- create graph-isomorphic lab copies with randomized entity names while preserving all attack paths +- **Ansible collection (`dreadnode.goad`)** -- 80+ roles packaged as a reusable collection +- **Multi-provider support** -- VirtualBox, VMware, Proxmox, AWS, Azure, and Ludus -## Licenses -This lab use free Windows VM only (180 days). After that delay enter a license on each server or rebuild all the lab (may be it's time for an update ;)) +## Lab Environments -## Available labs +| Lab | VMs | Forests | Domains | Description | +|-----|-----|---------|---------|-------------| +| [GOAD](ad/GOAD/) | 5 | 2 | 3 | Full lab -- the complete Game of Active Directory experience | +| [GOAD-Light](ad/GOAD-Light/) | 3 | 1 | 2 | Lighter variant for resource-constrained setups | +| [GOAD-Mini](ad/GOAD-Mini/) | 1 | 1 | 1 | Minimal single-DC lab | +| [MINILAB](ad/MINILAB/) | 2 | 1 | 1 | One DC + one workstation | +| [SCCM](ad/SCCM/) | 4 | 1 | 1 | MECM/SCCM attack scenarios | +| [NHA](ad/NHA/) | 5 | 2 | 3 | Ninja Hacker Academy -- challenge mode | +| [DRACARYS](ad/DRACARYS/) | 4 | 1 | 2 | Training challenge variant | -- GOAD Lab family and extensions overview -
-GOAD -
+All labs feature 50+ intentional vulnerabilities including Kerberoasting, AS-REP +roasting, ACL abuse chains, ADCS misconfigurations (ESC1-8), MSSQL attacks, +delegation abuse, and more. See [docs/GOAD-vulnerabilities-comprehensive.md](docs/GOAD-vulnerabilities-comprehensive.md) +for the full catalog. -- [GOAD](https://orange-cyberdefense.github.io/GOAD/labs/GOAD/) : 5 vms, 2 forests, 3 domains (full goad lab) -
-GOAD -
+## Quick Start -- [GOAD-Light](https://orange-cyberdefense.github.io/GOAD/labs/GOAD-Light/) : 3 vms, 1 forest, 2 domains (smaller goad lab for those with a smaller pc) -
-GOAD Light -
+### Prerequisites -- [MINILAB](https://orange-cyberdefense.github.io/GOAD/labs/MINILAB/): 2 vms, 1 forest, 1 domain (basic lab with one DC (windows server 2019) and one Workstation (windows 10)) +- Ansible >= 2.15 +- Go 1.21+ (for building the CLI) +- A supported infrastructure provider (VirtualBox, VMware, Proxmox, AWS, Azure, or Ludus) -- [SCCM](https://orange-cyberdefense.github.io/GOAD/labs/SCCM/) : 4 vms, 1 forest, 1 domain, with microsoft configuration manager installed -
-SCCM -
+### Install -- [NHA](https://orange-cyberdefense.github.io/GOAD/labs/NHA/) : A challenge with 5 vms and 2 domains. no schema provided, you will have to find out how break it. -
-SCCM -
+```bash +# Clone the repo +git clone https://github.com/dreadnode/DreadGOAD.git +cd DreadGOAD -- [DRACARYS](https://orange-cyberdefense.github.io/GOAD/labs/DRACARYS/) : A challenge with 3 vms and 1 domains. no schema provided, you will have to find out how break it. -
-SCCM -
\ No newline at end of file +# Install Ansible dependencies +ansible-galaxy collection install -r ansible/requirements.yml + +# Build the CLI +cd cli && go build -o dreadgoad . && cd .. +``` + +### Deploy a Lab + +```bash +# Provision the full GOAD lab +./cli/dreadgoad provision + +# Health check all instances +./cli/dreadgoad health-check + +# Validate vulnerabilities are configured +./cli/dreadgoad validate --quick +``` + +For provider-specific setup instructions, see the [provider documentation](docs/mkdocs/docs/providers/). + +### Generate a Variant + +Create a randomized copy of any lab with unique names but identical attack paths: + +```bash +./cli/dreadgoad variant generate --source ad/GOAD --target ad/my-variant --name my-variant +``` + +See [tools/variant_generator/](tools/variant_generator/) for details. + +## Documentation + +- [CLI configuration](docs/cli.md) -- Viper-based config, environment variables, per-environment settings +- [Domains and users](docs/domains-and-users.md) -- full network topology, credentials, and attack paths +- [Vulnerability catalog](docs/GOAD-vulnerabilities-comprehensive.md) -- all 50+ vulnerabilities with exploitation techniques +- [Validation guide](docs/validation.md) -- automated vulnerability validation +- [Provider guides](docs/mkdocs/docs/providers/) -- VirtualBox, VMware, Proxmox, AWS, Azure, Ludus +- [AWS AMI build & deploy workflow](docs/mkdocs/docs/providers/aws-ami-workflow.md) -- end-to-end warpgate + Terragrunt + Ansible +- [Extension guides](docs/mkdocs/docs/extensions/) -- ELK, Exchange, Wazuh, hardened workstation +- [Architecture diagram](docs/architecture.svg) +- [Upstream GOAD docs](https://orange-cyberdefense.github.io/GOAD/) -- original project documentation + +## Project Structure + +```text +DreadGOAD/ +├── ad/ # Lab definitions (GOAD, GOAD-Light, MINILAB, SCCM, NHA, ...) +├── ansible/ # Ansible collection with 80+ roles and custom modules +├── cli/ # Go CLI source (dreadgoad) +├── docs/ # Documentation and architecture diagrams +├── extensions/ # Pluggable lab extensions (ELK, Exchange, Wazuh, ...) +├── infra/ # Terragrunt configurations for AWS deployments +├── modules/ # Terraform modules (AWS networking, instance factory) +├── packer/ # VM templating (Vagrant, Proxmox) +├── tools/ # Variant generator and utilities +├── warpgate-templates/ # Golden AMI build templates (warpgate) +└── template/ # Provider templates +``` + +## Contributing + +Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. + +## Acknowledgments + +DreadGOAD is built on the excellent work of the [GOAD](https://github.com/Orange-Cyberdefense/GOAD) +project by [Mayfly](https://github.com/Mayfly277) and [Orange Cyberdefense](https://github.com/Orange-Cyberdefense). +If you find this useful, consider [sponsoring the original creator](https://github.com/sponsors/Mayfly277). + +Additional references and credits can be found in the [upstream documentation](https://orange-cyberdefense.github.io/GOAD/). + +## License + +GPL-3.0-or-later -- see [LICENSE](LICENSE). + +## Disclaimer + +This project deploys intentionally vulnerable configurations for security +research and penetration testing training. **Do not use in production +environments.** Use at your own risk. diff --git a/ad/DRACARYS/README.md b/ad/DRACARYS/README.md index af02906e..cbfcfc68 100644 --- a/ad/DRACARYS/README.md +++ b/ad/DRACARYS/README.md @@ -6,7 +6,7 @@ - You should find your way in to get domain admin on the domain dracarys.lab - Using vagrant user is prohibited of course ^^ - Starting point is on lx01 : `.12` -- Obviously do not cheat by looking at the passwords and flags in the recipe files, the lab must start without user to full compromise. +- Obviously do not cheat by looking at the passwords and flags in the recipe files, the lab must start without user to full compromise. - If you use goad previously your ansible requirements may not be up to date. Be sure to do this before the install: ```bash @@ -14,9 +14,9 @@ source ~/.goad/.venv/bin/activate cd ~/GOAD/ansible # if you python is >=3.11 -ansible-galaxy install -r requirements_311.yml +ansible-galaxy install -r requirements_311.yml # if you got a python <3.10 -ansible-galaxy install -r requirements.yml +ansible-galaxy install -r requirements.yml ``` - Install : @@ -43,7 +43,7 @@ or > disable_vagrant ``` -- Now do a reboot of all the machine to avoid unintended secrets stored : +- Now do a reboot of all the machine to avoid unintended secrets stored : ```bash > stop diff --git a/ad/DRACARYS/data/config.json b/ad/DRACARYS/data/config.json index 404a344c..e81d8488 100644 --- a/ad/DRACARYS/data/config.json +++ b/ad/DRACARYS/data/config.json @@ -87,11 +87,11 @@ } }, "lx01" : { - "hostname" : "syrax", + "hostname" : "syrax", "type" : "server", "os": "linux", "local_admin_password": "HGLXaxQSP@ssw_rd$", - "domain" : "dracarys.lab", + "domain" : "dracarys.lab", "path" : "DC=dracarys,DC=lab", "local_groups" : { "sudoers" : ["LinuxAdmins"], @@ -125,13 +125,13 @@ }, "multi_domain_groups_member" : {}, "acls" : { - "WriteSPN_viserion_vhagar": {"for": "viserion", "to": "vhagar$", "right": "Ext-Write-SPN", "inheritance": "None"}, + "WriteSPN_viserion_vhagar": {"for": "viserion", "to": "vhagar$", "right": "Ext-Write-SPN", "inheritance": "None"} }, "users" : { "drogon" : { "firstname" : "drogon", "surname" : "-", - "password" : "sUIjHxs1i0yxZsGBreh0", + "password" : "sUIjHxs1i0yxZsGBreh0", "city" : "-", "description" : "Domain admin", "groups" : ["LinuxAdmins", "Domain Admins"], diff --git a/ad/DRACARYS/data/inventory b/ad/DRACARYS/data/inventory index 897dc931..e35fe315 100644 --- a/ad/DRACARYS/data/inventory +++ b/ad/DRACARYS/data/inventory @@ -52,7 +52,7 @@ srv01 [linux_domain] lx01 -; domain controler (mandatory) +; domain controller (mandatory) ; usage : ad-acl.yml, ad-data.yml, ad-relations.yml, laps.yml [dc] dc01 @@ -66,12 +66,12 @@ srv01 ; usage : ad-servers.yml, laps.yml [workstation] -; parent domain controler (mandatory) +; parent domain controller (mandatory) ; usage : ad-servers.yml [parent_dc] dc01 -; child domain controler (need a fqdn child_name.parent_name) +; child domain controller (need a fqdn child_name.parent_name) ; usage : ad-servers.yml [child_dc] @@ -105,4 +105,4 @@ srv01 srv01 ;stay empty until override -[extensions] \ No newline at end of file +[extensions] diff --git a/ad/DRACARYS/data/inventory_disable_vagrant b/ad/DRACARYS/data/inventory_disable_vagrant index 58e4fde0..a153a3b8 100644 --- a/ad/DRACARYS/data/inventory_disable_vagrant +++ b/ad/DRACARYS/data/inventory_disable_vagrant @@ -25,4 +25,4 @@ dc01 srv01 [linux_domain] -lx01 \ No newline at end of file +lx01 diff --git a/ad/DRACARYS/providers/aws/inventory b/ad/DRACARYS/providers/aws/inventory index d48d9ca1..f37bfbd5 100644 --- a/ad/DRACARYS/providers/aws/inventory +++ b/ad/DRACARYS/providers/aws/inventory @@ -7,4 +7,4 @@ srv01 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=srv01 ansible_user=a lx01 ansible_host={{ip_range}}.12 dict_key=lx01 ansible_connection=ssh ansible_ssh_common_args='-o StrictHostKeyChecking=no' ansible_user=goadmin ansible_password=HGLXaxQSP@ssw_rd$ [all:vars] -admin_user=goadmin \ No newline at end of file +admin_user=goadmin diff --git a/ad/DRACARYS/providers/aws/linux.tf b/ad/DRACARYS/providers/aws/linux.tf index 15137ff3..322e59c6 100644 --- a/ad/DRACARYS/providers/aws/linux.tf +++ b/ad/DRACARYS/providers/aws/linux.tf @@ -1,3 +1,7 @@ +# NOTE: AMI IDs below are region-specific (originally eu-west-1). +# Replace with AMI IDs for your target AWS region. +# See: https://aws.amazon.com/marketplace for Windows Server base AMIs + "lx01" = { name = "lx01" linux_sku = "24_04-lts-gen2" @@ -6,4 +10,4 @@ private_ip_address = "{{ip_range}}.12" password = "HGLXaxQSP@ssw_rd$" instance_type = "t3.medium" -} \ No newline at end of file +} diff --git a/ad/DRACARYS/providers/aws/windows.tf b/ad/DRACARYS/providers/aws/windows.tf index 2c7207b8..1af8eb3e 100644 --- a/ad/DRACARYS/providers/aws/windows.tf +++ b/ad/DRACARYS/providers/aws/windows.tf @@ -1,6 +1,11 @@ # Standard_B2s : 2 CPU / 4GB # Standard_B2ms : 2CPU / 8GB # Standard_B4ms : 4 cpu / 16 GB + +# NOTE: AMI IDs below are region-specific (originally eu-west-1). +# Replace with AMI IDs for your target AWS region. +# See: https://aws.amazon.com/marketplace for Windows Server base AMIs + "dc01" = { name = "dc01" domain = "dracarys.lab" @@ -18,4 +23,4 @@ instance_type = "t3.medium" private_ip_address = "{{ip_range}}.11" password = "NgtkgtIAs75cKV+Pu" -} \ No newline at end of file +} diff --git a/ad/DRACARYS/providers/azure/inventory b/ad/DRACARYS/providers/azure/inventory index d48d9ca1..f37bfbd5 100644 --- a/ad/DRACARYS/providers/azure/inventory +++ b/ad/DRACARYS/providers/azure/inventory @@ -7,4 +7,4 @@ srv01 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=srv01 ansible_user=a lx01 ansible_host={{ip_range}}.12 dict_key=lx01 ansible_connection=ssh ansible_ssh_common_args='-o StrictHostKeyChecking=no' ansible_user=goadmin ansible_password=HGLXaxQSP@ssw_rd$ [all:vars] -admin_user=goadmin \ No newline at end of file +admin_user=goadmin diff --git a/ad/DRACARYS/providers/azure/linux.tf b/ad/DRACARYS/providers/azure/linux.tf index 90f1a29e..f0756cfb 100644 --- a/ad/DRACARYS/providers/azure/linux.tf +++ b/ad/DRACARYS/providers/azure/linux.tf @@ -6,4 +6,4 @@ private_ip_address = "{{ip_range}}.12" password = "HGLXaxQSP@ssw_rd$" size = "Standard_B2s" -} \ No newline at end of file +} diff --git a/ad/DRACARYS/providers/azure/windows.tf b/ad/DRACARYS/providers/azure/windows.tf index da85819b..7940621a 100644 --- a/ad/DRACARYS/providers/azure/windows.tf +++ b/ad/DRACARYS/providers/azure/windows.tf @@ -20,4 +20,4 @@ private_ip_address = "{{ip_range}}.11" password = "NgtkgtIAs75cKV+Pu" size = "Standard_B2s" -} \ No newline at end of file +} diff --git a/ad/DRACARYS/providers/ludus/inventory b/ad/DRACARYS/providers/ludus/inventory index 8df4938b..a7a260cd 100644 --- a/ad/DRACARYS/providers/ludus/inventory +++ b/ad/DRACARYS/providers/ludus/inventory @@ -13,4 +13,4 @@ dns_server={{ip_range}}.254 dns_server_forwarder={{ip_range}}.254 ansible_user=localuser -ansible_password=password \ No newline at end of file +ansible_password=password diff --git a/ad/DRACARYS/providers/proxmox/windows.tf b/ad/DRACARYS/providers/proxmox/windows.tf index dbb84b90..58fcc4ad 100644 --- a/ad/DRACARYS/providers/proxmox/windows.tf +++ b/ad/DRACARYS/providers/proxmox/windows.tf @@ -19,4 +19,4 @@ ip = "{{ip_range}}.11/24" gateway = "{{ip_range}}.1" os = "win11" -} \ No newline at end of file +} diff --git a/ad/DRACARYS/providers/virtualbox/Vagrantfile b/ad/DRACARYS/providers/virtualbox/Vagrantfile index a99d59da..fe1322e2 100644 --- a/ad/DRACARYS/providers/virtualbox/Vagrantfile +++ b/ad/DRACARYS/providers/virtualbox/Vagrantfile @@ -1,19 +1,19 @@ -boxes = +boxes = [ - { :name => "DRACARYS-DC01", - :ip => "{{ip_range}}.10", - :box => "GOAD/WindowsServer2025", - :box_version => "2026.02.09", - :os => "windows", - :cpus => 2, + { :name => "DRACARYS-DC01", + :ip => "{{ip_range}}.10", + :box => "GOAD/WindowsServer2025", + :box_version => "2026.02.09", + :os => "windows", + :cpus => 2, :mem => 3000 }, - { :name => "DRACARYS-SRV01", - :ip => "{{ip_range}}.11", - :box => "GOAD/WindowsServer2025", - :box_version => "2026.02.09", - :os => "windows", - :cpus => 2, + { :name => "DRACARYS-SRV01", + :ip => "{{ip_range}}.11", + :box => "GOAD/WindowsServer2025", + :box_version => "2026.02.09", + :os => "windows", + :cpus => 2, :mem => 3000 }, { :name => "DRACARYS-LX01", @@ -25,4 +25,4 @@ boxes = :mem => 3000, :forwarded_port => [ {:guest => 22, :host => 2210, :id => "ssh"} ] } -] \ No newline at end of file +] diff --git a/ad/DRACARYS/providers/vmware/Vagrantfile b/ad/DRACARYS/providers/vmware/Vagrantfile index a99d59da..fe1322e2 100644 --- a/ad/DRACARYS/providers/vmware/Vagrantfile +++ b/ad/DRACARYS/providers/vmware/Vagrantfile @@ -1,19 +1,19 @@ -boxes = +boxes = [ - { :name => "DRACARYS-DC01", - :ip => "{{ip_range}}.10", - :box => "GOAD/WindowsServer2025", - :box_version => "2026.02.09", - :os => "windows", - :cpus => 2, + { :name => "DRACARYS-DC01", + :ip => "{{ip_range}}.10", + :box => "GOAD/WindowsServer2025", + :box_version => "2026.02.09", + :os => "windows", + :cpus => 2, :mem => 3000 }, - { :name => "DRACARYS-SRV01", - :ip => "{{ip_range}}.11", - :box => "GOAD/WindowsServer2025", - :box_version => "2026.02.09", - :os => "windows", - :cpus => 2, + { :name => "DRACARYS-SRV01", + :ip => "{{ip_range}}.11", + :box => "GOAD/WindowsServer2025", + :box_version => "2026.02.09", + :os => "windows", + :cpus => 2, :mem => 3000 }, { :name => "DRACARYS-LX01", @@ -25,4 +25,4 @@ boxes = :mem => 3000, :forwarded_port => [ {:guest => 22, :host => 2210, :id => "ssh"} ] } -] \ No newline at end of file +] diff --git a/ad/GOAD-Light/README.md b/ad/GOAD-Light/README.md index 5ed231cb..cac28abc 100644 --- a/ad/GOAD-Light/README.md +++ b/ad/GOAD-Light/README.md @@ -4,22 +4,27 @@ This is a light version of goad without the essos domain. This lab was build for computer with less performance. Missing scenarios: + - cross forest exploitation (no more external forest) - mssql trusted link - some old computer vulnerabilities (zero logon, petitpotam unauthent,...) - ESC4, ESC2/3 -### Servers -This lab is actually composed of three virtual machines: +## Servers + +This lab is actually composed of five virtual machines: + - **kingslanding** : DC01 running on Windows Server 2019 (with windefender enabled by default) - **winterfell** : DC02 running on Windows Server 2019 (with windefender enabled by default) - **castelblack** : SRV02 running on Windows Server 2019 (with windefender **disabled** by default) -#### domain : north.sevenkingdoms.local +### domain : north.sevenkingdoms.local + - **winterfell** : DC01 - **castelblack** : SRV02 : MSSQL / IIS -#### domain : sevenkingdoms.local +### domain : sevenkingdoms.local + - **kingslanding** : DC02 @@ -27,19 +32,20 @@ The lab setup is automated using vagrant and ansible automation tools. You can change the vm version in the Vagrantfile according to Stefan Scherer vagrant repository : https://app.vagrantup.com/StefanScherer -### Users/Groups and associated vulnerabilites/scenarios +### Users/Groups and associated vulnerabilities/scenarios - You can find a lot of the available scenarios on [https://mayfly277.github.io/categories/ad/](https://mayfly277.github.io/categories/ad/) NORTH.SEVENKINGDOMS.LOCAL + - STARKS: RDP on WINTERFELL AND CASTELBLACK - arya.stark: Execute as user on mssql - eddard.stark: DOMAIN ADMIN NORTH/ (bot 5min) LLMRN request to do NTLM relay with responder - - catelyn.stark: + - catelyn.stark: - robb.stark: bot (3min) RESPONDER LLMR - - sansa.stark: + - sansa.stark: - brandon.stark: ASREP_ROASTING - - rickon.stark: + - rickon.stark: - theon.greyjoy: - jon.snow: mssql admin / KERBEROASTING / group cross domain / mssql trusted link - hodor: PASSWORD SPRAY (user=password) @@ -53,6 +59,7 @@ NORTH.SEVENKINGDOMS.LOCAL - AcrossTheSea : cross forest group SEVENKINGDOMS.LOCAL + - LANISTERS - tywin.lannister: ACL forcechangepassword on jaime.lanister - jaime.lannister: ACL genericwrite-on-user joffrey.baratheon @@ -90,6 +97,6 @@ SEVENKINGDOMS.LOCAL - IIS : allow asp upload, run as NT Authority/network - MSSQL: - admin : jon.snow - - impersonate : + - impersonate : - execute as login : samwel.tarlly -> sa - execute as user : arya.stark -> dbo diff --git a/ad/GOAD-Light/data/config.json b/ad/GOAD-Light/data/config.json index 13adede0..51b04d07 100644 --- a/ad/GOAD-Light/data/config.json +++ b/ad/GOAD-Light/data/config.json @@ -22,7 +22,7 @@ "vulns" : ["disable_firewall", "directory", "files", "adcs_templates"], "vulns_vars" : { "directory": { - "setup": "c:\\setup" + "setup": "C:\\setup" }, "files" : { "template" : { @@ -67,10 +67,10 @@ "gpo_abuse.ps1", "rdp_scheduler.ps1" ], - "vulns" : ["disable_firewall", "directory", "credentials", "autologon", "files", "ntlmdowngrade", "enable_llmnr", "enable_nbt-ns", "shares"], + "vulns" : ["disable_firewall", "directory", "credentials", "autologon", "files", "ntlmdowngrade", "enable_llmnr", "enable_nbt_ns", "shares"], "vulns_vars" : { "directory": { - "setup": "c:\\setup" + "setup": "C:\\setup" }, "credentials" : { "TERMSRV/castelblack": { @@ -89,7 +89,7 @@ "files" : { "rdp" : { "src" : "dc02/bot_rdp.ps1", - "dest" : "c:\\setup\\bot_rdp.ps1" + "dest" : "C:\\setup\\bot_rdp.ps1" }, "sysvol_fake_script": { "src" : "dc02/sysvol_scripts/script.ps1", @@ -484,4 +484,4 @@ } } } -}} \ No newline at end of file +}} diff --git a/ad/GOAD-Light/data/inventory b/ad/GOAD-Light/data/inventory index e06336cb..fd0b994a 100644 --- a/ad/GOAD-Light/data/inventory +++ b/ad/GOAD-Light/data/inventory @@ -34,7 +34,7 @@ dc01 dc02 srv02 -; domain controler (mandatory) +; domain controller (mandatory) ; usage : ad-acl.yml, ad-data.yml, ad-relations.yml, laps.yml [dc] dc01 @@ -49,12 +49,12 @@ srv02 ; usage : ad-servers.yml, laps.yml [workstation] -; parent domain controler (mandatory) +; parent domain controller (mandatory) ; usage : ad-servers.yml [parent_dc] dc01 -; child domain controler (need a fqdn child_name.parent_name) +; child domain controller (need a fqdn child_name.parent_name) ; usage : ad-servers.yml [child_dc] dc02 @@ -88,7 +88,7 @@ srv02 [mssql_ssms] srv02 -; install webdav +; install webdav [webdav] srv02 diff --git a/ad/GOAD-Light/files/dc01/templates/ESC1.json b/ad/GOAD-Light/files/dc01/templates/ESC1.json index a102696d..eb8ab551 100644 Binary files a/ad/GOAD-Light/files/dc01/templates/ESC1.json and b/ad/GOAD-Light/files/dc01/templates/ESC1.json differ diff --git a/ad/GOAD-Light/files/dc02/bot_rdp.ps1 b/ad/GOAD-Light/files/dc02/bot_rdp.ps1 index d80dffc6..ebdc1e12 100644 --- a/ad/GOAD-Light/files/dc02/bot_rdp.ps1 +++ b/ad/GOAD-Light/files/dc02/bot_rdp.ps1 @@ -4,4 +4,4 @@ if(-not(query session robb.stark /server:castelblack)) { Get-Process mstsc -IncludeUserName | Where {$_.UserName -eq "NORTH\robb.stark"}|Stop-Process #run the command mstsc /v:castelblack -} \ No newline at end of file +} diff --git a/ad/GOAD-Light/files/dc02/sysvol_scripts/script.ps1 b/ad/GOAD-Light/files/dc02/sysvol_scripts/script.ps1 index da47b924..955267b3 100644 --- a/ad/GOAD-Light/files/dc02/sysvol_scripts/script.ps1 +++ b/ad/GOAD-Light/files/dc02/sysvol_scripts/script.ps1 @@ -4,4 +4,4 @@ $taskName = "fake task" $user = "NORTH\jeor.mormont" $password = "_L0ngCl@w_" -# passwords in sysvol still ... \ No newline at end of file +# passwords in sysvol still ... diff --git a/ad/GOAD-Light/files/dc02/sysvol_scripts/secret.ps1 b/ad/GOAD-Light/files/dc02/sysvol_scripts/secret.ps1 index fd4fe784..cd9198d9 100644 --- a/ad/GOAD-Light/files/dc02/sysvol_scripts/secret.ps1 +++ b/ad/GOAD-Light/files/dc02/sysvol_scripts/secret.ps1 @@ -10,4 +10,4 @@ $keyData = 177, 252, 228, 64, 28, 91, 12, 201, 20, 91, 21, 139, 255, 65, 9, 247, 41, 55, 164, 28, 75, 132, 143, 71, 62, 191, 211, 61, 154, 61, 216, 91 $secret="76492d1116743f0423413b16050a5345MgB8AGkAcwBDACsAUwArADIAcABRAEcARABnAGYAMwA3AEEAcgBFAEIAYQB2AEEAPQA9AHwAZQAwADgANAA2ADQAMABiADYANAAwADYANgA1ADcANgAxAGIAMQBhAGQANQBlAGYAYQBiADQAYQA2ADkAZgBlAGQAMQAzADAANQAyADUAMgAyADYANAA3ADAAZABiAGEAOAA0AGUAOQBkAGMAZABmAGEANAAyADkAZgAyADIAMwA=" -# T.L. \ No newline at end of file +# T.L. diff --git a/ad/GOAD-Light/files/srv02/all/arya.txt b/ad/GOAD-Light/files/srv02/all/arya.txt index b969c909..80c1d728 100644 --- a/ad/GOAD-Light/files/srv02/all/arya.txt +++ b/ad/GOAD-Light/files/srv02/all/arya.txt @@ -9,4 +9,4 @@ I left a little surprise for you in your room – the sword You've named "Needle I'll explain everything when I return. Until then, stay sharp, sis. Best, -John \ No newline at end of file +John diff --git a/ad/GOAD-Light/files/srv02/wwwroot/Default.aspx b/ad/GOAD-Light/files/srv02/wwwroot/Default.aspx index a1525242..4d1e5eb2 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/Default.aspx +++ b/ad/GOAD-Light/files/srv02/wwwroot/Default.aspx @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/Web.config b/ad/GOAD-Light/files/srv02/wwwroot/Web.config index 7cef9000..1774c7c6 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/Web.config +++ b/ad/GOAD-Light/files/srv02/wwwroot/Web.config @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets index d11c0950..2fc5cff1 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets @@ -132,4 +132,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets index ec8412cd..8c030078 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets @@ -9,12 +9,12 @@ - @@ -77,7 +77,7 @@ InitializeSourceControlInformation is an msbuild target that ensures the SourceRoot items are populated from source control. The target is available only if SourceControlInformationFeatureSupported is true. - A consumer of SourceRoot.MappedPath metadata, such as Source Link generator, shall depend on this target. + A consumer of SourceRoot.MappedPath metadata, such as Source Link generator, shall depend on this target. --> - true - - @(_TopLevelSourceRoot->'%(Identity)=%(MappedPath)', ',')$(PathMap) - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets index 66be6638..61906358 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets @@ -129,4 +129,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config index cb91c083..dffe88bf 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config @@ -141,8 +141,8 @@ - - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csc.exe.config b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csc.exe.config index f20b6672..3dc92280 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csc.exe.config +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csc.exe.config @@ -140,4 +140,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csc.rsp b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csc.rsp index be7661d0..cc27aa68 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csc.rsp +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csc.rsp @@ -3,7 +3,7 @@ # This file contains command-line options that the C# # command line compiler (CSC) will process as part # of every compilation, unless the "/noconfig" option -# is specified. +# is specified. # Reference the common Framework libraries /r:Accessibility.dll diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csi.exe.config b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csi.exe.config index b0b9864b..7ae4aa49 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csi.exe.config +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csi.exe.config @@ -150,4 +150,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csi.rsp b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csi.rsp index 6089f39f..91188541 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csi.rsp +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/csi.rsp @@ -11,4 +11,4 @@ /u:System.Linq /u:System.Linq.Expressions /u:System.Text -/u:System.Threading.Tasks \ No newline at end of file +/u:System.Threading.Tasks diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/vbc.exe.config b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/vbc.exe.config index f20b6672..3dc92280 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/vbc.exe.config +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/vbc.exe.config @@ -140,4 +140,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/vbc.rsp b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/vbc.rsp index 52b4cace..5a7d9090 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/vbc.rsp +++ b/ad/GOAD-Light/files/srv02/wwwroot/bin/roslyn/vbc.rsp @@ -3,7 +3,7 @@ # This file contains command-line options that the VB # command line compiler (VBC) will process as part # of every compilation, unless the "/noconfig" option -# is specified. +# is specified. # Reference the common Framework libraries /r:Accessibility.dll diff --git a/ad/GOAD-Light/files/srv02/wwwroot/index.html b/ad/GOAD-Light/files/srv02/wwwroot/index.html index cd15e496..888e3f86 100644 --- a/ad/GOAD-Light/files/srv02/wwwroot/index.html +++ b/ad/GOAD-Light/files/srv02/wwwroot/index.html @@ -4,4 +4,4 @@

Please follow this link to upload your files.

- \ No newline at end of file + diff --git a/ad/GOAD-Light/providers/aws/inventory b/ad/GOAD-Light/providers/aws/inventory index c177355c..e1828f71 100644 --- a/ad/GOAD-Light/providers/aws/inventory +++ b/ad/GOAD-Light/providers/aws/inventory @@ -12,4 +12,4 @@ dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 ansible_user=ans srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 ansible_user=ansible ansible_password=NgtI75cKV+Pu [all:vars] -admin_user=goadmin \ No newline at end of file +admin_user=goadmin diff --git a/ad/GOAD-Light/providers/aws/linux.tf b/ad/GOAD-Light/providers/aws/linux.tf index 9d0c1b07..30023f4c 100644 --- a/ad/GOAD-Light/providers/aws/linux.tf +++ b/ad/GOAD-Light/providers/aws/linux.tf @@ -6,4 +6,4 @@ # private_ip_address = "{{ip_range}}.40" # password = "suppaP@ssw0rd$" # size = "t2.medium" -# } \ No newline at end of file +# } diff --git a/ad/GOAD-Light/providers/aws/windows.tf b/ad/GOAD-Light/providers/aws/windows.tf index 19687a44..19bbab25 100644 --- a/ad/GOAD-Light/providers/aws/windows.tf +++ b/ad/GOAD-Light/providers/aws/windows.tf @@ -1,3 +1,7 @@ +# NOTE: AMI IDs below are region-specific (originally eu-west-1). +# Replace with AMI IDs for your target AWS region. +# See: https://aws.amazon.com/marketplace for Windows Server base AMIs + "dc01" = { name = "dc01" domain = "sevenkingdoms.local" @@ -24,4 +28,4 @@ instance_type = "t2.medium" private_ip_address = "{{ip_range}}.22" password = "NgtI75cKV+Pu" -} \ No newline at end of file +} diff --git a/ad/GOAD-Light/providers/azure/inventory b/ad/GOAD-Light/providers/azure/inventory index c177355c..e1828f71 100644 --- a/ad/GOAD-Light/providers/azure/inventory +++ b/ad/GOAD-Light/providers/azure/inventory @@ -12,4 +12,4 @@ dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 ansible_user=ans srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 ansible_user=ansible ansible_password=NgtI75cKV+Pu [all:vars] -admin_user=goadmin \ No newline at end of file +admin_user=goadmin diff --git a/ad/GOAD-Light/providers/ludus/inventory b/ad/GOAD-Light/providers/ludus/inventory index f8da1c20..957e0561 100644 --- a/ad/GOAD-Light/providers/ludus/inventory +++ b/ad/GOAD-Light/providers/ludus/inventory @@ -16,4 +16,4 @@ dns_server={{ip_range}}.254 dns_server_forwarder={{ip_range}}.254 ansible_user=localuser -ansible_password=password \ No newline at end of file +ansible_password=password diff --git a/ad/GOAD-Light/providers/proxmox/inventory b/ad/GOAD-Light/providers/proxmox/inventory index e27173d0..dd92d511 100644 --- a/ad/GOAD-Light/providers/proxmox/inventory +++ b/ad/GOAD-Light/providers/proxmox/inventory @@ -11,4 +11,4 @@ srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 [all:vars] force_dns_server=yes -dns_server={{ip_range}}.1 \ No newline at end of file +dns_server={{ip_range}}.1 diff --git a/ad/GOAD-Light/providers/proxmox/windows.tf b/ad/GOAD-Light/providers/proxmox/windows.tf index 264e4adf..c5773755 100644 --- a/ad/GOAD-Light/providers/proxmox/windows.tf +++ b/ad/GOAD-Light/providers/proxmox/windows.tf @@ -27,4 +27,4 @@ dns = "{{ip_range}}.1" ip = "{{ip_range}}.22/24" gateway = "{{ip_range}}.1" -} \ No newline at end of file +} diff --git a/ad/GOAD-Light/providers/virtualbox/Vagrantfile b/ad/GOAD-Light/providers/virtualbox/Vagrantfile index c34d26aa..ceb4a111 100644 --- a/ad/GOAD-Light/providers/virtualbox/Vagrantfile +++ b/ad/GOAD-Light/providers/virtualbox/Vagrantfile @@ -5,4 +5,4 @@ boxes = [ { :name => "GOAD-Light-DC02", :ip => "{{ip_range}}.11", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, # windows server 2019 { :name => "GOAD-Light-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000}, -] \ No newline at end of file +] diff --git a/ad/GOAD-Light/providers/vmware/Vagrantfile b/ad/GOAD-Light/providers/vmware/Vagrantfile index f3cc6524..ecaeb5d6 100644 --- a/ad/GOAD-Light/providers/vmware/Vagrantfile +++ b/ad/GOAD-Light/providers/vmware/Vagrantfile @@ -5,4 +5,4 @@ boxes = [ { :name => "GOAD-Light-DC02", :ip => "{{ip_range}}.11", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, # windows server 2019 { :name => "GOAD-Light-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000} -] \ No newline at end of file +] diff --git a/ad/GOAD-Light/providers/vmware_esxi/Vagrantfile b/ad/GOAD-Light/providers/vmware_esxi/Vagrantfile index f3cc6524..ecaeb5d6 100644 --- a/ad/GOAD-Light/providers/vmware_esxi/Vagrantfile +++ b/ad/GOAD-Light/providers/vmware_esxi/Vagrantfile @@ -5,4 +5,4 @@ boxes = [ { :name => "GOAD-Light-DC02", :ip => "{{ip_range}}.11", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, # windows server 2019 { :name => "GOAD-Light-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000} -] \ No newline at end of file +] diff --git a/ad/GOAD-Light/scripts/archive/acl.ps1 b/ad/GOAD-Light/scripts/archive/acl.ps1 index 62fadc05..0c5d777d 100644 --- a/ad/GOAD-Light/scripts/archive/acl.ps1 +++ b/ad/GOAD-Light/scripts/archive/acl.ps1 @@ -54,7 +54,7 @@ Function SetAclExtended($for, $to, $right, $extendedRightGUID, $inheritance) # Synchronize # WriteDacl # WriteOwner -# WriteProperty +# WriteProperty ## extend rights # "00299570-246d-11d0-a768-00aa006e0529" {$right = "User-Force-Change-Password"} diff --git a/ad/GOAD-Light/scripts/archive/anonymous_ldap.ps1 b/ad/GOAD-Light/scripts/archive/anonymous_ldap.ps1 index 791b9b14..250631ea 100644 --- a/ad/GOAD-Light/scripts/archive/anonymous_ldap.ps1 +++ b/ad/GOAD-Light/scripts/archive/anonymous_ldap.ps1 @@ -3,4 +3,4 @@ $secInheritanceAll = [System.DirectoryServices.ActiveDirectorySecurityInheritanc $Ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $anonymousId,"ReadProperty, GenericExecute","Allow",$secInheritanceAll $Acl = Get-Acl -Path "AD:$($node.DCPathEnd)" $Acl.AddAccessRule($Ace) -Set-Acl -Path "AD:$($node.DCPathEnd)" -AclObject $Acl \ No newline at end of file +Set-Acl -Path "AD:$($node.DCPathEnd)" -AclObject $Acl diff --git a/ad/GOAD-Light/scripts/archive/kerberoasting.ps1 b/ad/GOAD-Light/scripts/archive/kerberoasting.ps1 index 131caa69..506968cb 100644 --- a/ad/GOAD-Light/scripts/archive/kerberoasting.ps1 +++ b/ad/GOAD-Light/scripts/archive/kerberoasting.ps1 @@ -1 +1 @@ -Set-ADUser -Identity "jon.snow" -ServicePrincipalNames @{Add='HTTP/thewallserver'} \ No newline at end of file +Set-ADUser -Identity "jon.snow" -ServicePrincipalNames @{Add='HTTP/thewallserver'} diff --git a/ad/GOAD-Light/scripts/archive/rbcd.ps1 b/ad/GOAD-Light/scripts/archive/rbcd.ps1 index f87f5c14..46409041 100644 --- a/ad/GOAD-Light/scripts/archive/rbcd.ps1 +++ b/ad/GOAD-Light/scripts/archive/rbcd.ps1 @@ -1 +1 @@ -# TODO \ No newline at end of file +# TODO diff --git a/ad/GOAD-Light/scripts/archive/unconstrained_delegation.ps1 b/ad/GOAD-Light/scripts/archive/unconstrained_delegation.ps1 index 8c7b15aa..b853bb37 100644 --- a/ad/GOAD-Light/scripts/archive/unconstrained_delegation.ps1 +++ b/ad/GOAD-Light/scripts/archive/unconstrained_delegation.ps1 @@ -1 +1 @@ -Get-ADComputer -Identity "bravoos" | Set-ADAccountControl -TrustedForDelegation $true \ No newline at end of file +Get-ADComputer -Identity "bravoos" | Set-ADAccountControl -TrustedForDelegation $true diff --git a/ad/GOAD-Light/scripts/asrep_roasting.ps1 b/ad/GOAD-Light/scripts/asrep_roasting.ps1 index 2ff45f93..68e03529 100644 --- a/ad/GOAD-Light/scripts/asrep_roasting.ps1 +++ b/ad/GOAD-Light/scripts/asrep_roasting.ps1 @@ -1 +1 @@ -Get-ADUser -Identity "brandon.stark" | Set-ADAccountControl -DoesNotRequirePreAuth:$true \ No newline at end of file +Get-ADUser -Identity "brandon.stark" | Set-ADAccountControl -DoesNotRequirePreAuth:$true diff --git a/ad/GOAD-Light/scripts/constrained_delegation_kerb_only.ps1 b/ad/GOAD-Light/scripts/constrained_delegation_kerb_only.ps1 index e212289d..27771189 100644 --- a/ad/GOAD-Light/scripts/constrained_delegation_kerb_only.ps1 +++ b/ad/GOAD-Light/scripts/constrained_delegation_kerb_only.ps1 @@ -1,4 +1,4 @@ # https://www.thehacker.recipes/ad/movement/kerberos/delegations/constrained#without-protocol-transition Set-ADComputer -Identity "castelblack$" -ServicePrincipalNames @{Add='HTTP/winterfell.north.sevenkingdoms.local'} Set-ADComputer -Identity "castelblack$" -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/winterfell.north.sevenkingdoms.local','HTTP/winterfell')} -# Set-ADComputer -Identity "castelblack$" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/winterfell.north.sevenkingdoms.local','CIFS/winterfell')} \ No newline at end of file +# Set-ADComputer -Identity "castelblack$" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/winterfell.north.sevenkingdoms.local','CIFS/winterfell')} diff --git a/ad/GOAD-Light/scripts/constrained_delegation_use_any.ps1 b/ad/GOAD-Light/scripts/constrained_delegation_use_any.ps1 index fc2c359e..4d33697d 100644 --- a/ad/GOAD-Light/scripts/constrained_delegation_use_any.ps1 +++ b/ad/GOAD-Light/scripts/constrained_delegation_use_any.ps1 @@ -1,4 +1,4 @@ # https://www.thehacker.recipes/ad/movement/kerberos/delegations/constrained#with-protocol-transition Set-ADUser -Identity "jon.snow" -ServicePrincipalNames @{Add='CIFS/winterfell.north.sevenkingdoms.local'} Get-ADUser -Identity "jon.snow" | Set-ADAccountControl -TrustedToAuthForDelegation $true -Set-ADUser -Identity "jon.snow" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/winterfell.north.sevenkingdoms.local','CIFS/winterfell')} \ No newline at end of file +Set-ADUser -Identity "jon.snow" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/winterfell.north.sevenkingdoms.local','CIFS/winterfell')} diff --git a/ad/GOAD-Light/scripts/gpo_abuse.ps1 b/ad/GOAD-Light/scripts/gpo_abuse.ps1 index 22968d45..5a008ee4 100644 --- a/ad/GOAD-Light/scripts/gpo_abuse.ps1 +++ b/ad/GOAD-Light/scripts/gpo_abuse.ps1 @@ -22,4 +22,4 @@ if ($gpo_exist) { # Allow samwell.tarly to Edit Settings of the GPO # https://learn.microsoft.com/en-us/powershell/module/grouppolicy/set-gppermission?view=windowsserver2022-ps Set-GPPermissions -Name "StarkWallpaper" -PermissionLevel GpoEditDeleteModifySecurity -TargetName "samwell.tarly" -TargetType "User" -} \ No newline at end of file +} diff --git a/ad/GOAD-Light/scripts/rdp_scheduler.ps1 b/ad/GOAD-Light/scripts/rdp_scheduler.ps1 index 100b4acd..b282ac66 100644 --- a/ad/GOAD-Light/scripts/rdp_scheduler.ps1 +++ b/ad/GOAD-Light/scripts/rdp_scheduler.ps1 @@ -12,4 +12,4 @@ $taskExists = Get-ScheduledTask | Where-Object {$_.TaskName -like $taskName } if($taskExists) { Unregister-ScheduledTask -TaskName $taskName -Confirm:$false } -Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $user -Password $password -Settings $settings \ No newline at end of file +Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $user -Password $password -Settings $settings diff --git a/ad/GOAD-Mini/README.md b/ad/GOAD-Mini/README.md index 536491bf..a741f6f3 100644 --- a/ad/GOAD-Mini/README.md +++ b/ad/GOAD-Mini/README.md @@ -1,3 +1,3 @@ # MINIGOAD -Minimal lab with only sevenkingdoms.local domain and kingslanding DC, no more \ No newline at end of file +Minimal lab with only sevenkingdoms.local domain and kingslanding DC, no more diff --git a/ad/GOAD-Mini/data/config.json b/ad/GOAD-Mini/data/config.json index 8ad75f5e..e61a9434 100644 --- a/ad/GOAD-Mini/data/config.json +++ b/ad/GOAD-Mini/data/config.json @@ -22,7 +22,7 @@ "vulns" : ["disable_firewall", "directory", "files", "adcs_templates"], "vulns_vars" : { "directory": { - "setup": "c:\\setup" + "setup": "C:\\setup" }, "files" : { "template" : { @@ -209,4 +209,4 @@ } } } -}} \ No newline at end of file +}} diff --git a/ad/GOAD-Mini/data/inventory b/ad/GOAD-Mini/data/inventory index f592874e..48fedf26 100644 --- a/ad/GOAD-Mini/data/inventory +++ b/ad/GOAD-Mini/data/inventory @@ -32,7 +32,7 @@ ad_https_proxy=http://x.x.x.x:xxxx [domain] dc01 -; domain controler (mandatory) +; domain controller (mandatory) ; usage : ad-acl.yml, ad-data.yml, ad-relations.yml, laps.yml [dc] dc01 @@ -45,12 +45,12 @@ dc01 ; usage : ad-servers.yml, laps.yml [workstation] -; parent domain controler (mandatory) +; parent domain controller (mandatory) ; usage : ad-servers.yml [parent_dc] dc01 -; child domain controler (need a fqdn child_name.parent_name) +; child domain controller (need a fqdn child_name.parent_name) ; usage : ad-servers.yml [child_dc] @@ -79,7 +79,7 @@ dc01 ; usage : servers.yml [mssql_ssms] -; install webdav +; install webdav [webdav] ; install elk diff --git a/ad/GOAD-Mini/files/dc01/templates/ESC1.json b/ad/GOAD-Mini/files/dc01/templates/ESC1.json index a102696d..eb8ab551 100644 Binary files a/ad/GOAD-Mini/files/dc01/templates/ESC1.json and b/ad/GOAD-Mini/files/dc01/templates/ESC1.json differ diff --git a/ad/GOAD-Mini/providers/aws/inventory b/ad/GOAD-Mini/providers/aws/inventory index e9c26b71..a4baec51 100644 --- a/ad/GOAD-Mini/providers/aws/inventory +++ b/ad/GOAD-Mini/providers/aws/inventory @@ -7,4 +7,4 @@ dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 ansible_user=ansible ansible_password=8dCT-DJjgScp [all:vars] -admin_user=goadmin \ No newline at end of file +admin_user=goadmin diff --git a/ad/GOAD-Mini/providers/aws/linux.tf b/ad/GOAD-Mini/providers/aws/linux.tf index 9d0c1b07..4510711b 100644 --- a/ad/GOAD-Mini/providers/aws/linux.tf +++ b/ad/GOAD-Mini/providers/aws/linux.tf @@ -1,3 +1,7 @@ +# NOTE: AMI IDs below are region-specific (originally eu-west-1). +# Replace with AMI IDs for your target AWS region. +# See: https://aws.amazon.com/marketplace for Windows Server base AMIs + # "lx01" = { # name = "lx01" # linux_sku = "22_04-lts-gen2" @@ -6,4 +10,4 @@ # private_ip_address = "{{ip_range}}.40" # password = "suppaP@ssw0rd$" # size = "t2.medium" -# } \ No newline at end of file +# } diff --git a/ad/GOAD-Mini/providers/aws/windows.tf b/ad/GOAD-Mini/providers/aws/windows.tf index e167c489..b018c10b 100644 --- a/ad/GOAD-Mini/providers/aws/windows.tf +++ b/ad/GOAD-Mini/providers/aws/windows.tf @@ -1,3 +1,7 @@ +# NOTE: AMI IDs below are region-specific (originally eu-west-1). +# Replace with AMI IDs for your target AWS region. +# See: https://aws.amazon.com/marketplace for Windows Server base AMIs + "dc01" = { name = "dc01" domain = "sevenkingdoms.local" @@ -6,4 +10,4 @@ instance_type = "t2.medium" private_ip_address = "{{ip_range}}.10" password = "8dCT-DJjgScp" -} \ No newline at end of file +} diff --git a/ad/GOAD-Mini/providers/azure/inventory b/ad/GOAD-Mini/providers/azure/inventory index e9c26b71..a4baec51 100644 --- a/ad/GOAD-Mini/providers/azure/inventory +++ b/ad/GOAD-Mini/providers/azure/inventory @@ -7,4 +7,4 @@ dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 ansible_user=ansible ansible_password=8dCT-DJjgScp [all:vars] -admin_user=goadmin \ No newline at end of file +admin_user=goadmin diff --git a/ad/GOAD-Mini/providers/ludus/inventory b/ad/GOAD-Mini/providers/ludus/inventory index c2978359..e18351ce 100644 --- a/ad/GOAD-Mini/providers/ludus/inventory +++ b/ad/GOAD-Mini/providers/ludus/inventory @@ -11,4 +11,4 @@ dns_server={{ip_range}}.254 dns_server_forwarder={{ip_range}}.254 ansible_user=localuser -ansible_password=password \ No newline at end of file +ansible_password=password diff --git a/ad/GOAD-Mini/providers/proxmox/inventory b/ad/GOAD-Mini/providers/proxmox/inventory index 09e3dec6..ecd651a0 100644 --- a/ad/GOAD-Mini/providers/proxmox/inventory +++ b/ad/GOAD-Mini/providers/proxmox/inventory @@ -6,4 +6,4 @@ dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 [all:vars] force_dns_server=yes -dns_server={{ip_range}}.1 \ No newline at end of file +dns_server={{ip_range}}.1 diff --git a/ad/GOAD-Mini/providers/proxmox/windows.tf b/ad/GOAD-Mini/providers/proxmox/windows.tf index 4485b19f..bac742ec 100644 --- a/ad/GOAD-Mini/providers/proxmox/windows.tf +++ b/ad/GOAD-Mini/providers/proxmox/windows.tf @@ -7,4 +7,4 @@ dns = "{{ip_range}}.1" ip = "{{ip_range}}.10/24" gateway = "{{ip_range}}.1" -} \ No newline at end of file +} diff --git a/ad/GOAD-Mini/providers/virtualbox/Vagrantfile b/ad/GOAD-Mini/providers/virtualbox/Vagrantfile index 0bb05e70..62f57d27 100644 --- a/ad/GOAD-Mini/providers/virtualbox/Vagrantfile +++ b/ad/GOAD-Mini/providers/virtualbox/Vagrantfile @@ -1,4 +1,4 @@ boxes = [ # windows server 2019 { :name => "GOAD-Mini-DC01", :ip => "{{ip_range}}.10", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000} -] \ No newline at end of file +] diff --git a/ad/GOAD-Mini/providers/vmware/Vagrantfile b/ad/GOAD-Mini/providers/vmware/Vagrantfile index 0bb05e70..62f57d27 100644 --- a/ad/GOAD-Mini/providers/vmware/Vagrantfile +++ b/ad/GOAD-Mini/providers/vmware/Vagrantfile @@ -1,4 +1,4 @@ boxes = [ # windows server 2019 { :name => "GOAD-Mini-DC01", :ip => "{{ip_range}}.10", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000} -] \ No newline at end of file +] diff --git a/ad/GOAD-Mini/providers/vmware_esxi/Vagrantfile b/ad/GOAD-Mini/providers/vmware_esxi/Vagrantfile index 0bb05e70..62f57d27 100644 --- a/ad/GOAD-Mini/providers/vmware_esxi/Vagrantfile +++ b/ad/GOAD-Mini/providers/vmware_esxi/Vagrantfile @@ -1,4 +1,4 @@ boxes = [ # windows server 2019 { :name => "GOAD-Mini-DC01", :ip => "{{ip_range}}.10", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000} -] \ No newline at end of file +] diff --git a/ad/GOAD-variant-1/README.md b/ad/GOAD-variant-1/README.md new file mode 100644 index 00000000..d32015b5 --- /dev/null +++ b/ad/GOAD-variant-1/README.md @@ -0,0 +1,42 @@ +# GOAD VARIANT-1 + +This is a graph-isomorphic variant of the GOAD (Game of Active Directory) lab environment. + +## About This Variant + +- **All entity names have been randomized** while preserving the complete structure +- **Attack paths remain identical** to the original GOAD +- **All vulnerabilities preserved** with the same relationships +- **All 7 provider configs included**: VirtualBox, VMware, VMware ESXi, Proxmox, AWS, Azure, Ludus + +## Structure + +- **3 domains** with parent-child and trust relationships +- **5 VMs**: 3 Domain Controllers, 2 Servers +- **40+ users** with randomized names +- **18+ groups**, **8 OUs**, **20+ ACLs** + +## Usage + +Deploy exactly like the original GOAD: + +```bash +# Navigate to provider directory +cd providers/virtualbox # or vmware, proxmox, aws, azure, ludus + +# Follow provider-specific setup instructions +# Provisioning works identically to GOAD +``` + +## Mapping Reference + +See `mapping.json` for the complete entity mapping from GOAD to this variant. + +## Purpose + +This variant allows: + +- **Multiple lab instances** without name conflicts +- **Training scenarios** with fresh environments +- **Testing automation** against different entity names +- **Validation** that tools work beyond hardcoded names diff --git a/ad/GOAD-variant-1/data/config.json b/ad/GOAD-variant-1/data/config.json new file mode 100644 index 00000000..78c4b6a4 --- /dev/null +++ b/ad/GOAD-variant-1/data/config.json @@ -0,0 +1,934 @@ +{ + "lab": { + "hosts": { + "dc01": { + "hostname": "guardian-app", + "type": "dc", + "local_admin_password": "m798_WN0mbDFKFv)>szo", + "domain": "deltasystems.local", + "path": "DC=deltasystems,DC=local", + "local_groups": { + "Administrators": [ + "deltasystems\\eric.flores", + "deltasystems\\stephanie2.hughes", + "deltasystems\\AdministrationSquad2" + ], + "Remote Desktop Users": [ + "deltasystems\\ServicesTeam", + "deltasystems\\ExecutiveUnit" + ] + }, + "scripts": [ + "sidhistory.ps1" + ], + "vulns": [ + "disable_firewall" + ], + "security": [ + "account_is_sensitive", + "audit_policy" + ], + "security_vars": { + "account_is_sensitive": { + "michelle": { + "account": "michelle.mitchell" + } + } + } + }, + "dc02": { + "hostname": "beacon", + "type": "dc", + "local_admin_password": "xYK7tDxi:+PSp(AS;>=%", + "domain": "hq.deltasystems.local", + "path": "DC=hq,DC=deltasystems,DC=local", + "local_groups": { + "Administrators": [ + "hq\\william.wood", + "hq\\anna.erics", + "hq\\catherine2.ramos" + ], + "Remote Desktop Users": [ + "hq\\Operations" + ] + }, + "scripts": [ + "asrep_roasting.ps1", + "constrained_delegation_use_any.ps1", + "constrained_delegation_kerb_only.ps1", + "ntlm_relay.ps1", + "responder.ps1", + "gpo_abuse.ps1", + "rdp_scheduler.ps1" + ], + "vulns": [ + "disable_firewall", + "directory", + "credentials", + "autologon", + "files", + "enable_llmnr", + "enable_nbt_ns", + "shares" + ], + "vulns_vars": { + "directory": { + "setup": "C:\\setup" + }, + "credentials": { + "TERMSRV/summit": { + "username": "hq\\catherine2.ramos", + "secret": "plyfvjuqn", + "runas": "hq\\catherine2.ramos", + "runas_password": "plyfvjuqn" + } + }, + "autologon": { + "catherine2.ramos": { + "username": "hq\\catherine2.ramos", + "password": "plyfvjuqn" + } + }, + "files": { + "rdp": { + "src": "dc02/bot_rdp.ps1", + "dest": "C:\\setup\\bot_rdp.ps1" + }, + "sysvol_fake_script": { + "src": "dc02/sysvol_scripts/script.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\script.ps1" + }, + "sysvol_secret": { + "src": "dc02/sysvol_scripts/secret.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\secret.ps1" + } + } + }, + "security": [ + "audit_policy" + ] + }, + "srv02": { + "hostname": "summit", + "type": "server", + "local_admin_password": "xYK7tDxi:+PSp(AS;>=%", + "domain": "hq.deltasystems.local", + "path": "DC=hq,DC=deltasystems,DC=local", + "use_laps": false, + "local_groups": { + "Administrators": [ + "hq\\brenda.lee" + ], + "Remote Desktop Users": [ + "hq\\Systems", + "hq\\LeadershipSquad", + "hq\\Operations" + ] + }, + "scripts": [], + "vulns": [ + "directory", + "disable_firewall", + "openshares", + "files", + "permissions" + ], + "vulns_vars": { + "directory": { + "shares": "C:\\shares", + "all": "C:\\shares\\all" + }, + "files": { + "website": { + "src": "srv02/wwwroot", + "dest": "C:\\inetpub\\" + }, + "letter_in_shares": { + "src": "srv02/all/pamela2.txt", + "dest": "C:\\shares\\all\\pamela2.txt" + } + }, + "permissions": { + "IIS_IUSRS_upload": { + "path": "C:\\inetpub\\wwwroot\\upload", + "user": "IIS_IUSRS", + "rights": "FullControl" + } + } + }, + "mssql": { + "sa_password": "6q_E@9Bk]^|LolaX9", + "svcaccount": "sql_svc", + "sysadmins": [ + "HQ\\christine.martin" + ], + "executeaslogin": { + "HQ\\stephanie.williams": "sa", + "HQ\\alexander.peterson": "HQ\\christine.martin" + }, + "executeasuser": { + "pamela2_master_dbo": { + "user": "HQ\\pamela2.rogers", + "db": "master", + "impersonate": "dbo" + }, + "pamela2_dbms_dbo": { + "user": "HQ\\pamela2.rogers", + "db": "msdb", + "impersonate": "dbo" + } + }, + "linked_servers": { + "TITAN": { + "data_src": "titan.vortexindustries.local", + "users_mapping": [ + { + "local_login": "HQ\\christine.martin", + "remote_login": "sa", + "remote_password": "ZX8HtJQcV!kom[5L]" + } + ] + } + } + } + }, + "dc03": { + "hostname": "beacon-app", + "type": "dc", + "local_admin_password": "^$1N+]GIm4s1smahoB_]", + "domain": "vortexindustries.local", + "path": "DC=vortexindustries,DC=local", + "local_groups": { + "Administrators": [ + "vortexind\\kenneth.carter" + ], + "Remote Desktop Users": [ + "vortexind\\OperationsStaff" + ] + }, + "scripts": [ + "asrep_roasting2.ps1" + ], + "vulns": [ + "ntlmdowngrade", + "disable_firewall" + ], + "security": [ + "audit_policy" + ] + }, + "srv03": { + "hostname": "titan", + "type": "server", + "local_admin_password": "^$1N+]GIm4s1smahoB_]", + "domain": "vortexindustries.local", + "path": "DC=vortexindustries,DC=local", + "use_laps": true, + "local_groups": { + "Administrators": [ + "vortexind\\pamela.clark" + ] + }, + "Remote Desktop Users": [ + "vortexind\\SupportGroup" + ], + "scripts": [], + "vulns": [ + "openshares", + "disable_firewall" + ], + "security": [ + "enable_run_as_ppl" + ], + "mssql": { + "sa_password": "ZX8HtJQcV!kom[5L]", + "svcaccount": "sql_svc", + "sysadmins": [ + "VORTEXIND\\pamela.clark" + ], + "executeaslogin": { + "VORTEXIND\\catherine.turner": "sa" + }, + "executeasuser": {}, + "linked_servers": { + "SUMMIT": { + "data_src": "summit.hq.deltasystems.local", + "users_mapping": [ + { + "local_login": "VORTEXIND\\pamela.clark", + "remote_login": "sa", + "remote_password": "6q_E@9Bk]^|LolaX9" + } + ] + } + } + } + } + }, + "domains": { + "vortexindustries.local": { + "dc": "dc03", + "domain_password": "^$1N+]GIm4s1smahoB_]", + "netbios_name": "VORTEXIND", + "ca_server": "Titan", + "trust": "deltasystems.local", + "laps_path": "OU=Laps,DC=vortexindustries,DC=local", + "organisation_units": {}, + "laps_readers": [ + "catherine.turner", + "SupportSquad" + ], + "groups": { + "universal": {}, + "global": { + "OperationsStaff": { + "managed_by": "charles.walker", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "SupportGroup": { + "managed_by": "pamela.clark", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "AdministrationGroup": { + "managed_by": "goadmin", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "Services": { + "managed_by": "goadmin", + "path": "CN=Users,DC=vortexindustries,DC=local", + "members": [ + "VORTEXIND\\AdministrationGroup" + ] + }, + "Domain Admins": { + "managed_by": "goadmin", + "path": "CN=Users,DC=vortexindustries,DC=local", + "members": [ + "VORTEXIND\\Services" + ] + } + }, + "domainlocal": { + "AdministrationSquad": { + "managed_by": "kenneth.carter", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "SupportSquad": { + "path": "CN=Users,DC=vortexindustries,DC=local" + } + } + }, + "multi_domain_groups_member": { + "AdministrationSquad": [ + "deltasystems.local\\christine2.martin2", + "vortexindustries.local\\kenneth.carter" + ], + "SupportSquad": [ + "deltasystems.local\\ServicesTeam" + ] + }, + "gmsa": { + "gmsa_account": { + "gMSA_Name": "gmsaFalcon", + "gMSA_FQDN": "gmsaFalcon.vortexindustries.local", + "gMSA_SPNs": [ + "HTTP/titan", + "HTTP/titan.vortexindustries.local" + ], + "gMSA_HostNames": [ + "titan" + ] + } + }, + "acls": { + "GenericAll_pamela.clark_charles.walker": { + "for": "pamela.clark", + "to": "charles.walker", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_supportsquad_catherine.turner": { + "for": "SupportSquad", + "to": "catherine.turner", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela.clark_esc4": { + "for": "pamela.clark", + "to": "CN=ESC4,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=vortexindustries,DC=local", + "right": "GenericAll", + "inheritance": "None" + }, + "WriteProperty_charles.walker_catherine.turner": { + "for": "charles.walker", + "to": "catherine.turner", + "right": "WriteProperty", + "inheritance": "All" + }, + "GenericWrite_administrationsquad_titan$": { + "for": "AdministrationSquad", + "to": "titan$", + "right": "GenericWrite", + "inheritance": "None" + }, + "GenericAll_susan.white_pamela.clark": { + "for": "susan.white", + "to": "pamela.clark", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_gmsafalcon$_shirley.gonzalez": { + "for": "gmsaFalcon$", + "to": "shirley.gonzalez", + "right": "GenericAll", + "inheritance": "None" + } + }, + "users": { + "kenneth.carter": { + "firstname": "kenneth", + "surname": "carter", + "password": "Av^MO$q>t)=%", + "netbios_name": "HQ", + "trust": "", + "laps_path": "OU=Laps,DC=hq,DC=deltasystems,DC=local", + "organisation_units": {}, + "groups": { + "universal": {}, + "global": { + "Operations": { + "managed_by": "william.wood", + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "Systems": { + "managed_by": "brenda.lee", + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "LeadershipSquad": { + "managed_by": "brenda.lee", + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + } + }, + "domainlocal": { + "PlatformUnit": { + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + } + } + }, + "multi_domain_groups_member": {}, + "acls": { + "anonymous_rpc": { + "for": "NT AUTHORITY\\ANONYMOUS LOGON", + "to": "DC=Hq,DC=deltasystems,DC=local", + "right": "ReadProperty", + "inheritance": "All" + }, + "anonymous_rpc2": { + "for": "NT AUTHORITY\\ANONYMOUS LOGON", + "to": "DC=Hq,DC=deltasystems,DC=local", + "right": "GenericExecute", + "inheritance": "All" + } + }, + "users": { + "pamela2.rogers": { + "firstname": "pamela2", + "surname": "rogers", + "password": "heNvyj", + "city": "Dallas", + "description": "Pamela2 Rogers", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "william.wood": { + "firstname": "william", + "surname": "wood", + "password": "*x-Iz", + "city": "Phoenix", + "description": "William Wood", + "groups": [ + "Operations", + "Domain Admins" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "anna.erics": { + "firstname": "anna", + "surname": "erics", + "password": "uejpqnidxtnoehjdwbtsqaztl", + "city": "Phoenix", + "description": "Anna Erics", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "catherine2.ramos": { + "firstname": "catherine2", + "surname": "ramos", + "password": "plyfvjuqn", + "city": "Dallas", + "description": "Catherine2 Ramos", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "ryan.myers": { + "firstname": "ryan", + "surname": "myers", + "password": "si4q5iagz", + "city": "Dallas", + "description": "Ryan Myers", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "HTTP/eyrie.hq.deltasystems.local" + ] + }, + "alexander.peterson": { + "firstname": "alexander", + "surname": "peterson", + "password": "wlrucscdadzooz", + "city": "Dallas", + "description": "Alexander Peterson", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "laura.campbell": { + "firstname": "laura", + "surname": "campbell", + "password": "MTmya1uW0b", + "city": "Dallas", + "description": "Laura Campbell", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "emily.baker": { + "firstname": "emily", + "surname": "baker", + "password": "jqfay", + "city": "Dallas", + "description": "Emily Baker", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "christine.martin": { + "firstname": "christine", + "surname": "martin", + "password": "ddlfwkwdemov", + "city": "Denver", + "description": "Christine Martin", + "groups": [ + "Operations", + "Systems" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "HTTP/thewall.hq.deltasystems.local" + ] + }, + "stephanie.williams": { + "firstname": "stephanie", + "surname": "williams", + "password": "JUHTgaxCdT", + "city": "Denver", + "description": "Stephanie Williams", + "groups": [ + "Systems" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "brenda.lee": { + "firstname": "brenda", + "surname": "lee", + "password": "60)XJ*11Sm", + "city": "Denver", + "description": "Brenda Lee", + "groups": [ + "Systems", + "LeadershipSquad" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "sql_svc": { + "firstname": "sql", + "surname": "service", + "password": "g0JGPuQBYkLNtB60YJwNoclpn8FCyI", + "city": "-", + "description": "sql service", + "groups": [], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "MSSQLSvc/summit.hq.deltasystems.local:1433", + "MSSQLSvc/summit.hq.deltasystems.local" + ] + } + } + }, + "deltasystems.local": { + "dc": "dc01", + "domain_password": "m798_WN0mbDFKFv)>szo", + "netbios_name": "DELTASYSTEMS", + "trust": "vortexindustries.local", + "laps_path": "OU=Laps,DC=deltasystems,DC=local", + "organisation_units": { + "Legal": { + "path": "DC=deltasystems,DC=local" + }, + "Europe": { + "path": "DC=deltasystems,DC=local" + }, + "APAC": { + "path": "DC=deltasystems,DC=local" + }, + "Southern": { + "path": "DC=deltasystems,DC=local" + }, + "Western": { + "path": "DC=deltasystems,DC=local" + }, + "HR": { + "path": "DC=deltasystems,DC=local" + }, + "Americas": { + "path": "DC=deltasystems,DC=local" + }, + "Corporate": { + "path": "DC=deltasystems,DC=local" + } + }, + "groups": { + "universal": {}, + "global": { + "Systems2": { + "managed_by": "brian.johnson", + "path": "OU=HR,DC=deltasystems,DC=local" + }, + "ExecutiveUnit": { + "managed_by": "eric.flores", + "path": "OU=Western,DC=deltasystems,DC=local" + }, + "ServicesTeam": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "Administration": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "Security": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "AdministrationSquad2": { + "path": "OU=Southern,DC=deltasystems,DC=local" + } + }, + "domainlocal": { + "InfrastructureTeam": { + "path": "CN=Users,DC=deltasystems,DC=local" + } + } + }, + "multi_domain_groups_member": { + "InfrastructureTeam": [ + "vortexindustries.local\\kenneth.carter" + ] + }, + "acls": { + "forcechangepassword_brian.johnson_george.parker": { + "for": "brian.johnson", + "to": "george.parker", + "right": "Ext-User-Force-Change-Password", + "inheritance": "None" + }, + "GenericWrite_george.parker_karen.moore": { + "for": "george.parker", + "to": "karen.moore", + "right": "GenericWrite", + "inheritance": "None" + }, + "Writedacl_karen.moore_christine2.martin2": { + "for": "karen.moore", + "to": "christine2.martin2", + "right": "WriteDacl", + "inheritance": "None" + }, + "self-self-membership-on-group_christine2.martin2_servicesteam": { + "for": "christine2.martin2", + "to": "ServicesTeam", + "right": "Ext-Self-Self-Membership", + "inheritance": "None" + }, + "addmember_servicesteam_administration": { + "for": "ServicesTeam", + "to": "Administration", + "right": "Ext-Write-Self-Membership", + "inheritance": "All" + }, + "write_administration_security": { + "for": "Administration", + "to": "Security", + "right": "WriteOwner", + "inheritance": "None" + }, + "GenericAll_security_charles2.parker2": { + "for": "Security", + "to": "charles2.parker2", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_charles2.parker2_guardian-app$": { + "for": "charles2.parker2", + "to": "guardian-app$", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_infrastructureteam_guardian-app$": { + "for": "InfrastructureTeam", + "to": "guardian-app$", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela3.diaz_domain_admins": { + "for": "pamela3.diaz", + "to": "Domain Admins", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela3.diaz_adminsdholder": { + "for": "pamela3.diaz", + "to": "CN=AdminSDHolder,CN=System,DC=deltasystems,DC=local", + "right": "GenericAll", + "inheritance": "None" + }, + "WriteDACL_michelle.mitchell_southern": { + "for": "michelle.mitchell", + "to": "OU=Southern,DC=deltasystems,DC=local", + "right": "WriteDacl", + "inheritance": "None" + } + }, + "users": { + "brian.johnson": { + "firstname": "brian", + "surname": "johnson", + "password": "f5ql8xzwbco69kd", + "city": "San Francisco", + "description": "Brian Johnson", + "groups": [ + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "george.parker": { + "firstname": "george", + "surname": "parker", + "password": "bpyhct", + "city": "Phoenix", + "description": "George Parker", + "groups": [ + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "stephanie2.hughes": { + "firstname": "stephanie2", + "surname": "hughes", + "password": "3jivwfkcxr", + "city": "Phoenix", + "description": "Stephanie2 Hughes", + "groups": [ + "Systems2", + "ExecutiveUnit", + "Domain Admins", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "christine2.martin2": { + "firstname": "christine2", + "surname": "martin2", + "password": "@U#7L^SKww", + "city": "Phoenix", + "description": "Christine2 Martin2", + "groups": [ + "Systems2" + ], + "path": "OU=HR,DC=deltasystems,DC=local" + }, + "eric.flores": { + "firstname": "eric", + "surname": "flores", + "password": "mcnkpmyufebebibtdmcc", + "city": "Phoenix", + "description": "Eric Flores", + "groups": [ + "ExecutiveUnit", + "Domain Admins", + "ServicesTeam", + "Protected Users" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "karen.moore": { + "firstname": "karen", + "surname": "moore", + "password": "zzseh2865o2", + "city": "Phoenix", + "description": "Karen Moore", + "groups": [ + "ExecutiveUnit", + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "michelle.mitchell": { + "firstname": "michelle", + "surname": "mitchell", + "password": "yuddrrlgxpv", + "city": "Phoenix", + "description": "Michelle Mitchell", + "groups": [ + "ExecutiveUnit", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "charles2.parker2": { + "firstname": "charles2", + "surname": "parker2", + "password": "ra4QyzbTFQD", + "city": "Phoenix", + "description": "Charles2 Parker2", + "groups": [ + "ExecutiveUnit", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "sharon.wilson": { + "firstname": "sharon", + "surname": "wilson", + "password": "<+p*d<,vg<*-hx", + "city": "Phoenix", + "description": "Sharon Wilson", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "pamela3.diaz": { + "firstname": "pamela3", + "surname": "diaz", + "password": "6&BeB8*+M", + "city": "Phoenix", + "description": "Pamela3 Diaz", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "deborah.edwards": { + "firstname": "deborah", + "surname": "edwards", + "password": "WFqrVsLcNEFirMwxV", + "city": "Phoenix", + "description": "Deborah Edwards", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + } + } + } + } + } +} diff --git a/ad/GOAD-variant-1/data/dev-config.json b/ad/GOAD-variant-1/data/dev-config.json new file mode 100644 index 00000000..cf02bb17 --- /dev/null +++ b/ad/GOAD-variant-1/data/dev-config.json @@ -0,0 +1,936 @@ +{ + "lab": { + "hosts": { + "dc01": { + "hostname": "guardian-app", + "type": "dc", + "local_admin_password": "m798_WN0mbDFKFv)>szo", + "domain": "deltasystems.local", + "path": "DC=deltasystems,DC=local", + "local_groups": { + "Administrators": [ + "deltasystems\\eric.flores", + "deltasystems\\stephanie2.hughes", + "deltasystems\\AdministrationSquad2" + ], + "Remote Desktop Users": [ + "deltasystems\\ServicesTeam", + "deltasystems\\ExecutiveUnit" + ] + }, + "scripts": [ + "sidhistory.ps1" + ], + "vulns": [ + "disable_firewall" + ], + "security": [ + "account_is_sensitive", + "audit_policy" + ], + "security_vars": { + "account_is_sensitive": { + "michelle": { + "account": "michelle.mitchell" + } + } + } + }, + "dc02": { + "hostname": "beacon", + "type": "dc", + "local_admin_password": "xYK7tDxi:+PSp(AS;>=%", + "domain": "hq.deltasystems.local", + "path": "DC=hq,DC=deltasystems,DC=local", + "local_groups": { + "Administrators": [ + "hq\\william.wood", + "hq\\anna.erics", + "hq\\catherine2.ramos" + ], + "Remote Desktop Users": [ + "hq\\Operations" + ] + }, + "scripts": [ + "asrep_roasting.ps1", + "constrained_delegation_use_any.ps1", + "constrained_delegation_kerb_only.ps1", + "ntlm_relay.ps1", + "responder.ps1", + "gpo_abuse.ps1", + "rdp_scheduler.ps1", + "unconstrained_delegation_user.ps1" + ], + "vulns": [ + "disable_firewall", + "directory", + "credentials", + "autologon", + "files", + "enable_llmnr", + "enable_nbt_ns", + "shares", + "anonymous_enum" + ], + "vulns_vars": { + "directory": { + "setup": "C:\\setup" + }, + "credentials": { + "TERMSRV/summit": { + "username": "hq\\catherine2.ramos", + "secret": "plyfvjuqn", + "runas": "hq\\catherine2.ramos", + "runas_password": "plyfvjuqn" + } + }, + "autologon": { + "catherine2.ramos": { + "username": "hq\\catherine2.ramos", + "password": "plyfvjuqn" + } + }, + "files": { + "rdp": { + "src": "dc02/bot_rdp.ps1", + "dest": "C:\\setup\\bot_rdp.ps1" + }, + "sysvol_fake_script": { + "src": "dc02/sysvol_scripts/script.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\script.ps1" + }, + "sysvol_secret": { + "src": "dc02/sysvol_scripts/secret.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\secret.ps1" + } + } + }, + "security": [ + "audit_policy" + ] + }, + "srv02": { + "hostname": "summit", + "type": "server", + "local_admin_password": "xYK7tDxi:+PSp(AS;>=%", + "domain": "hq.deltasystems.local", + "path": "DC=hq,DC=deltasystems,DC=local", + "use_laps": false, + "local_groups": { + "Administrators": [ + "hq\\brenda.lee" + ], + "Remote Desktop Users": [ + "hq\\Systems", + "hq\\LeadershipSquad", + "hq\\Operations" + ] + }, + "scripts": [], + "vulns": [ + "directory", + "disable_firewall", + "openshares", + "files", + "permissions" + ], + "vulns_vars": { + "directory": { + "shares": "C:\\shares", + "all": "C:\\shares\\all" + }, + "files": { + "website": { + "src": "srv02/wwwroot", + "dest": "C:\\inetpub\\" + }, + "letter_in_shares": { + "src": "srv02/all/pamela2.txt", + "dest": "C:\\shares\\all\\pamela2.txt" + } + }, + "permissions": { + "IIS_IUSRS_upload": { + "path": "C:\\inetpub\\wwwroot\\upload", + "user": "IIS_IUSRS", + "rights": "FullControl" + } + } + }, + "mssql": { + "sa_password": "6q_E@9Bk]^|LolaX9", + "svcaccount": "sql_svc", + "sysadmins": [ + "HQ\\christine.martin" + ], + "executeaslogin": { + "HQ\\stephanie.williams": "sa", + "HQ\\alexander.peterson": "HQ\\christine.martin" + }, + "executeasuser": { + "pamela2_master_dbo": { + "user": "HQ\\pamela2.rogers", + "db": "master", + "impersonate": "dbo" + }, + "pamela2_dbms_dbo": { + "user": "HQ\\pamela2.rogers", + "db": "msdb", + "impersonate": "dbo" + } + }, + "linked_servers": { + "TITAN": { + "data_src": "titan.vortexindustries.local", + "users_mapping": [ + { + "local_login": "HQ\\christine.martin", + "remote_login": "sa", + "remote_password": "ZX8HtJQcV!kom[5L]" + } + ] + } + } + } + }, + "dc03": { + "hostname": "beacon-app", + "type": "dc", + "local_admin_password": "^$1N+]GIm4s1smahoB_]", + "domain": "vortexindustries.local", + "path": "DC=vortexindustries,DC=local", + "local_groups": { + "Administrators": [ + "vortexind\\kenneth.carter" + ], + "Remote Desktop Users": [ + "vortexind\\OperationsStaff" + ] + }, + "scripts": [ + "asrep_roasting2.ps1" + ], + "vulns": [ + "ntlmdowngrade", + "disable_firewall" + ], + "security": [ + "audit_policy" + ] + }, + "srv03": { + "hostname": "titan", + "type": "server", + "local_admin_password": "^$1N+]GIm4s1smahoB_]", + "domain": "vortexindustries.local", + "path": "DC=vortexindustries,DC=local", + "use_laps": true, + "local_groups": { + "Administrators": [ + "vortexind\\pamela.clark" + ] + }, + "Remote Desktop Users": [ + "vortexind\\SupportGroup" + ], + "scripts": [], + "vulns": [ + "openshares", + "disable_firewall" + ], + "security": [ + "enable_run_as_ppl" + ], + "mssql": { + "sa_password": "ZX8HtJQcV!kom[5L]", + "svcaccount": "sql_svc", + "sysadmins": [ + "VORTEXIND\\pamela.clark" + ], + "executeaslogin": { + "VORTEXIND\\catherine.turner": "sa" + }, + "executeasuser": {}, + "linked_servers": { + "SUMMIT": { + "data_src": "summit.hq.deltasystems.local", + "users_mapping": [ + { + "local_login": "VORTEXIND\\pamela.clark", + "remote_login": "sa", + "remote_password": "6q_E@9Bk]^|LolaX9" + } + ] + } + } + } + } + }, + "domains": { + "vortexindustries.local": { + "dc": "dc03", + "domain_password": "^$1N+]GIm4s1smahoB_]", + "netbios_name": "VORTEXIND", + "ca_server": "Titan", + "trust": "deltasystems.local", + "laps_path": "OU=Laps,DC=vortexindustries,DC=local", + "organisation_units": {}, + "laps_readers": [ + "catherine.turner", + "SupportSquad" + ], + "groups": { + "universal": {}, + "global": { + "OperationsStaff": { + "managed_by": "charles.walker", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "SupportGroup": { + "managed_by": "pamela.clark", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "AdministrationGroup": { + "managed_by": "Administrator", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "Services": { + "managed_by": "Administrator", + "path": "CN=Users,DC=vortexindustries,DC=local", + "members": [ + "VORTEXIND\\AdministrationGroup" + ] + }, + "Domain Admins": { + "managed_by": "Administrator", + "path": "CN=Users,DC=vortexindustries,DC=local", + "members": [ + "VORTEXIND\\Services" + ] + } + }, + "domainlocal": { + "AdministrationSquad": { + "managed_by": "kenneth.carter", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "SupportSquad": { + "path": "CN=Users,DC=vortexindustries,DC=local" + } + } + }, + "multi_domain_groups_member": { + "AdministrationSquad": [ + "deltasystems.local\\christine2.martin2", + "vortexindustries.local\\kenneth.carter" + ], + "SupportSquad": [ + "deltasystems.local\\ServicesTeam" + ] + }, + "gmsa": { + "gmsa_account": { + "gMSA_Name": "gmsaFalcon", + "gMSA_FQDN": "gmsaFalcon.vortexindustries.local", + "gMSA_SPNs": [ + "HTTP/titan", + "HTTP/titan.vortexindustries.local" + ], + "gMSA_HostNames": [ + "titan" + ] + } + }, + "acls": { + "GenericAll_pamela.clark_charles.walker": { + "for": "pamela.clark", + "to": "charles.walker", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_supportsquad_catherine.turner": { + "for": "SupportSquad", + "to": "catherine.turner", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela.clark_esc4": { + "for": "pamela.clark", + "to": "CN=ESC4,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=vortexindustries,DC=local", + "right": "GenericAll", + "inheritance": "None" + }, + "WriteProperty_charles.walker_catherine.turner": { + "for": "charles.walker", + "to": "catherine.turner", + "right": "WriteProperty", + "inheritance": "All" + }, + "GenericWrite_administrationsquad_titan$": { + "for": "AdministrationSquad", + "to": "titan$", + "right": "GenericWrite", + "inheritance": "None" + }, + "GenericAll_susan.white_pamela.clark": { + "for": "susan.white", + "to": "pamela.clark", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_gmsafalcon$_shirley.gonzalez": { + "for": "gmsaFalcon$", + "to": "shirley.gonzalez", + "right": "GenericAll", + "inheritance": "None" + } + }, + "users": { + "kenneth.carter": { + "firstname": "kenneth", + "surname": "carter", + "password": "Av^MO$q>t)=%", + "netbios_name": "HQ", + "trust": "", + "laps_path": "OU=Laps,DC=hq,DC=deltasystems,DC=local", + "organisation_units": {}, + "groups": { + "universal": {}, + "global": { + "Operations": { + "managed_by": "william.wood", + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "Systems": { + "managed_by": "brenda.lee", + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "LeadershipSquad": { + "managed_by": "brenda.lee", + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + } + }, + "domainlocal": { + "PlatformUnit": { + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + } + } + }, + "multi_domain_groups_member": {}, + "acls": { + "anonymous_rpc": { + "for": "NT AUTHORITY\\ANONYMOUS LOGON", + "to": "DC=Hq,DC=deltasystems,DC=local", + "right": "ReadProperty", + "inheritance": "All" + }, + "anonymous_rpc2": { + "for": "NT AUTHORITY\\ANONYMOUS LOGON", + "to": "DC=Hq,DC=deltasystems,DC=local", + "right": "GenericExecute", + "inheritance": "All" + } + }, + "users": { + "pamela2.rogers": { + "firstname": "pamela2", + "surname": "rogers", + "password": "heNvyj", + "city": "Dallas", + "description": "Pamela2 Rogers", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "william.wood": { + "firstname": "william", + "surname": "wood", + "password": "*x-Iz", + "city": "Phoenix", + "description": "William Wood", + "groups": [ + "Operations", + "Domain Admins" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "anna.erics": { + "firstname": "anna", + "surname": "erics", + "password": "uejpqnidxtnoehjdwbtsqaztl", + "city": "Phoenix", + "description": "Anna Erics", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "catherine2.ramos": { + "firstname": "catherine2", + "surname": "ramos", + "password": "plyfvjuqn", + "city": "Dallas", + "description": "Catherine2 Ramos", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "ryan.myers": { + "firstname": "ryan", + "surname": "myers", + "password": "si4q5iagz", + "city": "Dallas", + "description": "Ryan Myers", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "HTTP/eyrie.hq.deltasystems.local" + ] + }, + "alexander.peterson": { + "firstname": "alexander", + "surname": "peterson", + "password": "wlrucscdadzooz", + "city": "Dallas", + "description": "Alexander Peterson", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "laura.campbell": { + "firstname": "laura", + "surname": "campbell", + "password": "MTmya1uW0b", + "city": "Dallas", + "description": "Laura Campbell", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "emily.baker": { + "firstname": "emily", + "surname": "baker", + "password": "jqfay", + "city": "Dallas", + "description": "Emily Baker", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "christine.martin": { + "firstname": "christine", + "surname": "martin", + "password": "ddlfwkwdemov", + "city": "Denver", + "description": "Christine Martin", + "groups": [ + "Operations", + "Systems" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "HTTP/thewall.hq.deltasystems.local" + ] + }, + "stephanie.williams": { + "firstname": "stephanie", + "surname": "williams", + "password": "JUHTgaxCdT", + "city": "Denver", + "description": "Stephanie Williams", + "groups": [ + "Systems" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "brenda.lee": { + "firstname": "brenda", + "surname": "lee", + "password": "60)XJ*11Sm", + "city": "Denver", + "description": "Brenda Lee", + "groups": [ + "Systems", + "LeadershipSquad" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "sql_svc": { + "firstname": "sql", + "surname": "service", + "password": "g0JGPuQBYkLNtB60YJwNoclpn8FCyI", + "city": "-", + "description": "sql service", + "groups": [], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "MSSQLSvc/summit.hq.deltasystems.local:1433", + "MSSQLSvc/summit.hq.deltasystems.local" + ] + } + } + }, + "deltasystems.local": { + "dc": "dc01", + "domain_password": "m798_WN0mbDFKFv)>szo", + "netbios_name": "DELTASYSTEMS", + "trust": "vortexindustries.local", + "laps_path": "OU=Laps,DC=deltasystems,DC=local", + "organisation_units": { + "Legal": { + "path": "DC=deltasystems,DC=local" + }, + "Europe": { + "path": "DC=deltasystems,DC=local" + }, + "APAC": { + "path": "DC=deltasystems,DC=local" + }, + "Southern": { + "path": "DC=deltasystems,DC=local" + }, + "Western": { + "path": "DC=deltasystems,DC=local" + }, + "HR": { + "path": "DC=deltasystems,DC=local" + }, + "Americas": { + "path": "DC=deltasystems,DC=local" + }, + "Corporate": { + "path": "DC=deltasystems,DC=local" + } + }, + "groups": { + "universal": {}, + "global": { + "Systems2": { + "managed_by": "brian.johnson", + "path": "OU=HR,DC=deltasystems,DC=local" + }, + "ExecutiveUnit": { + "managed_by": "eric.flores", + "path": "OU=Western,DC=deltasystems,DC=local" + }, + "ServicesTeam": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "Administration": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "Security": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "AdministrationSquad2": { + "path": "OU=Southern,DC=deltasystems,DC=local" + } + }, + "domainlocal": { + "InfrastructureTeam": { + "path": "CN=Users,DC=deltasystems,DC=local" + } + } + }, + "multi_domain_groups_member": { + "InfrastructureTeam": [ + "vortexindustries.local\\kenneth.carter" + ] + }, + "acls": { + "forcechangepassword_brian.johnson_george.parker": { + "for": "brian.johnson", + "to": "george.parker", + "right": "Ext-User-Force-Change-Password", + "inheritance": "None" + }, + "GenericWrite_george.parker_karen.moore": { + "for": "george.parker", + "to": "karen.moore", + "right": "GenericWrite", + "inheritance": "None" + }, + "Writedacl_karen.moore_christine2.martin2": { + "for": "karen.moore", + "to": "christine2.martin2", + "right": "WriteDacl", + "inheritance": "None" + }, + "self-self-membership-on-group_christine2.martin2_servicesteam": { + "for": "christine2.martin2", + "to": "ServicesTeam", + "right": "Ext-Self-Self-Membership", + "inheritance": "None" + }, + "addmember_servicesteam_administration": { + "for": "ServicesTeam", + "to": "Administration", + "right": "Ext-Write-Self-Membership", + "inheritance": "All" + }, + "write_administration_security": { + "for": "Administration", + "to": "Security", + "right": "WriteOwner", + "inheritance": "None" + }, + "GenericAll_security_charles2.parker2": { + "for": "Security", + "to": "charles2.parker2", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_charles2.parker2_guardian-app$": { + "for": "charles2.parker2", + "to": "guardian-app$", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_infrastructureteam_guardian-app$": { + "for": "InfrastructureTeam", + "to": "guardian-app$", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela3.diaz_domain_admins": { + "for": "pamela3.diaz", + "to": "Domain Admins", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela3.diaz_adminsdholder": { + "for": "pamela3.diaz", + "to": "CN=AdminSDHolder,CN=System,DC=deltasystems,DC=local", + "right": "GenericAll", + "inheritance": "None" + }, + "WriteDACL_michelle.mitchell_southern": { + "for": "michelle.mitchell", + "to": "OU=Southern,DC=deltasystems,DC=local", + "right": "WriteDacl", + "inheritance": "None" + } + }, + "users": { + "brian.johnson": { + "firstname": "brian", + "surname": "johnson", + "password": "f5ql8xzwbco69kd", + "city": "San Francisco", + "description": "Brian Johnson", + "groups": [ + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "george.parker": { + "firstname": "george", + "surname": "parker", + "password": "bpyhct", + "city": "Phoenix", + "description": "George Parker", + "groups": [ + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "stephanie2.hughes": { + "firstname": "stephanie2", + "surname": "hughes", + "password": "3jivwfkcxr", + "city": "Phoenix", + "description": "Stephanie2 Hughes", + "groups": [ + "Systems2", + "ExecutiveUnit", + "Domain Admins", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "christine2.martin2": { + "firstname": "christine2", + "surname": "martin2", + "password": "@U#7L^SKww", + "city": "Phoenix", + "description": "Christine2 Martin2", + "groups": [ + "Systems2" + ], + "path": "OU=HR,DC=deltasystems,DC=local" + }, + "eric.flores": { + "firstname": "eric", + "surname": "flores", + "password": "mcnkpmyufebebibtdmcc", + "city": "Phoenix", + "description": "Eric Flores", + "groups": [ + "ExecutiveUnit", + "Domain Admins", + "ServicesTeam", + "Protected Users" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "karen.moore": { + "firstname": "karen", + "surname": "moore", + "password": "zzseh2865o2", + "city": "Phoenix", + "description": "Karen Moore", + "groups": [ + "ExecutiveUnit", + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "michelle.mitchell": { + "firstname": "michelle", + "surname": "mitchell", + "password": "yuddrrlgxpv", + "city": "Phoenix", + "description": "Michelle Mitchell", + "groups": [ + "ExecutiveUnit", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "charles2.parker2": { + "firstname": "charles2", + "surname": "parker2", + "password": "ra4QyzbTFQD", + "city": "Phoenix", + "description": "Charles2 Parker2", + "groups": [ + "ExecutiveUnit", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "sharon.wilson": { + "firstname": "sharon", + "surname": "wilson", + "password": "<+p*d<,vg<*-hx", + "city": "Phoenix", + "description": "Sharon Wilson", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "pamela3.diaz": { + "firstname": "pamela3", + "surname": "diaz", + "password": "6&BeB8*+M", + "city": "Phoenix", + "description": "Pamela3 Diaz", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "deborah.edwards": { + "firstname": "deborah", + "surname": "edwards", + "password": "WFqrVsLcNEFirMwxV", + "city": "Phoenix", + "description": "Deborah Edwards", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + } + } + } + } + } +} diff --git a/ad/GOAD-variant-1/data/inventory b/ad/GOAD-variant-1/data/inventory new file mode 100644 index 00000000..dcbe0a83 --- /dev/null +++ b/ad/GOAD-variant-1/data/inventory @@ -0,0 +1,149 @@ +; GLOBAL CONFIG +[all:vars] +; domain_name : folder inside ad/ +domain_name=GOAD + +; administrator user +admin_user=administrator + +; global settings inventory default value +keyboard_layouts=["en-US", "da-DK", "fr-FR"] + +; modify this to add a default route +add_route=no +route_gateway=192.168.56.1 +route_network=10.0.0.0/8 + +; modify this to enable http proxy +enable_http_proxy=no +ad_http_proxy=http://x.x.x.x:xxxx +ad_https_proxy=http://x.x.x.x:xxxx + +;force_dns_server +force_dns_server=no +dns_server=1.1.1.1 + +;dns server forwarder +dns_server_forwarder=1.1.1.1 + +; winrm connection (windows) +ansible_user=vagrant +ansible_password=vagrant +ansible_connection=winrm +ansible_winrm_server_cert_validation=ignore +ansible_winrm_operation_timeout_sec=400 +ansible_winrm_read_timeout_sec=500 +# ansible_winrm_transport=basic +# ansible_port=5985 + +; LAB SCENARIO CONFIGURATION ----------------------------- + +; computers inside domain (mandatory) +; usage : build.yml, ad-relations.yml, ad-servers.yml, vulnerabilities.yml +[domain] +dc01 +dc02 +dc03 +srv02 +srv03 + +; domain controller (mandatory) +; usage : ad-acl.yml, ad-data.yml, ad-relations.yml, laps.yml +[dc] +dc01 +dc02 +dc03 + +; domain server to enroll (mandatory if you want servers) +; usage : ad-data.yml, ad-servers.yml, laps.yml +[server] +srv02 +srv03 + +; workstation to enroll (mandatory if you want workstation) +; usage : ad-servers.yml, laps.yml +[workstation] + +; parent domain controller (mandatory) +; usage : ad-servers.yml +[parent_dc] +dc01 +dc03 + +; child domain controller (need a fqdn child_name.parent_name) +; usage : ad-servers.yml +[child_dc] +dc02 + +; external trust, need domain trust entry in config (bidirectionnal) +; usage : ad-trusts.yml +[trust] +dc01 +dc03 + +; install adcs +; usage : adcs.yml +[adcs] +dc01 +srv03 + +; install custom template (dc) +; usage : adcs.yml +[adcs_customtemplates] +dc03 + +; install iis with default website asp upload on 80 +; usage : servers.yml +[iis] +srv02 + +; install mssql +; usage : servers.yml +[mssql] +srv02 +srv03 + +; install mssql gui +; usage : servers.yml +[mssql_ssms] +srv02 + +; install webdav +[webdav] +srv02 +srv03 + +[laps_dc] +dc03 +[laps_server] +srv03 +[laps_workstation] + +; allow computer update +; usage : update.yml +[update] +srv02 + +; disable update +; usage : update.yml +[no_update] +dc01 +dc02 +dc03 +srv03 + +; allow defender +; usage : security.yml +[defender_on] +dc01 +dc02 +dc03 +srv03 + +; disable defender +; usage : security.yml +[defender_off] +srv02 + +;stay empty until override +[extensions] diff --git a/ad/GOAD-variant-1/data/inventory_disable_vagrant b/ad/GOAD-variant-1/data/inventory_disable_vagrant new file mode 100644 index 00000000..fe857f3e --- /dev/null +++ b/ad/GOAD-variant-1/data/inventory_disable_vagrant @@ -0,0 +1,38 @@ +[default] +; Note: ansible_host *MUST* be an IPv4 address or setting things like DNS +; servers will break. +; ------------------------------------------------ +; deltasystems.local +; ------------------------------------------------ +dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 ansible_user=administrator@deltasystems.local ansible_password=8dCT-DJjgScp +; ------------------------------------------------ +; hq.deltasystems.local +; ------------------------------------------------ +dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 ansible_user=administrator@hq.deltasystems.local ansible_password=NgtI75cKV+Pu +srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 ansible_user=administrator@hq.deltasystems.local ansible_password=NgtI75cKV+Pu +; ------------------------------------------------ +; vortexindustries.local +; ------------------------------------------------ +dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 ansible_user=administrator@vortexindustries.local ansible_password=Ufe-bVXSx9rk +srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 ansible_user=administrator@vortexindustries.local ansible_password=Ufe-bVXSx9rk + +[all:vars] +; domain_name : folder inside ad/ +domain_name=GOAD + +; winrm connection (windows) +ansible_winrm_transport=ntlm +ansible_user=notused +ansible_password=notused +ansible_connection=winrm +ansible_winrm_server_cert_validation=ignore +ansible_winrm_operation_timeout_sec=400 +ansible_winrm_read_timeout_sec=500 + +; LAB SCENARIO CONFIGURATION ----------------------------- +[domain] +dc01 +dc02 +srv02 +dc03 +srv03 diff --git a/ad/GOAD-variant-1/data/staging-config.json b/ad/GOAD-variant-1/data/staging-config.json new file mode 100644 index 00000000..dfdf3ba4 --- /dev/null +++ b/ad/GOAD-variant-1/data/staging-config.json @@ -0,0 +1,936 @@ +{ + "lab": { + "hosts": { + "dc01": { + "hostname": "guardian-app", + "type": "dc", + "local_admin_password": "ykRXQ@rWNV4znesz-h!c", + "domain": "deltasystems.local", + "path": "DC=deltasystems,DC=local", + "local_groups": { + "Administrators": [ + "deltasystems\\eric.flores", + "deltasystems\\stephanie2.hughes", + "deltasystems\\AdministrationSquad2" + ], + "Remote Desktop Users": [ + "deltasystems\\ServicesTeam", + "deltasystems\\ExecutiveUnit" + ] + }, + "scripts": [ + "sidhistory.ps1" + ], + "vulns": [ + "disable_firewall" + ], + "security": [ + "account_is_sensitive", + "audit_policy" + ], + "security_vars": { + "account_is_sensitive": { + "michelle": { + "account": "michelle.mitchell" + } + } + } + }, + "dc02": { + "hostname": "beacon", + "type": "dc", + "local_admin_password": "moydNed_wEKuP8KN6rUx", + "domain": "hq.deltasystems.local", + "path": "DC=hq,DC=deltasystems,DC=local", + "local_groups": { + "Administrators": [ + "hq\\william.wood", + "hq\\anna.erics", + "hq\\catherine2.ramos" + ], + "Remote Desktop Users": [ + "hq\\Operations" + ] + }, + "scripts": [ + "asrep_roasting.ps1", + "constrained_delegation_use_any.ps1", + "constrained_delegation_kerb_only.ps1", + "ntlm_relay.ps1", + "responder.ps1", + "gpo_abuse.ps1", + "rdp_scheduler.ps1", + "unconstrained_delegation_user.ps1" + ], + "vulns": [ + "disable_firewall", + "directory", + "credentials", + "autologon", + "files", + "enable_llmnr", + "enable_nbt_ns", + "shares", + "anonymous_enum" + ], + "vulns_vars": { + "directory": { + "setup": "C:\\setup" + }, + "credentials": { + "TERMSRV/summit": { + "username": "hq\\catherine2.ramos", + "secret": "plyfvjuqn", + "runas": "hq\\catherine2.ramos", + "runas_password": "plyfvjuqn" + } + }, + "autologon": { + "catherine2.ramos": { + "username": "hq\\catherine2.ramos", + "password": "plyfvjuqn" + } + }, + "files": { + "rdp": { + "src": "dc02/bot_rdp.ps1", + "dest": "C:\\setup\\bot_rdp.ps1" + }, + "sysvol_fake_script": { + "src": "dc02/sysvol_scripts/script.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\script.ps1" + }, + "sysvol_secret": { + "src": "dc02/sysvol_scripts/secret.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\secret.ps1" + } + } + }, + "security": [ + "audit_policy" + ] + }, + "srv02": { + "hostname": "summit", + "type": "server", + "local_admin_password": "moydNed_wEKuP8KN6rUx", + "domain": "hq.deltasystems.local", + "path": "DC=hq,DC=deltasystems,DC=local", + "use_laps": false, + "local_groups": { + "Administrators": [ + "hq\\brenda.lee" + ], + "Remote Desktop Users": [ + "hq\\Systems", + "hq\\LeadershipSquad", + "hq\\Operations" + ] + }, + "scripts": [], + "vulns": [ + "directory", + "disable_firewall", + "openshares", + "files", + "permissions" + ], + "vulns_vars": { + "directory": { + "shares": "C:\\shares", + "all": "C:\\shares\\all" + }, + "files": { + "website": { + "src": "srv02/wwwroot", + "dest": "C:\\inetpub\\" + }, + "letter_in_shares": { + "src": "srv02/all/pamela2.txt", + "dest": "C:\\shares\\all\\pamela2.txt" + } + }, + "permissions": { + "IIS_IUSRS_upload": { + "path": "C:\\inetpub\\wwwroot\\upload", + "user": "IIS_IUSRS", + "rights": "FullControl" + } + } + }, + "mssql": { + "sa_password": "6q_E@9Bk]^|LolaX9", + "svcaccount": "sql_svc", + "sysadmins": [ + "HQ\\christine.martin" + ], + "executeaslogin": { + "HQ\\stephanie.williams": "sa", + "HQ\\alexander.peterson": "HQ\\christine.martin" + }, + "executeasuser": { + "pamela2_master_dbo": { + "user": "HQ\\pamela2.rogers", + "db": "master", + "impersonate": "dbo" + }, + "pamela2_dbms_dbo": { + "user": "HQ\\pamela2.rogers", + "db": "msdb", + "impersonate": "dbo" + } + }, + "linked_servers": { + "TITAN": { + "data_src": "titan.vortexindustries.local", + "users_mapping": [ + { + "local_login": "HQ\\christine.martin", + "remote_login": "sa", + "remote_password": "ZX8HtJQcV!kom[5L]" + } + ] + } + } + } + }, + "dc03": { + "hostname": "beacon-app", + "type": "dc", + "local_admin_password": "-cwuyGW494yZnC_M8wLN", + "domain": "vortexindustries.local", + "path": "DC=vortexindustries,DC=local", + "local_groups": { + "Administrators": [ + "vortexind\\kenneth.carter" + ], + "Remote Desktop Users": [ + "vortexind\\OperationsStaff" + ] + }, + "scripts": [ + "asrep_roasting2.ps1" + ], + "vulns": [ + "ntlmdowngrade", + "disable_firewall" + ], + "security": [ + "audit_policy" + ] + }, + "srv03": { + "hostname": "titan", + "type": "server", + "local_admin_password": "-cwuyGW494yZnC_M8wLN", + "domain": "vortexindustries.local", + "path": "DC=vortexindustries,DC=local", + "use_laps": true, + "local_groups": { + "Administrators": [ + "vortexind\\pamela.clark" + ] + }, + "Remote Desktop Users": [ + "vortexind\\SupportGroup" + ], + "scripts": [], + "vulns": [ + "openshares", + "disable_firewall" + ], + "security": [ + "enable_run_as_ppl" + ], + "mssql": { + "sa_password": "ZX8HtJQcV!kom[5L]", + "svcaccount": "sql_svc", + "sysadmins": [ + "VORTEXIND\\pamela.clark" + ], + "executeaslogin": { + "VORTEXIND\\catherine.turner": "sa" + }, + "executeasuser": {}, + "linked_servers": { + "SUMMIT": { + "data_src": "summit.hq.deltasystems.local", + "users_mapping": [ + { + "local_login": "VORTEXIND\\pamela.clark", + "remote_login": "sa", + "remote_password": "6q_E@9Bk]^|LolaX9" + } + ] + } + } + } + } + }, + "domains": { + "vortexindustries.local": { + "dc": "dc03", + "domain_password": "-cwuyGW494yZnC_M8wLN", + "netbios_name": "VORTEXIND", + "ca_server": "Titan", + "trust": "deltasystems.local", + "laps_path": "OU=Laps,DC=vortexindustries,DC=local", + "organisation_units": {}, + "laps_readers": [ + "catherine.turner", + "SupportSquad" + ], + "groups": { + "universal": {}, + "global": { + "OperationsStaff": { + "managed_by": "charles.walker", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "SupportGroup": { + "managed_by": "pamela.clark", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "AdministrationGroup": { + "managed_by": "Administrator", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "Services": { + "managed_by": "Administrator", + "path": "CN=Users,DC=vortexindustries,DC=local", + "members": [ + "VORTEXIND\\AdministrationGroup" + ] + }, + "Domain Admins": { + "managed_by": "Administrator", + "path": "CN=Users,DC=vortexindustries,DC=local", + "members": [ + "VORTEXIND\\Services" + ] + } + }, + "domainlocal": { + "AdministrationSquad": { + "managed_by": "kenneth.carter", + "path": "CN=Users,DC=vortexindustries,DC=local" + }, + "SupportSquad": { + "path": "CN=Users,DC=vortexindustries,DC=local" + } + } + }, + "multi_domain_groups_member": { + "AdministrationSquad": [ + "deltasystems.local\\christine2.martin2", + "vortexindustries.local\\kenneth.carter" + ], + "SupportSquad": [ + "deltasystems.local\\ServicesTeam" + ] + }, + "gmsa": { + "gmsa_account": { + "gMSA_Name": "gmsaFalcon", + "gMSA_FQDN": "gmsaFalcon.vortexindustries.local", + "gMSA_SPNs": [ + "HTTP/titan", + "HTTP/titan.vortexindustries.local" + ], + "gMSA_HostNames": [ + "titan" + ] + } + }, + "acls": { + "GenericAll_pamela.clark_charles.walker": { + "for": "pamela.clark", + "to": "charles.walker", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_supportsquad_catherine.turner": { + "for": "SupportSquad", + "to": "catherine.turner", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela.clark_esc4": { + "for": "pamela.clark", + "to": "CN=ESC4,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=vortexindustries,DC=local", + "right": "GenericAll", + "inheritance": "None" + }, + "WriteProperty_charles.walker_catherine.turner": { + "for": "charles.walker", + "to": "catherine.turner", + "right": "WriteProperty", + "inheritance": "All" + }, + "GenericWrite_administrationsquad_titan$": { + "for": "AdministrationSquad", + "to": "titan$", + "right": "GenericWrite", + "inheritance": "None" + }, + "GenericAll_susan.white_pamela.clark": { + "for": "susan.white", + "to": "pamela.clark", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_gmsafalcon$_shirley.gonzalez": { + "for": "gmsaFalcon$", + "to": "shirley.gonzalez", + "right": "GenericAll", + "inheritance": "None" + } + }, + "users": { + "kenneth.carter": { + "firstname": "kenneth", + "surname": "carter", + "password": "Av^MO$q>t)*x-Iz", + "city": "Phoenix", + "description": "William Wood", + "groups": [ + "Operations", + "Domain Admins" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "anna.erics": { + "firstname": "anna", + "surname": "erics", + "password": "uejpqnidxtnoehjdwbtsqaztl", + "city": "Phoenix", + "description": "Anna Erics", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "catherine2.ramos": { + "firstname": "catherine2", + "surname": "ramos", + "password": "plyfvjuqn", + "city": "Dallas", + "description": "Catherine2 Ramos", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "ryan.myers": { + "firstname": "ryan", + "surname": "myers", + "password": "si4q5iagz", + "city": "Dallas", + "description": "Ryan Myers", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "HTTP/eyrie.hq.deltasystems.local" + ] + }, + "alexander.peterson": { + "firstname": "alexander", + "surname": "peterson", + "password": "wlrucscdadzooz", + "city": "Dallas", + "description": "Alexander Peterson", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "laura.campbell": { + "firstname": "laura", + "surname": "campbell", + "password": "MTmya1uW0b", + "city": "Dallas", + "description": "Laura Campbell", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "emily.baker": { + "firstname": "emily", + "surname": "baker", + "password": "jqfay", + "city": "Dallas", + "description": "Emily Baker", + "groups": [ + "Operations" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "christine.martin": { + "firstname": "christine", + "surname": "martin", + "password": "ddlfwkwdemov", + "city": "Denver", + "description": "Christine Martin", + "groups": [ + "Operations", + "Systems" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "HTTP/thewall.hq.deltasystems.local" + ] + }, + "stephanie.williams": { + "firstname": "stephanie", + "surname": "williams", + "password": "JUHTgaxCdT", + "city": "Denver", + "description": "Stephanie Williams", + "groups": [ + "Systems" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "brenda.lee": { + "firstname": "brenda", + "surname": "lee", + "password": "60)XJ*11Sm", + "city": "Denver", + "description": "Brenda Lee", + "groups": [ + "Systems", + "LeadershipSquad" + ], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local" + }, + "sql_svc": { + "firstname": "sql", + "surname": "service", + "password": "g0JGPuQBYkLNtB60YJwNoclpn8FCyI", + "city": "-", + "description": "sql service", + "groups": [], + "path": "CN=Users,DC=Hq,DC=deltasystems,DC=local", + "spns": [ + "MSSQLSvc/summit.hq.deltasystems.local:1433", + "MSSQLSvc/summit.hq.deltasystems.local" + ] + } + } + }, + "deltasystems.local": { + "dc": "dc01", + "domain_password": "ykRXQ@rWNV4znesz-h!c", + "netbios_name": "DELTASYSTEMS", + "trust": "vortexindustries.local", + "laps_path": "OU=Laps,DC=deltasystems,DC=local", + "organisation_units": { + "Legal": { + "path": "DC=deltasystems,DC=local" + }, + "Europe": { + "path": "DC=deltasystems,DC=local" + }, + "APAC": { + "path": "DC=deltasystems,DC=local" + }, + "Southern": { + "path": "DC=deltasystems,DC=local" + }, + "Western": { + "path": "DC=deltasystems,DC=local" + }, + "HR": { + "path": "DC=deltasystems,DC=local" + }, + "Americas": { + "path": "DC=deltasystems,DC=local" + }, + "Corporate": { + "path": "DC=deltasystems,DC=local" + } + }, + "groups": { + "universal": {}, + "global": { + "Systems2": { + "managed_by": "brian.johnson", + "path": "OU=HR,DC=deltasystems,DC=local" + }, + "ExecutiveUnit": { + "managed_by": "eric.flores", + "path": "OU=Western,DC=deltasystems,DC=local" + }, + "ServicesTeam": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "Administration": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "Security": { + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "AdministrationSquad2": { + "path": "OU=Southern,DC=deltasystems,DC=local" + } + }, + "domainlocal": { + "InfrastructureTeam": { + "path": "CN=Users,DC=deltasystems,DC=local" + } + } + }, + "multi_domain_groups_member": { + "InfrastructureTeam": [ + "vortexindustries.local\\kenneth.carter" + ] + }, + "acls": { + "forcechangepassword_brian.johnson_george.parker": { + "for": "brian.johnson", + "to": "george.parker", + "right": "Ext-User-Force-Change-Password", + "inheritance": "None" + }, + "GenericWrite_george.parker_karen.moore": { + "for": "george.parker", + "to": "karen.moore", + "right": "GenericWrite", + "inheritance": "None" + }, + "Writedacl_karen.moore_christine2.martin2": { + "for": "karen.moore", + "to": "christine2.martin2", + "right": "WriteDacl", + "inheritance": "None" + }, + "self-self-membership-on-group_christine2.martin2_servicesteam": { + "for": "christine2.martin2", + "to": "ServicesTeam", + "right": "Ext-Self-Self-Membership", + "inheritance": "None" + }, + "addmember_servicesteam_administration": { + "for": "ServicesTeam", + "to": "Administration", + "right": "Ext-Write-Self-Membership", + "inheritance": "All" + }, + "write_administration_security": { + "for": "Administration", + "to": "Security", + "right": "WriteOwner", + "inheritance": "None" + }, + "GenericAll_security_charles2.parker2": { + "for": "Security", + "to": "charles2.parker2", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_charles2.parker2_guardian-app$": { + "for": "charles2.parker2", + "to": "guardian-app$", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_infrastructureteam_guardian-app$": { + "for": "InfrastructureTeam", + "to": "guardian-app$", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela3.diaz_domain_admins": { + "for": "pamela3.diaz", + "to": "Domain Admins", + "right": "GenericAll", + "inheritance": "None" + }, + "GenericAll_pamela3.diaz_adminsdholder": { + "for": "pamela3.diaz", + "to": "CN=AdminSDHolder,CN=System,DC=deltasystems,DC=local", + "right": "GenericAll", + "inheritance": "None" + }, + "WriteDACL_michelle.mitchell_southern": { + "for": "michelle.mitchell", + "to": "OU=Southern,DC=deltasystems,DC=local", + "right": "WriteDacl", + "inheritance": "None" + } + }, + "users": { + "brian.johnson": { + "firstname": "brian", + "surname": "johnson", + "password": "f5ql8xzwbco69kd", + "city": "San Francisco", + "description": "Brian Johnson", + "groups": [ + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "george.parker": { + "firstname": "george", + "surname": "parker", + "password": "bpyhct", + "city": "Phoenix", + "description": "George Parker", + "groups": [ + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "stephanie2.hughes": { + "firstname": "stephanie2", + "surname": "hughes", + "password": "3jivwfkcxr", + "city": "Phoenix", + "description": "Stephanie2 Hughes", + "groups": [ + "Systems2", + "ExecutiveUnit", + "Domain Admins", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "christine2.martin2": { + "firstname": "christine2", + "surname": "martin2", + "password": "@U#7L^SKww", + "city": "Phoenix", + "description": "Christine2 Martin2", + "groups": [ + "Systems2" + ], + "path": "OU=HR,DC=deltasystems,DC=local" + }, + "eric.flores": { + "firstname": "eric", + "surname": "flores", + "password": "mcnkpmyufebebibtdmcc", + "city": "Phoenix", + "description": "Eric Flores", + "groups": [ + "ExecutiveUnit", + "Domain Admins", + "ServicesTeam", + "Protected Users" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "karen.moore": { + "firstname": "karen", + "surname": "moore", + "password": "zzseh2865o2", + "city": "Phoenix", + "description": "Karen Moore", + "groups": [ + "ExecutiveUnit", + "Systems2" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "michelle.mitchell": { + "firstname": "michelle", + "surname": "mitchell", + "password": "yuddrrlgxpv", + "city": "Phoenix", + "description": "Michelle Mitchell", + "groups": [ + "ExecutiveUnit", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "charles2.parker2": { + "firstname": "charles2", + "surname": "parker2", + "password": "ra4QyzbTFQD", + "city": "Phoenix", + "description": "Charles2 Parker2", + "groups": [ + "ExecutiveUnit", + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "sharon.wilson": { + "firstname": "sharon", + "surname": "wilson", + "password": "<+p*d<,vg<*-hx", + "city": "Phoenix", + "description": "Sharon Wilson", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "pamela3.diaz": { + "firstname": "pamela3", + "surname": "diaz", + "password": "6&BeB8*+M", + "city": "Phoenix", + "description": "Pamela3 Diaz", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + }, + "deborah.edwards": { + "firstname": "deborah", + "surname": "edwards", + "password": "WFqrVsLcNEFirMwxV", + "city": "Phoenix", + "description": "Deborah Edwards", + "groups": [ + "ServicesTeam" + ], + "path": "OU=Southern,DC=deltasystems,DC=local" + } + } + } + } + } +} diff --git a/ad/GOAD-variant-1/files/dc02/bot_rdp.ps1 b/ad/GOAD-variant-1/files/dc02/bot_rdp.ps1 new file mode 100644 index 00000000..b2cc6c44 --- /dev/null +++ b/ad/GOAD-variant-1/files/dc02/bot_rdp.ps1 @@ -0,0 +1,7 @@ +# https://learn.microsoft.com/fr-fr/troubleshoot/windows-server/user-profiles-and-logon/turn-on-automatic-logon +if(-not(query session catherine2.ramos /server:summit)) { + #kill process if exist + Get-Process mstsc -IncludeUserName | Where {$_.UserName -eq "HQ\catherine2.ramos"}|Stop-Process + #run the command + mstsc /v:summit +} diff --git a/ad/GOAD-variant-1/files/dc02/sysvol_scripts/script.ps1 b/ad/GOAD-variant-1/files/dc02/sysvol_scripts/script.ps1 new file mode 100644 index 00000000..e917545f --- /dev/null +++ b/ad/GOAD-variant-1/files/dc02/sysvol_scripts/script.ps1 @@ -0,0 +1,7 @@ +# fake script in netlogon with creds +$task = '/c TODO' +$taskName = "fake task" +$user = "HQ\brenda.lee" +$password = "60)XJ*11Sm" + +# passwords in sysvol still ... diff --git a/ad/GOAD-variant-1/files/dc02/sysvol_scripts/secret.ps1 b/ad/GOAD-variant-1/files/dc02/sysvol_scripts/secret.ps1 new file mode 100644 index 00000000..371d2680 --- /dev/null +++ b/ad/GOAD-variant-1/files/dc02/sysvol_scripts/secret.ps1 @@ -0,0 +1,13 @@ +# cypher script +# $domain="deltasystems.local" +# $EncryptionKeyBytes = New-Object Byte[] 32 +# [Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($EncryptionKeyBytes) +# $EncryptionKeyBytes | Out-File "encryption.key" +# $EncryptionKeyData = Get-Content "encryption.key" +# Read-Host -AsSecureString | ConvertFrom-SecureString -Key $EncryptionKeyData | Out-File -FilePath "secret.encrypted" + +# secret stored : +$keyData = 177, 252, 228, 64, 28, 91, 12, 201, 20, 91, 21, 139, 255, 65, 9, 247, 41, 55, 164, 28, 75, 132, 143, 71, 62, 191, 211, 61, 154, 61, 216, 91 +$secret="76492d1116743f0423413b16050a5345MgB8AGkAcwBDACsAUwArADIAcABRAEcARABnAGYAMwA3AEEAcgBFAEIAYQB2AEEAPQA9AHwAZQAwADgANAA2ADQAMABiADYANAAwADYANgA1ADcANgAxAGIAMQBhAGQANQBlAGYAYQBiADQAYQA2ADkAZgBlAGQAMQAzADAANQAyADUAMgAyADYANAA3ADAAZABiAGEAOAA0AGUAOQBkAGMAZABmAGEANAAyADkAZgAyADIAMwA=" + +# T.L. diff --git a/ad/GOAD-variant-1/files/srv02/all/pamela2.txt b/ad/GOAD-variant-1/files/srv02/all/pamela2.txt new file mode 100644 index 00000000..e3fc71e4 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/all/pamela2.txt @@ -0,0 +1,12 @@ +Subject: Quick Departure + +Hey pamela2, + +I hope this message finds you well. Something urgent has come up, and I have to leave for a while. Don't worry; I'll be back soon. + +I left a little surprise for you in your room – the sword You've named "heNvyj." It felt fitting, given your skills. Take care of it, and it'll take care of you. + +I'll explain everything when I return. Until then, stay sharp, sis. + +Best, +John diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/Default.aspx b/ad/GOAD-variant-1/files/srv02/wwwroot/Default.aspx new file mode 100644 index 00000000..4d1e5eb2 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/Default.aspx @@ -0,0 +1,19 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApp.Default" %> + + + + + + + + + File uploader to the upload/ folder +
+
+
+
+ +
+
+ + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/Web.config b/ad/GOAD-variant-1/files/srv02/wwwroot/Web.config new file mode 100644 index 00000000..1774c7c6 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/Web.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll new file mode 100644 index 00000000..fbb216aa Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/WebApp.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/WebApp.dll new file mode 100644 index 00000000..0ad13b81 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/WebApp.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/WebApp.pdb b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/WebApp.pdb new file mode 100644 index 00000000..19dc5647 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/WebApp.pdb differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Build.Tasks.CodeAnalysis.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Build.Tasks.CodeAnalysis.dll new file mode 100644 index 00000000..702c5572 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Build.Tasks.CodeAnalysis.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets new file mode 100644 index 00000000..2fc5cff1 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets @@ -0,0 +1,135 @@ + + + + + + + + + $(NoWarn);1701;1702 + + + + + $(NoWarn);2008 + + + + + $(AppConfig) + + + $(IntermediateOutputPath)$(TargetName).compile.pdb + + + + + + + + + <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" /> + + + + + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.CSharp.Scripting.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.CSharp.Scripting.dll new file mode 100644 index 00000000..3bace352 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.CSharp.Scripting.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.CSharp.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.CSharp.dll new file mode 100644 index 00000000..0771ae23 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.CSharp.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.Scripting.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.Scripting.dll new file mode 100644 index 00000000..2f0fb9a2 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.Scripting.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.VisualBasic.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.VisualBasic.dll new file mode 100644 index 00000000..b37dd9a7 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.VisualBasic.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.dll new file mode 100644 index 00000000..e7a6979f Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.CodeAnalysis.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.DiaSymReader.Native.amd64.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.DiaSymReader.Native.amd64.dll new file mode 100644 index 00000000..e376a203 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.DiaSymReader.Native.amd64.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.DiaSymReader.Native.x86.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.DiaSymReader.Native.x86.dll new file mode 100644 index 00000000..5ebef7fe Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.DiaSymReader.Native.x86.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets new file mode 100644 index 00000000..8c030078 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + true + + + + + + true + + + + + + + + <_MappedSourceRoot Remove="@(_MappedSourceRoot)" /> + + + + + + + + + + + + + + + true + + + + + + + + + + + <_TopLevelSourceRoot Include="@(SourceRoot)" Condition="'%(SourceRoot.NestedRoot)' == ''"/> + + + + + + + ,$(PathMap) + + + @(_TopLevelSourceRoot->'%(Identity)=%(MappedPath)', ',')$(PathMap) + + + + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets new file mode 100644 index 00000000..61906358 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets @@ -0,0 +1,132 @@ + + + + + + + + <_NoWarnings Condition="'$(WarningLevel)' == '0'">true + <_NoWarnings Condition="'$(WarningLevel)' == '1'">false + + + + + $(IntermediateOutputPath)$(TargetName).compile.pdb + + + + + + + + <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" /> + + + + + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Win32.Primitives.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Win32.Primitives.dll new file mode 100644 index 00000000..d7b2a2ce Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/Microsoft.Win32.Primitives.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.AppContext.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.AppContext.dll new file mode 100644 index 00000000..5cb9dfb0 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.AppContext.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Collections.Immutable.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Collections.Immutable.dll new file mode 100644 index 00000000..7e8bbedc Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Collections.Immutable.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Console.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Console.dll new file mode 100644 index 00000000..f47e6093 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Console.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.DiagnosticSource.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.DiagnosticSource.dll new file mode 100644 index 00000000..eafb192b Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.DiagnosticSource.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.FileVersionInfo.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.FileVersionInfo.dll new file mode 100644 index 00000000..77248bfb Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.FileVersionInfo.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.StackTrace.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.StackTrace.dll new file mode 100644 index 00000000..5ec85f36 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Diagnostics.StackTrace.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Globalization.Calendars.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Globalization.Calendars.dll new file mode 100644 index 00000000..137ecf86 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Globalization.Calendars.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.Compression.ZipFile.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.Compression.ZipFile.dll new file mode 100644 index 00000000..23a12b8d Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.Compression.ZipFile.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.Compression.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.Compression.dll new file mode 100644 index 00000000..f8468a65 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.Compression.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.FileSystem.Primitives.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.FileSystem.Primitives.dll new file mode 100644 index 00000000..ad9c238c Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.FileSystem.Primitives.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.FileSystem.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.FileSystem.dll new file mode 100644 index 00000000..7c439774 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.IO.FileSystem.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Net.Http.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Net.Http.dll new file mode 100644 index 00000000..900e64e4 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Net.Http.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Net.Sockets.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Net.Sockets.dll new file mode 100644 index 00000000..4d012031 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Net.Sockets.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Reflection.Metadata.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Reflection.Metadata.dll new file mode 100644 index 00000000..49b79976 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Reflection.Metadata.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Runtime.InteropServices.RuntimeInformation.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Runtime.InteropServices.RuntimeInformation.dll new file mode 100644 index 00000000..360e92aa Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Runtime.InteropServices.RuntimeInformation.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Algorithms.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Algorithms.dll new file mode 100644 index 00000000..fa8ad651 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Algorithms.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Encoding.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Encoding.dll new file mode 100644 index 00000000..de1ec5e5 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Encoding.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Primitives.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Primitives.dll new file mode 100644 index 00000000..16b24465 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.Primitives.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.X509Certificates.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.X509Certificates.dll new file mode 100644 index 00000000..e6af9609 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Security.Cryptography.X509Certificates.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Text.Encoding.CodePages.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Text.Encoding.CodePages.dll new file mode 100644 index 00000000..0f2f4474 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Text.Encoding.CodePages.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Threading.Tasks.Extensions.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Threading.Tasks.Extensions.dll new file mode 100644 index 00000000..a1234ce8 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Threading.Tasks.Extensions.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.ValueTuple.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.ValueTuple.dll new file mode 100644 index 00000000..78a18514 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.ValueTuple.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.ReaderWriter.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.ReaderWriter.dll new file mode 100644 index 00000000..3d5103bf Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.ReaderWriter.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XPath.XDocument.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XPath.XDocument.dll new file mode 100644 index 00000000..ada40e06 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XPath.XDocument.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XPath.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XPath.dll new file mode 100644 index 00000000..86a25a35 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XPath.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XmlDocument.dll b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XmlDocument.dll new file mode 100644 index 00000000..cf138d38 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/System.Xml.XmlDocument.dll differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe new file mode 100644 index 00000000..e50edac8 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config new file mode 100644 index 00000000..dffe88bf --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.exe b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.exe new file mode 100644 index 00000000..4893d9e0 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.exe differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.exe.config b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.exe.config new file mode 100644 index 00000000..3dc92280 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.exe.config @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.rsp b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.rsp new file mode 100644 index 00000000..cc27aa68 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csc.rsp @@ -0,0 +1,46 @@ +# Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +# This file contains command-line options that the C# +# command line compiler (CSC) will process as part +# of every compilation, unless the "/noconfig" option +# is specified. + +# Reference the common Framework libraries +/r:Accessibility.dll +/r:Microsoft.CSharp.dll +/r:System.Configuration.dll +/r:System.Configuration.Install.dll +/r:System.Core.dll +/r:System.Data.dll +/r:System.Data.DataSetExtensions.dll +/r:System.Data.Linq.dll +/r:System.Data.OracleClient.dll +/r:System.Deployment.dll +/r:System.Design.dll +/r:System.DirectoryServices.dll +/r:System.dll +/r:System.Drawing.Design.dll +/r:System.Drawing.dll +/r:System.EnterpriseServices.dll +/r:System.Management.dll +/r:System.Messaging.dll +/r:System.Runtime.Remoting.dll +/r:System.Runtime.Serialization.dll +/r:System.Runtime.Serialization.Formatters.Soap.dll +/r:System.Security.dll +/r:System.ServiceModel.dll +/r:System.ServiceModel.Web.dll +/r:System.ServiceProcess.dll +/r:System.Transactions.dll +/r:System.Web.dll +/r:System.Web.Extensions.Design.dll +/r:System.Web.Extensions.dll +/r:System.Web.Mobile.dll +/r:System.Web.RegularExpressions.dll +/r:System.Web.Services.dll +/r:System.Windows.Forms.dll +/r:System.Workflow.Activities.dll +/r:System.Workflow.ComponentModel.dll +/r:System.Workflow.Runtime.dll +/r:System.Xml.dll +/r:System.Xml.Linq.dll diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.exe b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.exe new file mode 100644 index 00000000..6d9990c9 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.exe differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.exe.config b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.exe.config new file mode 100644 index 00000000..7ae4aa49 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.exe.config @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.rsp b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.rsp new file mode 100644 index 00000000..91188541 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/csi.rsp @@ -0,0 +1,14 @@ +/r:System +/r:System.Core +/r:Microsoft.CSharp +/r:System.ValueTuple.dll +/u:System +/u:System.IO +/u:System.Collections.Generic +/u:System.Console +/u:System.Diagnostics +/u:System.Dynamic +/u:System.Linq +/u:System.Linq.Expressions +/u:System.Text +/u:System.Threading.Tasks diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.exe b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.exe new file mode 100644 index 00000000..2c520a96 Binary files /dev/null and b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.exe differ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.exe.config b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.exe.config new file mode 100644 index 00000000..3dc92280 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.exe.config @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.rsp b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.rsp new file mode 100644 index 00000000..5a7d9090 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/bin/roslyn/vbc.rsp @@ -0,0 +1,55 @@ +# Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +# This file contains command-line options that the VB +# command line compiler (VBC) will process as part +# of every compilation, unless the "/noconfig" option +# is specified. + +# Reference the common Framework libraries +/r:Accessibility.dll +/r:System.Configuration.dll +/r:System.Configuration.Install.dll +/r:System.Data.dll +/r:System.Data.OracleClient.dll +/r:System.Deployment.dll +/r:System.Design.dll +/r:System.DirectoryServices.dll +/r:System.dll +/r:System.Drawing.Design.dll +/r:System.Drawing.dll +/r:System.EnterpriseServices.dll +/r:System.Management.dll +/r:System.Messaging.dll +/r:System.Runtime.Remoting.dll +/r:System.Runtime.Serialization.Formatters.Soap.dll +/r:System.Security.dll +/r:System.ServiceProcess.dll +/r:System.Transactions.dll +/r:System.Web.dll +/r:System.Web.Mobile.dll +/r:System.Web.RegularExpressions.dll +/r:System.Web.Services.dll +/r:System.Windows.Forms.dll +/r:System.XML.dll + +/r:System.Workflow.Activities.dll +/r:System.Workflow.ComponentModel.dll +/r:System.Workflow.Runtime.dll +/r:System.Runtime.Serialization.dll +/r:System.ServiceModel.dll + +/r:System.Core.dll +/r:System.Xml.Linq.dll +/r:System.Data.Linq.dll +/r:System.Data.DataSetExtensions.dll +/r:System.Web.Extensions.dll +/r:System.Web.Extensions.Design.dll +/r:System.ServiceModel.Web.dll + +# Import System and Microsoft.VisualBasic +/imports:System +/imports:Microsoft.VisualBasic +/imports:System.Linq +/imports:System.Xml.Linq + +/optioninfer+ diff --git a/ad/GOAD-variant-1/files/srv02/wwwroot/index.html b/ad/GOAD-variant-1/files/srv02/wwwroot/index.html new file mode 100644 index 00000000..888e3f86 --- /dev/null +++ b/ad/GOAD-variant-1/files/srv02/wwwroot/index.html @@ -0,0 +1,7 @@ + + + + +

Please follow this link to upload your files.

+ + diff --git a/extensions/exchange/ansible/iso/.gitkeep b/ad/GOAD-variant-1/files/srv02/wwwroot/upload/.gitkeep similarity index 100% rename from extensions/exchange/ansible/iso/.gitkeep rename to ad/GOAD-variant-1/files/srv02/wwwroot/upload/.gitkeep diff --git a/ad/GOAD-variant-1/mapping.json b/ad/GOAD-variant-1/mapping.json new file mode 100644 index 00000000..5a4efe39 --- /dev/null +++ b/ad/GOAD-variant-1/mapping.json @@ -0,0 +1,252 @@ +{ + "domains": { + "sevenkingdoms.local": "deltasystems.local", + "north.sevenkingdoms.local": "hq.deltasystems.local", + "essos.local": "vortexindustries.local" + }, + "netbios": { + "SEVENKINGDOMS": "DELTASYSTEMS", + "NORTH": "HQ", + "ESSOS": "VORTEXIND", + "sevenkingdoms": "deltasystems", + "north": "hq", + "essos": "vortexind", + "Sevenkingdoms": "Deltasystems", + "North": "Hq", + "Essos": "Vortexind" + }, + "hosts": { + "dc01": { + "old_hostname": "kingslanding", + "new_hostname": "guardian-app", + "old_fqdn": "kingslanding.sevenkingdoms.local", + "new_fqdn": "guardian-app.deltasystems.local", + "old_domain": "sevenkingdoms.local", + "new_domain": "deltasystems.local" + }, + "dc02": { + "old_hostname": "winterfell", + "new_hostname": "beacon", + "old_fqdn": "winterfell.north.sevenkingdoms.local", + "new_fqdn": "beacon.hq.deltasystems.local", + "old_domain": "north.sevenkingdoms.local", + "new_domain": "hq.deltasystems.local" + }, + "srv02": { + "old_hostname": "castelblack", + "new_hostname": "summit", + "old_fqdn": "castelblack.north.sevenkingdoms.local", + "new_fqdn": "summit.hq.deltasystems.local", + "old_domain": "north.sevenkingdoms.local", + "new_domain": "hq.deltasystems.local" + }, + "dc03": { + "old_hostname": "meereen", + "new_hostname": "beacon-app", + "old_fqdn": "meereen.essos.local", + "new_fqdn": "beacon-app.vortexindustries.local", + "old_domain": "essos.local", + "new_domain": "vortexindustries.local" + }, + "srv03": { + "old_hostname": "braavos", + "new_hostname": "titan", + "old_fqdn": "braavos.essos.local", + "new_fqdn": "titan.vortexindustries.local", + "old_domain": "essos.local", + "new_domain": "vortexindustries.local" + } + }, + "users": { + "daenerys.targaryen": "kenneth.carter", + "viserys.targaryen": "charles.walker", + "khal.drogo": "pamela.clark", + "jorah.mormont": "catherine.turner", + "missandei": "susan.white", + "drogon": "shirley.gonzalez", + "sql_svc": "sql_svc", + "arya.stark": "pamela2.rogers", + "eddard.stark": "william.wood", + "catelyn.stark": "anna.roberts", + "robb.stark": "catherine2.ramos", + "sansa.stark": "ryan.myers", + "brandon.stark": "alexander.peterson", + "rickon.stark": "laura.campbell", + "hodor": "emily.baker", + "jon.snow": "christine.martin", + "samwell.tarly": "stephanie.williams", + "jeor.mormont": "brenda.lee", + "tywin.lannister": "brian.johnson", + "jaime.lannister": "george.parker", + "cersei.lannister": "stephanie2.hughes", + "tyron.lannister": "christine2.martin2", + "robert.baratheon": "eric.flores", + "joffrey.baratheon": "karen.moore", + "renly.baratheon": "michelle.mitchell", + "stannis.baratheon": "charles2.parker2", + "petyer.baelish": "sharon.wilson", + "lord.varys": "pamela3.diaz", + "maester.pycelle": "deborah.edwards" + }, + "passwords": { + "iamthekingoftheworld": "mcnkpmyufebebibtdmcc", + "Sup1_sa_P@ssw0rd!": "6q_E@9Bk]^|LolaX9", + "fr3edom": "l246ggx", + "BurnThemAll!": "Av^MO$q>t)*x-Iz", + "robbsansabradonaryarickon": "uejpqnidxtnoehjdwbtsqaztl", + "Winter2022": "MTmya1uW0b", + "MaesterOfMaesters": "WFqrVsLcNEFirMwxV", + "Needle": "heNvyj", + "iknownothing": "ddlfwkwdemov", + "VExkHyfsKTW_HMNA7fQy": "xYK7tDxi:+PSp(AS;>=%", + "1killerlion": "zzseh2865o2", + "cersei": "bpyhct", + "345ertdfg": "si4q5iagz", + "il0vejaime": "3jivwfkcxr", + "YouWillNotKerboroast1ngMeeeeee": "g0JGPuQBYkLNtB60YJwNoclpn8FCyI", + "Alc00L&S3x": "@U#7L^SKww", + "@littlefinger@": "<+p*d<,vg<*-hx", + "iseedeadpeople": "wlrucscdadzooz", + "_W1sper_$": "6&BeB8*+M", + "lorastyrell": "yuddrrlgxpv", + "hodor": "jqfay", + "qjQ!bcwXKU!3yBrDM2VU": "m798_WN0mbDFKFv)>szo", + "M!BbXzL48D9mH9dQzp*e": "^$1N+]GIm4s1smahoB_]", + "Heartsbane": "JUHTgaxCdT", + "powerkingftw135": "f5ql8xzwbco69kd", + "horse": "vcjff", + "sa_P@ssw0rd!Ess0s": "ZX8HtJQcV!kom[5L]", + "_L0ngCl@w_": "60)XJ*11Sm", + "GoldCrown": "PQArKVRKX", + "sexywolfy": "plyfvjuqn", + "Drag0nst0ne": "ra4QyzbTFQD", + "H0nnor!": "Z]#9y@%" + }, + "groups": { + "Targaryen": "OperationsStaff", + "Dothraki": "SupportGroup", + "Dragons": "AdministrationGroup", + "QueenProtector": "Services", + "Domain Admins": "Domain Admins", + "DragonsFriends": "AdministrationSquad", + "Spys": "SupportSquad", + "Stark": "Operations", + "Night Watch": "Systems", + "Mormont": "LeadershipSquad", + "AcrossTheSea": "PlatformUnit", + "Lannister": "Systems2", + "Baratheon": "ExecutiveUnit", + "Small Council": "ServicesTeam", + "DragonStone": "Administration", + "KingsGuard": "Security", + "DragonRider": "AdministrationSquad2", + "AcrossTheNarrowSea": "InfrastructureTeam" + }, + "ous": { + "Vale": "Legal", + "IronIslands": "Europe", + "Riverlands": "APAC", + "Crownlands": "Southern", + "Stormlands": "Western", + "Westerlands": "HR", + "Reach": "Americas", + "Dorne": "Corporate" + }, + "acls": {}, + "misc": { + "kingslanding$": "guardian-app$", + "KINGSLANDING": "GUARDIAN-APP", + "Kingslanding": "Guardian-app", + "winterfell$": "beacon$", + "WINTERFELL": "BEACON", + "Winterfell": "Dallas", + "castelblack$": "summit$", + "CASTELBLACK": "SUMMIT", + "Castelblack": "Summit", + "meereen$": "beacon-app$", + "MEEREEN": "BEACON-APP", + "Meereen": "Beacon-app", + "Meren": "Beacon-app", + "braavos$": "titan$", + "BRAAVOS": "TITAN", + "Braavos": "Titan", + "Bravos": "Titan", + "daenerys": "kenneth", + "Daenerys": "Kenneth", + "targaryen": "walker", + "Targaryen": "Walker", + "viserys": "charles", + "Viserys": "Charles", + "khal": "pamela", + "Khal": "Pamela", + "drogo": "clark", + "Drogo": "Clark", + "jorah": "catherine", + "Jorah": "Catherine", + "mormont": "turner", + "Mormont": "lee", + "missandei": "susan", + "Missandei": "Susan", + "drogon": "shirley", + "Drogon": "Shirley", + "Arya": "pamela2", + "arya": "pamela2", + "Stark": "campbell", + "Eddard": "william", + "eddard": "william", + "Catelyn": "anna", + "catelyn": "anna", + "Robb": "catherine2", + "robb": "catherine2", + "Sansa": "ryan", + "sansa": "ryan", + "Brandon": "alexander", + "brandon": "alexander", + "Rickon": "laura", + "rickon": "laura", + "hodor": "baker", + "Hodor": "Baker", + "Jon": "christine", + "jon": "christine", + "Snow": "martin", + "Samwell": "stephanie", + "samwell": "stephanie", + "Tarly": "williams", + "Jeor": "brenda", + "jeor": "brenda", + "Tywin": "brian", + "tywin": "brian", + "Lanister": "martin2", + "Jaime": "george", + "jaime": "george", + "Cersei": "stephanie2", + "cersei": "stephanie2", + "Tyron": "christine2", + "tyron": "christine2", + "Robert": "eric", + "robert": "eric", + "Baratheon": "parker2", + "Joffrey": "karen", + "joffrey": "karen", + "Renly": "michelle", + "renly": "michelle", + "Stannis": "charles2", + "stannis": "charles2", + "Petyer": "sharon", + "petyer": "sharon", + "Baelish": "wilson", + "Lord": "pamela3", + "lord": "pamela3", + "Varys": "diaz", + "Maester": "deborah", + "maester": "deborah", + "Pycelle": "edwards", + "gmsaDragon": "gmsaFalcon", + "gmsaDragon$": "gmsaFalcon$", + "Castel Black": "Denver", + "Casterly Rock": "San Francisco", + "King's Landing": "Phoenix" + } +} diff --git a/ad/GOAD-variant-1/providers/aws/inventory b/ad/GOAD-variant-1/providers/aws/inventory new file mode 100644 index 00000000..b3488171 --- /dev/null +++ b/ad/GOAD-variant-1/providers/aws/inventory @@ -0,0 +1,20 @@ +[default] +; Note: ansible_host *MUST* be an IPv4 address or setting things like DNS +; servers will break. +; ------------------------------------------------ +; deltasystems.local +; ------------------------------------------------ +dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 ansible_user=ansible ansible_password=8dCT-DJjgScp +; ------------------------------------------------ +; hq.deltasystems.local +; ------------------------------------------------ +dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 ansible_user=ansible ansible_password=NgtI75cKV+Pu +srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 ansible_user=ansible ansible_password=NgtI75cKV+Pu +; ------------------------------------------------ +; vortexindustries.local +; ------------------------------------------------ +dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 ansible_user=ansible ansible_password=Ufe-bVXSx9rk +srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 ansible_user=ansible ansible_password=978i2pF43UJ- + +[all:vars] +admin_user=goadmin diff --git a/ad/GOAD-variant-1/providers/aws/linux.tf b/ad/GOAD-variant-1/providers/aws/linux.tf new file mode 100644 index 00000000..0054364c --- /dev/null +++ b/ad/GOAD-variant-1/providers/aws/linux.tf @@ -0,0 +1,13 @@ +# NOTE: AMI IDs below are region-specific (originally eu-west-1). +# Replace with AMI IDs for your target AWS region. +# See: https://aws.amazon.com/marketplace for Windows Server base AMIs + +# "lx01" = { +# name = "lx01" +# linux_sku = "22_04-lts-gen2" +# linux_version = "latest" +# ami = "ami-00c71bd4d220aa22a" +# private_ip_address = "{{ip_range}}.40" +# password = "suppaP@ssw0rd$" +# size = "t2.medium" +# } diff --git a/ad/GOAD-variant-1/providers/aws/windows.tf b/ad/GOAD-variant-1/providers/aws/windows.tf new file mode 100644 index 00000000..c9e714d5 --- /dev/null +++ b/ad/GOAD-variant-1/providers/aws/windows.tf @@ -0,0 +1,53 @@ +# t2.medium = 2cpu / 4GB +# t2.large = 2cpu / 8GB +# t2.xlarge = 4cpu / 16GB + +# NOTE: AMI IDs below are region-specific (originally eu-west-1). +# Replace with AMI IDs for your target AWS region. +# See: https://aws.amazon.com/marketplace for Windows Server base AMIs + +"dc01" = { + name = "dc01" + domain = "deltasystems.local" + windows_sku = "2019-Datacenter" + ami = "ami-07b70ee6215b30557" + instance_type = "t2.medium" + private_ip_address = "{{ip_range}}.10" + password = "8dCT-DJjgScp" +} +"dc02" = { + name = "dc02" + domain = "hq.deltasystems.local" + windows_sku = "2019-Datacenter" + ami = "ami-07b70ee6215b30557" + instance_type = "t2.medium" + private_ip_address = "{{ip_range}}.11" + password = "NgtI75cKV+Pu" +} +"dc03" = { + name = "dc03" + domain = "vortexindustries.local" + windows_sku = "2016-Datacenter" + ami = "ami-0dbedda2d0007250e" + instance_type = "t2.medium" + private_ip_address = "{{ip_range}}.12" + password = "Ufe-bVXSx9rk" +} +"srv02" = { + name = "srv02" + domain = "hq.deltasystems.local" + windows_sku = "2019-Datacenter" + ami = "ami-07b70ee6215b30557" + instance_type = "t2.medium" + private_ip_address = "{{ip_range}}.22" + password = "NgtI75cKV+Pu" +} +"srv03" = { + name = "srv03" + domain = "vortexindustries.local" + windows_sku = "2016-Datacenter" + ami = "ami-07b70ee6215b30557" + instance_type = "t2.medium" + private_ip_address = "{{ip_range}}.23" + password = "978i2pF43UJ-" +} diff --git a/ad/GOAD-variant-1/providers/azure/inventory b/ad/GOAD-variant-1/providers/azure/inventory new file mode 100644 index 00000000..b3488171 --- /dev/null +++ b/ad/GOAD-variant-1/providers/azure/inventory @@ -0,0 +1,20 @@ +[default] +; Note: ansible_host *MUST* be an IPv4 address or setting things like DNS +; servers will break. +; ------------------------------------------------ +; deltasystems.local +; ------------------------------------------------ +dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 ansible_user=ansible ansible_password=8dCT-DJjgScp +; ------------------------------------------------ +; hq.deltasystems.local +; ------------------------------------------------ +dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 ansible_user=ansible ansible_password=NgtI75cKV+Pu +srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 ansible_user=ansible ansible_password=NgtI75cKV+Pu +; ------------------------------------------------ +; vortexindustries.local +; ------------------------------------------------ +dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 ansible_user=ansible ansible_password=Ufe-bVXSx9rk +srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 ansible_user=ansible ansible_password=978i2pF43UJ- + +[all:vars] +admin_user=goadmin diff --git a/ad/GOAD-variant-1/providers/azure/linux.tf b/ad/GOAD-variant-1/providers/azure/linux.tf new file mode 100644 index 00000000..034080fc --- /dev/null +++ b/ad/GOAD-variant-1/providers/azure/linux.tf @@ -0,0 +1,8 @@ +# "lx01" = { +# name = "lx01" +# linux_sku = "22_04-lts-gen2" +# linux_version = "latest" +# private_ip_address = "{{ip_range}}.40" +# password = "suppaP@ssw0rd$" +# size = "Standard_B2s" +# } diff --git a/ad/GOAD-variant-1/providers/azure/windows.tf b/ad/GOAD-variant-1/providers/azure/windows.tf new file mode 100644 index 00000000..cda2e380 --- /dev/null +++ b/ad/GOAD-variant-1/providers/azure/windows.tf @@ -0,0 +1,53 @@ +# Standard_B2s : 2 CPU / 4GB +# Standard_B2ms : 2CPU / 8GB +# Standard_B4ms : 4 cpu / 16 GB +"dc01" = { + name = "dc01" + publisher = "MicrosoftWindowsServer" + offer = "WindowsServer" + windows_sku = "2019-Datacenter" + windows_version = "17763.4377.230505" # deprecated : "2019.0.20181122" + private_ip_address = "{{ip_range}}.10" + password = "8dCT-DJjgScp" + size = "Standard_B2s" +} +"dc02" = { + name = "dc02" + publisher = "MicrosoftWindowsServer" + offer = "WindowsServer" + windows_sku = "2019-Datacenter" + windows_version = "17763.4377.230505" # deprecated : "2019.0.20181122" + private_ip_address = "{{ip_range}}.11" + password = "NgtI75cKV+Pu" + size = "Standard_B2s" +} +"dc03" = { + name = "dc03" + publisher = "MicrosoftWindowsServer" + offer = "WindowsServer" + windows_sku = "2016-Datacenter" + windows_version = "14393.5921.230506" # deprecated : "2016.127.20181122" + private_ip_address = "{{ip_range}}.12" + password = "Ufe-bVXSx9rk" + size = "Standard_B2s" +} +"srv02" = { + name = "srv02" + publisher = "MicrosoftWindowsServer" + offer = "WindowsServer" + windows_sku = "2019-Datacenter" + windows_version = "17763.4377.230505" # deprecated : "2019.0.20181122" + private_ip_address = "{{ip_range}}.22" + password = "NgtI75cKV+Pu" + size = "Standard_B2s" +} +"srv03" = { + name = "srv03" + publisher = "MicrosoftWindowsServer" + offer = "WindowsServer" + windows_sku = "2016-Datacenter" + windows_version = "14393.5921.230506" # deprecated : "2016.127.20181122" + private_ip_address = "{{ip_range}}.23" + password = "978i2pF43UJ-" + size = "Standard_B2s" +} diff --git a/ad/GOAD-variant-1/providers/ludus/config.yml b/ad/GOAD-variant-1/providers/ludus/config.yml new file mode 100644 index 00000000..70340fea --- /dev/null +++ b/ad/GOAD-variant-1/providers/ludus/config.yml @@ -0,0 +1,46 @@ +ludus: + - vm_name: "{{ range_id }}-GOAD-DC01" + hostname: "{{ range_id }}-DC01" + template: win2019-server-x64-template + vlan: 10 + ip_last_octet: 10 + ram_gb: 4 + cpus: 2 + windows: + sysprep: true + - vm_name: "{{ range_id }}-GOAD-DC02" + hostname: "{{ range_id }}-DC02" + template: win2019-server-x64-template + vlan: 10 + ip_last_octet: 11 + ram_gb: 4 + cpus: 2 + windows: + sysprep: true + - vm_name: "{{ range_id }}-GOAD-DC03" + hostname: "{{ range_id }}-DC03" + template: win2016-server-x64-template + vlan: 10 + ip_last_octet: 12 + ram_gb: 4 + cpus: 2 + windows: + sysprep: true + - vm_name: "{{ range_id }}-GOAD-SRV02" + hostname: "{{ range_id }}-SRV02" + template: win2019-server-x64-template + vlan: 10 + ip_last_octet: 22 + ram_gb: 4 + cpus: 2 + windows: + sysprep: true + - vm_name: "{{ range_id }}-GOAD-SRV03" + hostname: "{{ range_id }}-SRV03" + template: win2019-server-x64-template + vlan: 10 + ip_last_octet: 23 + ram_gb: 4 + cpus: 2 + windows: + sysprep: true diff --git a/ad/GOAD-variant-1/providers/ludus/inventory b/ad/GOAD-variant-1/providers/ludus/inventory new file mode 100644 index 00000000..f7a05213 --- /dev/null +++ b/ad/GOAD-variant-1/providers/ludus/inventory @@ -0,0 +1,26 @@ +[default] +; Note: ansible_host *MUST* be an IPv4 address or setting things like DNS +; servers will break. +; ------------------------------------------------ +; deltasystems.local +; ------------------------------------------------ +dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 +; ------------------------------------------------ +; hq.deltasystems.local +; ------------------------------------------------ +dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 +srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 +; ------------------------------------------------ +; vortexindustries.local +; ------------------------------------------------ +dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 +srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 + +[all:vars] +force_dns_server=no +dns_server={{ip_range}}.254 + +dns_server_forwarder={{ip_range}}.254 + +ansible_user=localuser +ansible_password=password diff --git a/ad/GOAD-variant-1/providers/proxmox/inventory b/ad/GOAD-variant-1/providers/proxmox/inventory new file mode 100644 index 00000000..ac06df41 --- /dev/null +++ b/ad/GOAD-variant-1/providers/proxmox/inventory @@ -0,0 +1,21 @@ +[default] +; Note: ansible_host *MUST* be an IPv4 address or setting things like DNS +; servers will break. +; ------------------------------------------------ +; deltasystems.local +; ------------------------------------------------ +dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 +; ------------------------------------------------ +; hq.deltasystems.local +; ------------------------------------------------ +dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 +srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 +; ------------------------------------------------ +; vortexindustries.local +; ------------------------------------------------ +dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 +srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 + +[all:vars] +force_dns_server=yes +dns_server={{ip_range}}.1 diff --git a/ad/GOAD-variant-1/providers/proxmox/windows.tf b/ad/GOAD-variant-1/providers/proxmox/windows.tf new file mode 100644 index 00000000..ffd98b25 --- /dev/null +++ b/ad/GOAD-variant-1/providers/proxmox/windows.tf @@ -0,0 +1,50 @@ +"dc01" = { + name = "DC01" + desc = "DC01 - windows server 2019 - {{ip_range}}.10" + cores = 2 + memory = 3096 + clone = "WinServer2019_x64" + dns = "{{ip_range}}.1" + ip = "{{ip_range}}.10/24" + gateway = "{{ip_range}}.1" +} +"dc02" = { + name = "DC02" + desc = "DC02 - windows server 2019 - {{ip_range}}.11" + cores = 2 + memory = 3096 + clone = "WinServer2019_x64" + dns = "{{ip_range}}.1" + ip = "{{ip_range}}.11/24" + gateway = "{{ip_range}}.1" +} +"dc03" = { + name = "DC03" + desc = "DC03 - windows server 2016 - {{ip_range}}.12" + cores = 2 + memory = 3096 + clone = "WinServer2016_x64" + dns = "{{ip_range}}.1" + ip = "{{ip_range}}.12/24" + gateway = "{{ip_range}}.1" +} +"srv02" = { + name = "SRV02" + desc = "SRV02 - windows server 2019 - {{ip_range}}.22" + cores = 2 + memory = 6240 + clone = "WinServer2019_x64" + dns = "{{ip_range}}.1" + ip = "{{ip_range}}.22/24" + gateway = "{{ip_range}}.1" +} +"srv03" = { + name = "SRV03" + desc = "SRV03 - windows server 2016 - {{ip_range}}.23" + cores = 2 + memory = 5120 + clone = "WinServer2016_x64" + dns = "{{ip_range}}.1" + ip = "{{ip_range}}.23/24" + gateway = "{{ip_range}}.1" +} diff --git a/ad/GOAD-variant-1/providers/virtualbox/Vagrantfile b/ad/GOAD-variant-1/providers/virtualbox/Vagrantfile new file mode 100644 index 00000000..820a140b --- /dev/null +++ b/ad/GOAD-variant-1/providers/virtualbox/Vagrantfile @@ -0,0 +1,12 @@ +boxes = [ + # windows server 2019 + { :name => "GOAD-DC01", :ip => "{{ip_range}}.10", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2019 + { :name => "GOAD-DC02", :ip => "{{ip_range}}.11", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2016 + { :name => "GOAD-DC03", :ip => "{{ip_range}}.12", :box => "StefanScherer/windows_2016", :box_version => "2017.12.14", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2019 + { :name => "GOAD-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000}, + # windows server 2016 + { :name => "GOAD-SRV03", :ip => "{{ip_range}}.23", :box => "StefanScherer/windows_2016", :box_version => "2019.02.14", :os => "windows", :cpus => 2, :mem => 5000} +] diff --git a/ad/GOAD-variant-1/providers/virtualbox/inventory b/ad/GOAD-variant-1/providers/virtualbox/inventory new file mode 100644 index 00000000..50cbae91 --- /dev/null +++ b/ad/GOAD-variant-1/providers/virtualbox/inventory @@ -0,0 +1,17 @@ +[default] +; Note: ansible_host *MUST* be an IPv4 address or setting things like DNS +; servers will break. +; ------------------------------------------------ +; deltasystems.local +; ------------------------------------------------ +dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 +; ------------------------------------------------ +; hq.deltasystems.local +; ------------------------------------------------ +dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 +srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 +; ------------------------------------------------ +; vortexindustries.local +; ------------------------------------------------ +dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 +srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 diff --git a/ad/GOAD-variant-1/providers/vmware/Vagrantfile b/ad/GOAD-variant-1/providers/vmware/Vagrantfile new file mode 100644 index 00000000..820a140b --- /dev/null +++ b/ad/GOAD-variant-1/providers/vmware/Vagrantfile @@ -0,0 +1,12 @@ +boxes = [ + # windows server 2019 + { :name => "GOAD-DC01", :ip => "{{ip_range}}.10", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2019 + { :name => "GOAD-DC02", :ip => "{{ip_range}}.11", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2016 + { :name => "GOAD-DC03", :ip => "{{ip_range}}.12", :box => "StefanScherer/windows_2016", :box_version => "2017.12.14", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2019 + { :name => "GOAD-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000}, + # windows server 2016 + { :name => "GOAD-SRV03", :ip => "{{ip_range}}.23", :box => "StefanScherer/windows_2016", :box_version => "2019.02.14", :os => "windows", :cpus => 2, :mem => 5000} +] diff --git a/ad/GOAD-variant-1/providers/vmware/inventory b/ad/GOAD-variant-1/providers/vmware/inventory new file mode 100644 index 00000000..50cbae91 --- /dev/null +++ b/ad/GOAD-variant-1/providers/vmware/inventory @@ -0,0 +1,17 @@ +[default] +; Note: ansible_host *MUST* be an IPv4 address or setting things like DNS +; servers will break. +; ------------------------------------------------ +; deltasystems.local +; ------------------------------------------------ +dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 +; ------------------------------------------------ +; hq.deltasystems.local +; ------------------------------------------------ +dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 +srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 +; ------------------------------------------------ +; vortexindustries.local +; ------------------------------------------------ +dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 +srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 diff --git a/ad/GOAD-variant-1/providers/vmware_esxi/Vagrantfile b/ad/GOAD-variant-1/providers/vmware_esxi/Vagrantfile new file mode 100644 index 00000000..820a140b --- /dev/null +++ b/ad/GOAD-variant-1/providers/vmware_esxi/Vagrantfile @@ -0,0 +1,12 @@ +boxes = [ + # windows server 2019 + { :name => "GOAD-DC01", :ip => "{{ip_range}}.10", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2019 + { :name => "GOAD-DC02", :ip => "{{ip_range}}.11", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2016 + { :name => "GOAD-DC03", :ip => "{{ip_range}}.12", :box => "StefanScherer/windows_2016", :box_version => "2017.12.14", :os => "windows", :cpus => 2, :mem => 3000}, + # windows server 2019 + { :name => "GOAD-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000}, + # windows server 2016 + { :name => "GOAD-SRV03", :ip => "{{ip_range}}.23", :box => "StefanScherer/windows_2016", :box_version => "2019.02.14", :os => "windows", :cpus => 2, :mem => 5000} +] diff --git a/ad/GOAD-variant-1/providers/vmware_esxi/inventory b/ad/GOAD-variant-1/providers/vmware_esxi/inventory new file mode 100644 index 00000000..50cbae91 --- /dev/null +++ b/ad/GOAD-variant-1/providers/vmware_esxi/inventory @@ -0,0 +1,17 @@ +[default] +; Note: ansible_host *MUST* be an IPv4 address or setting things like DNS +; servers will break. +; ------------------------------------------------ +; deltasystems.local +; ------------------------------------------------ +dc01 ansible_host={{ip_range}}.10 dns_domain=dc01 dict_key=dc01 +; ------------------------------------------------ +; hq.deltasystems.local +; ------------------------------------------------ +dc02 ansible_host={{ip_range}}.11 dns_domain=dc01 dict_key=dc02 +srv02 ansible_host={{ip_range}}.22 dns_domain=dc02 dict_key=srv02 +; ------------------------------------------------ +; vortexindustries.local +; ------------------------------------------------ +dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 +srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 diff --git a/ad/GOAD-variant-1/scripts/archives/acl.ps1 b/ad/GOAD-variant-1/scripts/archives/acl.ps1 new file mode 100644 index 00000000..ceea1eb6 --- /dev/null +++ b/ad/GOAD-variant-1/scripts/archives/acl.ps1 @@ -0,0 +1,110 @@ +# https://github.com/davidprowe/BadBlood/blob/master/AD_OU_SetACL/Full%20Control%20Permissions.ps1 +Import-Module ActiveDirectory +Set-Location AD: + +########################################################################################################### +# SetAcl $for ---- $right ----> $to +########################################################################################################### +Function SetAcl($for, $to, $right, $inheritance) +{ + $forSID = New-Object System.Security.Principal.SecurityIdentifier (Get-ADUser $for).SID + $objOU = ($to).DistinguishedName + $objAcl = get-acl $objOU + # https://docs.microsoft.com/fr-fr/dotnet/api/system.directoryservices.activedirectoryrights?view=dotnet-plat-ext-5.0 + $adRight = [System.DirectoryServices.ActiveDirectoryRights] $right # https://docs.microsoft.com/fr-fr/dotnet/api/system.directoryservices.activedirectoryrights?view=dotnet-plat-ext-5.0 + $type = [System.Security.AccessControl.AccessControlType] "Allow" # https://docs.microsoft.com/fr-fr/dotnet/api/system.security.accesscontrol.accesscontroltype?view=dotnet-plat-ext-5.0 + $inheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] $inheritance # https://docs.microsoft.com/fr-fr/dotnet/api/system.directoryservices.activedirectorysecurityinheritance?view=dotnet-plat-ext-5.0 + $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $forSID,$adRight,$type,$inheritanceType + $objAcl.AddAccessRule($ace) + Set-Acl -AclObject $objAcl -path $objOU +} + +# https://jorgequestforknowledge.wordpress.com/2014/08/20/powershell-and-dacls-in-ad-adding-ace-for-some-extended-right-on-some-object/ +Function SetAclExtended($for, $to, $right, $extendedRightGUID, $inheritance) +{ + $forSID = New-Object System.Security.Principal.SecurityIdentifier (Get-ADUser $for).SID + $objOU = ($to).DistinguishedName + $objAcl = get-acl $objOU + # https://docs.microsoft.com/fr-fr/dotnet/api/system.directoryservices.activedirectoryrights?view=dotnet-plat-ext-5.0 + $adRight = [System.DirectoryServices.ActiveDirectoryRights] $right # https://docs.microsoft.com/fr-fr/dotnet/api/system.directoryservices.activedirectoryrights?view=dotnet-plat-ext-5.0 + $type = [System.Security.AccessControl.AccessControlType] "Allow" # https://docs.microsoft.com/fr-fr/dotnet/api/system.security.accesscontrol.accesscontroltype?view=dotnet-plat-ext-5.0 + $inheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] $inheritance # https://docs.microsoft.com/fr-fr/dotnet/api/system.directoryservices.activedirectorysecurityinheritance?view=dotnet-plat-ext-5.0 + + $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $forSID,$adRight,$type,$extendedRightGUID,$inheritanceType + $objAcl.AddAccessRule($ace) + Set-Acl -AclObject $objAcl -path $objOU +} + +## acl values : +# AccessSystemSecurity +# CreateChild +# Delete +# DeleteChild +# DeleteTree +# ExtendedRight +# GenericAll +# GenericExecute +# GenericRead +# GenericWrite +# ListChildren +# ListObject +# ReadControl +# ReadProperty +# Self +# Synchronize +# WriteDacl +# WriteOwner +# WriteProperty + +## extend rights +# "00299570-246d-11d0-a768-00aa006e0529" {$right = "User-Force-Change-Password"} +# "45ec5156-db7e-47bb-b53f-dbeb2d03c40" {$right = "Reanimate-Tombstones"} +# "bf9679c0-0de6-11d0-a285-00aa003049e2" {$right = "Self-Membership"} +# "ba33815a-4f93-4c76-87f3-57574bff8109" {$right = "Manage-SID-History"} +# "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2" {$right = "DS-Replication-Get-Changes-All"} + +# ACL abuse scenarios +# https://sensepost.com/blog/2020/ace-to-rce/ +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces +# https://adsecurity.org/?p=3658 + +# genericall-on-user +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#genericall-on-user +SetAcl (Get-ADUser "brian.johnson") (Get-ADUser "stephanie2.hughes") "GenericAll" "None" + +# genericall-on-group +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#genericall-on-group +SetAcl (Get-ADUser "pamela3.diaz") (Get-ADGroup "Domain Admins") "GenericAll" "None" + +# genericall-genericwrite-write-on-computer +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#genericall-genericwrite-write-on-computer +SetAcl (Get-ADUser "charles2.parker2") (Get-ADComputer "guardian-app") "GenericAll" "None" + +# writeproperty-on-group +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#writeproperty-on-group +SetAcl (Get-ADUser "sharon.wilson") (Get-ADGroup "Domain Admins") "WriteProperty" "All" + +# self-self-membership-on-group +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#self-self-membership-on-group +SetAclExtended (Get-ADUser "christine2.martin2") (Get-ADGroup "Domain Admins") "Self" "bf9679c0-0de6-11d0-a285-00aa003049e2" "None" + +# writeproperty-self-membership +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#writeproperty-self-membership +SetAclExtended (Get-ADUser "charles2.parker2") (Get-ADGroup "Domain Admins") "WriteProperty" "bf9679c0-0de6-11d0-a285-00aa003049e2" "All" + +# forcechangepassword +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#forcechangepassword +# https://docs.microsoft.com/fr-fr/windows/win32/adschema/r-user-change-password +SetAclExtended (Get-ADUser "brian.johnson") (Get-ADUser "george.parker") "ExtendedRight" "00299570-246d-11d0-a768-00aa006e0529" "None" + +# write owner on group +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#writeowner-on-group +SetAcl (Get-ADUser "deborah.edwards") (Get-ADGroup "Domain Admins") "WriteOwner" "None" + +# genericwrite-on-user +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#genericwrite-on-user +SetAcl (Get-ADUser "george.parker") (Get-ADUser "stephanie2.hughes") "GenericWrite" "None" + +# writedacl-writeowner +# https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces#writedacl-writeowner +SetAcl (Get-ADUser "brian.johnson") (Get-ADGroup "ServicesTeam") "WriteDacl" "None" diff --git a/ad/GOAD-variant-1/scripts/archives/anonymous_ldap.ps1 b/ad/GOAD-variant-1/scripts/archives/anonymous_ldap.ps1 new file mode 100644 index 00000000..250631ea --- /dev/null +++ b/ad/GOAD-variant-1/scripts/archives/anonymous_ldap.ps1 @@ -0,0 +1,6 @@ +$anonymousId = New-Object System.Security.Principal.NTAccount "NT AUTHORITY\ANONYMOUS LOGON" +$secInheritanceAll = [System.DirectoryServices.ActiveDirectorySecurityInheritance] "All" +$Ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $anonymousId,"ReadProperty, GenericExecute","Allow",$secInheritanceAll +$Acl = Get-Acl -Path "AD:$($node.DCPathEnd)" +$Acl.AddAccessRule($Ace) +Set-Acl -Path "AD:$($node.DCPathEnd)" -AclObject $Acl diff --git a/ad/GOAD-variant-1/scripts/archives/kerberoasting.ps1 b/ad/GOAD-variant-1/scripts/archives/kerberoasting.ps1 new file mode 100644 index 00000000..4cc3c086 --- /dev/null +++ b/ad/GOAD-variant-1/scripts/archives/kerberoasting.ps1 @@ -0,0 +1 @@ +Set-ADUser -Identity "christine.martin" -ServicePrincipalNames @{Add='HTTP/thewallserver'} diff --git a/ad/GOAD-variant-1/scripts/archives/rbcd.ps1 b/ad/GOAD-variant-1/scripts/archives/rbcd.ps1 new file mode 100644 index 00000000..46409041 --- /dev/null +++ b/ad/GOAD-variant-1/scripts/archives/rbcd.ps1 @@ -0,0 +1 @@ +# TODO diff --git a/ad/GOAD-variant-1/scripts/archives/unconstrained_delegation.ps1 b/ad/GOAD-variant-1/scripts/archives/unconstrained_delegation.ps1 new file mode 100644 index 00000000..b853bb37 --- /dev/null +++ b/ad/GOAD-variant-1/scripts/archives/unconstrained_delegation.ps1 @@ -0,0 +1 @@ +Get-ADComputer -Identity "bravoos" | Set-ADAccountControl -TrustedForDelegation $true diff --git a/ad/GOAD-variant-1/scripts/asrep_roasting.ps1 b/ad/GOAD-variant-1/scripts/asrep_roasting.ps1 new file mode 100644 index 00000000..2dd7063b --- /dev/null +++ b/ad/GOAD-variant-1/scripts/asrep_roasting.ps1 @@ -0,0 +1 @@ +Get-ADUser -Identity "alexander.peterson" | Set-ADAccountControl -DoesNotRequirePreAuth:$true diff --git a/ad/GOAD-variant-1/scripts/asrep_roasting2.ps1 b/ad/GOAD-variant-1/scripts/asrep_roasting2.ps1 new file mode 100644 index 00000000..4dd122ff --- /dev/null +++ b/ad/GOAD-variant-1/scripts/asrep_roasting2.ps1 @@ -0,0 +1 @@ +Get-ADUser -Identity "susan.white" | Set-ADAccountControl -DoesNotRequirePreAuth:$true diff --git a/ad/GOAD-variant-1/scripts/constrained_delegation_kerb_only.ps1 b/ad/GOAD-variant-1/scripts/constrained_delegation_kerb_only.ps1 new file mode 100644 index 00000000..5e71e6cb --- /dev/null +++ b/ad/GOAD-variant-1/scripts/constrained_delegation_kerb_only.ps1 @@ -0,0 +1,4 @@ +# https://www.thehacker.recipes/ad/movement/kerberos/delegations/constrained#without-protocol-transition +Set-ADComputer -Identity "summit$" -ServicePrincipalNames @{Add='HTTP/beacon.hq.deltasystems.local'} +Set-ADComputer -Identity "summit$" -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/beacon.hq.deltasystems.local','HTTP/beacon')} +# Set-ADComputer -Identity "summit$" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/beacon.hq.deltasystems.local','CIFS/beacon')} diff --git a/ad/GOAD-variant-1/scripts/constrained_delegation_use_any.ps1 b/ad/GOAD-variant-1/scripts/constrained_delegation_use_any.ps1 new file mode 100644 index 00000000..b70375ef --- /dev/null +++ b/ad/GOAD-variant-1/scripts/constrained_delegation_use_any.ps1 @@ -0,0 +1,3 @@ +Set-ADUser -Identity "christine.martin" -ServicePrincipalNames @{Add='CIFS/thewall.hq.deltasystems.local'} +Get-ADUser -Identity "christine.martin" | Set-ADAccountControl -TrustedToAuthForDelegation $true +Set-ADUser -Identity "christine.martin" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/beacon.hq.deltasystems.local','CIFS/beacon')} diff --git a/ad/GOAD-variant-1/scripts/gpo_abuse.ps1 b/ad/GOAD-variant-1/scripts/gpo_abuse.ps1 new file mode 100644 index 00000000..55a30718 --- /dev/null +++ b/ad/GOAD-variant-1/scripts/gpo_abuse.ps1 @@ -0,0 +1,25 @@ +Install-WindowsFeature -Name GPMC +$gpo_exist = Get-GPO -Name "OperationsWallpaper" -erroraction ignore + +if ($gpo_exist) { + # Do nothing + #Remove-GPO -Name "OperationsWallpaper" + #Remove the link of the GPO Remove-OperationsWallpaper if it exists + #Remove-GPLink -Name "OperationsWallpaper" -Target "DC=hq,DC=deltasystems,DC=local" -erroraction 'silentlycontinue' +} else { + New-GPO -Name "OperationsWallpaper" -comment "Change Wallpaper" + New-GPLink -Name "OperationsWallpaper" -Target "DC=hq,DC=deltasystems,DC=local" + + #https://www.thewindowsclub.com/set-desktop-wallpaper-using-group-policy-and-registry-editor + Set-GPRegistryValue -Name "OperationsWallpaper" -key "HKEY_CURRENT_USER\Control Panel\Colors" -ValueName Background -Type String -Value "100 175 200" + #Set-GPPrefRegistryValue -Name "OperationsWallpaper" -Context User -Action Create -Key "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System" -ValueName Wallpaper -Type String -Value "C:\tmp\GOAD.png" + + Set-GPRegistryValue -Name "OperationsWallpaper" -key "HKEY_CURRENT_USER\Control Panel\Desktop" -ValueName Wallpaper -Type String -Value "" + #Set-GPPrefRegistryValue -Name "OperationsWallpaper" -Context User -Action Create -Key "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System" -ValueName WallpaperStyle -Type String -Value "4" + + Set-GPRegistryValue -Name "OperationsWallpaper" -Key "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\CurrentVersion\WinLogon" -ValueName SyncForegroundPolicy -Type DWORD -Value 1 + + # Allow stephanie.williams to Edit Settings of the GPO + # https://learn.microsoft.com/en-us/powershell/module/grouppolicy/set-gppermission?view=windowsserver2022-ps + Set-GPPermissions -Name "OperationsWallpaper" -PermissionLevel GpoEditDeleteModifySecurity -TargetName "stephanie.williams" -TargetType "User" +} diff --git a/ad/GOAD-variant-1/scripts/ntlm_relay.ps1 b/ad/GOAD-variant-1/scripts/ntlm_relay.ps1 new file mode 100644 index 00000000..4405d31e --- /dev/null +++ b/ad/GOAD-variant-1/scripts/ntlm_relay.ps1 @@ -0,0 +1,15 @@ +$task = '/c powershell New-PSDrive -Name "Public" -PSProvider "FileSystem" -Root "\\Beacon-app\Private"' +$repeat = (New-TimeSpan -Minutes 5) +$taskName = "ntlm_bot" +$user = "hq.deltasystems.local\william.wood" +$password = "*x-Iz" + +$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "$task" +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval $repeat +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd + +$taskExists = Get-ScheduledTask | Where-Object {$_.TaskName -like $taskName } +if($taskExists) { + Unregister-ScheduledTask -TaskName $taskName -Confirm:$false +} +Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $user -Password $password -Settings $settings diff --git a/ad/GOAD-variant-1/scripts/rdp_scheduler.ps1 b/ad/GOAD-variant-1/scripts/rdp_scheduler.ps1 new file mode 100644 index 00000000..da132c95 --- /dev/null +++ b/ad/GOAD-variant-1/scripts/rdp_scheduler.ps1 @@ -0,0 +1,15 @@ +$task = '/c powershell c:\setup\bot_rdp.ps1' +$repeat = (New-TimeSpan -Minutes 1) +$taskName = "connect_bot" +$user = "hq\catherine2.ramos" +$password = "plyfvjuqn" +$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "$task" +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval $repeat +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd +#$settings.CimInstanceProperties.Item('MultipleInstances').Value = 3 # 3 corresponds to 'Stop the existing instance' + +$taskExists = Get-ScheduledTask | Where-Object {$_.TaskName -like $taskName } +if($taskExists) { + Unregister-ScheduledTask -TaskName $taskName -Confirm:$false +} +Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $user -Password $password -Settings $settings diff --git a/ad/GOAD-variant-1/scripts/responder.ps1 b/ad/GOAD-variant-1/scripts/responder.ps1 new file mode 100644 index 00000000..03bab0ef --- /dev/null +++ b/ad/GOAD-variant-1/scripts/responder.ps1 @@ -0,0 +1,15 @@ +$task = '/c powershell New-PSDrive -Name "Public" -PSProvider "FileSystem" -Root "\\Titan\private"' +$repeat = (New-TimeSpan -Minutes 2) +$taskName = "responder_bot" +$user = "hq.deltasystems.local\catherine2.ramos" +$password = "plyfvjuqn" + +$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "$task" +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval $repeat +$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RunOnlyIfNetworkAvailable -DontStopOnIdleEnd + +$taskExists = Get-ScheduledTask | Where-Object {$_.TaskName -like $taskName } +if($taskExists) { + Unregister-ScheduledTask -TaskName $taskName -Confirm:$false +} +Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $user -Password $password -Settings $settings diff --git a/ad/GOAD-variant-1/scripts/sidhistory.ps1 b/ad/GOAD-variant-1/scripts/sidhistory.ps1 new file mode 100644 index 00000000..e981f381 --- /dev/null +++ b/ad/GOAD-variant-1/scripts/sidhistory.ps1 @@ -0,0 +1 @@ +netdom trust deltasystems.local /d:vortexindustries.local /enablesidhistory:yes diff --git a/ad/GOAD-variant-1/scripts/unconstrained_delegation_user.ps1 b/ad/GOAD-variant-1/scripts/unconstrained_delegation_user.ps1 new file mode 100644 index 00000000..072e9b5b --- /dev/null +++ b/ad/GOAD-variant-1/scripts/unconstrained_delegation_user.ps1 @@ -0,0 +1 @@ +Get-ADUser -Identity "ryan.myers" | Set-ADAccountControl -TrustedForDelegation $true diff --git a/ad/GOAD/README.md b/ad/GOAD/README.md index e70700aa..a84ddb3e 100644 --- a/ad/GOAD/README.md +++ b/ad/GOAD/README.md @@ -1,11 +1,13 @@ # GOAD -- LAB Content +- LAB Content ![GOAD overview](../../docs/img/GOAD_schema.png) ## Servers + This lab is actually composed of five virtual machines: + - **kingslanding** : DC01 running on Windows Server 2019 (with windefender enabled by default) - **winterfell** : DC02 running on Windows Server 2019 (with windefender enabled by default) - **castelblack** : SRV02 running on Windows Server 2019 (with windefender **disabled** by default) @@ -13,14 +15,17 @@ This lab is actually composed of five virtual machines: - **braavos** : SRV03 running on Windows Server 2016 (with windefender enabled by default) ## domain : north.sevenkingdoms.local + - **winterfell** : DC01 - **castelblack** : SRV02 : MSSQL / IIS ## domain : sevenkingdoms.local + - **kingslanding** : DC02 - **castelrock** : SRV01 (disabled due to resources reasons) ## domain : essos.local + - **braavos** : DC03 - **meeren** : SRV03 : MSSQL / ADCS @@ -28,7 +33,7 @@ The lab setup is automated using vagrant and ansible automation tools. You can change the vm version in the Vagrantfile according to Stefan Scherer vagrant repository : https://app.vagrantup.com/StefanScherer -## Users/Groups and associated vulnerabilites/scenarios +## Users/Groups and associated vulnerabilities/scenarios - You can find a lot of the available scenarios on [https://mayfly277.github.io/categories/ad/](https://mayfly277.github.io/categories/ad/) @@ -36,10 +41,11 @@ You can change the vm version in the Vagrantfile according to Stefan Scherer vag ![diagram-GOAD_compromission_Path_dark](./../../docs/img/diagram-GOAD_compromission_Path_dark.png) NORTH.SEVENKINGDOMS.LOCAL + - STARKS: RDP on WINTERFELL AND CASTELBLACK - arya.stark: Execute as user on mssql, pass on all share - eddard.stark: DOMAIN ADMIN NORTH/ (bot 5min) LLMRN request to do NTLM relay with responder - - catelyn.stark: + - catelyn.stark: - robb.stark: bot (3min) RESPONDER LLMR / lsass present user - sansa.stark: keywalking password / unconstrained delegation - brandon.stark: ASREP_ROASTING @@ -56,6 +62,7 @@ NORTH.SEVENKINGDOMS.LOCAL - AcrossTheSea : cross forest group SEVENKINGDOMS.LOCAL + - LANISTERS - tywin.lannister: ACE forcechangepassword on jaime.lanister, password on sysvol cyphered - jaime.lannister: ACE genericwrite-on-user joffrey.baratheon @@ -65,16 +72,17 @@ SEVENKINGDOMS.LOCAL - robert.baratheon: DOMAIN ADMIN SEVENKINGDOMS, protected user - joffrey.baratheon: ACE Write DACL on tyron.lannister - renly.baratheon: WriteDACL on container, sensitive user - - stannis.baratheon: ACE genericall-on-computer kingslanding + - stannis.baratheon: ACE genericall-on-computer kingslanding - SMALL COUNCIL : ACE add Member to group dragon stone / RDP on KINGSLANDING - - petyer.baelish: + - petyer.baelish: - lord.varys: ACE genericall-on-group Domain Admins and sdholder - - maester.pycelle: + - maester.pycelle: - DRAGONSTONE : ACE Write Owner on group KINGSGUARD - KINGSGUARD : ACE generic all on user stannis.baratheon - AccorsTheNarrowSea: cross forest group ESSOS.LOCAL + - TARGERYEN - missande : ASREP roasting, generic all on khal - daenerys.targaryen: DOMAIN ADMIN ESSOS @@ -103,7 +111,7 @@ ESSOS.LOCAL - IIS : allow asp upload, run as NT Authority/network - MSSQL: - admin : jon.snow - - impersonate : + - impersonate : - execute as login : samwel.tarlly -> sa - execute as user : arya.stark -> dbo - link : @@ -128,19 +136,23 @@ ESSOS.LOCAL - **elk** a kibana is configured on http://192.168.56.50:5601 to follow the lab events - infos : log encyclopedia : https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/ -- the elk is not installed by default due to resources reasons. +- the elk is not installed by default due to resources reasons. -- prerequistes: +- prerequisites: - you need `sshpass` for the elk installation + ```bash sudo apt install sshpass ``` + - Chocolatey is needed to use elk. To install it run: + ```bash -ansible-galaxy collection install chocolatey.chocolatey +ansible-galaxy collection install chocolatey.chocolatey ``` - To install and start the elk play the following commands : + ```bash ./goad.sh -t install -l GOAD -p virtualbox -m local -r elk.yml -e elk #or @@ -151,6 +163,7 @@ ansible-galaxy collection install chocolatey.chocolatey * -r : to run only the elk.yml ansible script If you want to only launch the elk.yml file without providing (vm creation), because your elk vm is already up do : + ```bash ./goad.sh -t install -l GOAD -p virtualbox -m local -a -r elk.yml -e elk #or @@ -158,18 +171,20 @@ If you want to only launch the elk.yml file without providing (vm creation), bec ``` If you want to do that by hand: + 1. run: `GOAD_VAGRANT_OPTIONS=elk vagrant up` 2. launch the elk provisionning with the command : - ``` + + ```bash cd ansible ansible-playbook -i ../ad/GOAD/data/inventory -i ../ad/GOAD/providers//inventory elk.yml ``` ### V2 breaking changes + - If you previously install the v1 do not try to update as a lot of things have changed. Just drop your old lab and build the new one (you will not regret it) - Chocolatey is no more used and basic tools like git or notepad++ are no more installed by default (as chocolatey regularly crash the install due to hitting rate on multiples builds) - ELK is no more installed by default to save resources but you still can install it separately (see the blueteam/elk part) - Dragonstone vm as disappear and there is no more DC replication in the lab to save resources - Wintefell is now a domain controller for the subdomain north of the sevenkingdoms.local domain - diff --git a/ad/GOAD/data/config.json b/ad/GOAD/data/config.json index 2059018a..e2083a9a 100644 --- a/ad/GOAD/data/config.json +++ b/ad/GOAD/data/config.json @@ -4,7 +4,7 @@ "dc01" : { "hostname" : "kingslanding", "type" : "dc", - "local_admin_password": "8dCT-DJjgScp", + "local_admin_password": "qjQ!bcwXKU!3yBrDM2VU", "domain" : "sevenkingdoms.local", "path" : "DC=sevenkingdoms,DC=local", "local_groups" : { @@ -20,7 +20,7 @@ }, "scripts" : ["sidhistory.ps1"], "vulns" : ["disable_firewall", "adcs_esc10_case1", "adcs_esc10_case2"], - "security": ["account_is_sensitive"], + "security": ["account_is_sensitive", "audit_policy"], "security_vars": { "account_is_sensitive" : { "renly": {"account" : "renly.baratheon"} } } @@ -28,7 +28,7 @@ "dc02" : { "hostname" : "winterfell", "type" : "dc", - "local_admin_password": "NgtI75cKV+Pu", + "local_admin_password": "VExkHyfsKTW_HMNA7fQy", "domain" : "north.sevenkingdoms.local", "path" : "DC=north,DC=sevenkingdoms,DC=local", "local_groups" : { @@ -50,10 +50,10 @@ "gpo_abuse.ps1", "rdp_scheduler.ps1" ], - "vulns" : ["disable_firewall","directory", "credentials", "autologon", "files", "enable_llmnr", "enable_nbt-ns", "shares"], + "vulns" : ["disable_firewall","directory", "credentials", "autologon", "files", "enable_llmnr", "enable_nbt_ns", "shares"], "vulns_vars" : { "directory": { - "setup": "c:\\setup" + "setup": "C:\\setup" }, "credentials" : { "TERMSRV/castelblack": { @@ -72,7 +72,7 @@ "files" : { "rdp" : { "src" : "dc02/bot_rdp.ps1", - "dest" : "c:\\setup\\bot_rdp.ps1" + "dest" : "C:\\setup\\bot_rdp.ps1" }, "sysvol_fake_script": { "src" : "dc02/sysvol_scripts/script.ps1", @@ -83,12 +83,13 @@ "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\secret.ps1" } } - } + }, + "security": ["audit_policy"] }, "srv02" : { "hostname" : "castelblack", "type" : "server", - "local_admin_password": "NgtI75cKV+Pu", + "local_admin_password": "VExkHyfsKTW_HMNA7fQy", "domain" : "north.sevenkingdoms.local", "path" : "DC=north,DC=sevenkingdoms,DC=local", "use_laps": false, @@ -171,7 +172,7 @@ "dc03" : { "hostname" : "meereen", "type" : "dc", - "local_admin_password": "Ufe-bVXSx9rk", + "local_admin_password": "M!BbXzL48D9mH9dQzp*e", "domain" : "essos.local", "path" : "DC=essos,DC=local", "local_groups" : { @@ -197,12 +198,13 @@ "adcs_esc13_template": "ESC13" } } - } + }, + "security": ["audit_policy"] }, "srv03" : { "hostname" : "braavos", "type" : "server", - "local_admin_password": "978i2pF43UJ-", + "local_admin_password": "M!BbXzL48D9mH9dQzp*e", "domain" : "essos.local", "path" : "DC=essos,DC=local", "use_laps": true, @@ -241,7 +243,7 @@ "domains" : { "essos.local" : { "dc": "dc03", - "domain_password" : "Ufe-bVXSx9rk", + "domain_password" : "M!BbXzL48D9mH9dQzp*e", "netbios_name": "ESSOS", "ca_server": "Braavos", "trust" : "sevenkingdoms.local", @@ -268,16 +270,16 @@ "path" : "CN=Users,DC=essos,DC=local" }, "Dragons":{ - "managed_by" : "Administrator", + "managed_by" : "goadmin", "path" : "CN=Users,DC=essos,DC=local" }, "QueenProtector":{ - "managed_by" : "Administrator", + "managed_by" : "goadmin", "path" : "CN=Users,DC=essos,DC=local", "members" : ["ESSOS\\Dragons"] }, "Domain Admins":{ - "managed_by" : "Administrator", + "managed_by" : "goadmin", "path" : "CN=Users,DC=essos,DC=local", "members" : ["ESSOS\\QueenProtector"] } @@ -323,7 +325,7 @@ "daenerys.targaryen" : { "firstname" : "daenerys", "surname" : "targaryen", - "password" : "BurnThemAll!", + "password" : "BurnThemAll!", "city" : "-", "description" : "Darnerys Targaryen", "groups" : ["Targaryen", "Domain Admins"], @@ -388,7 +390,7 @@ }, "north.sevenkingdoms.local" : { "dc": "dc02", - "domain_password" : "NgtI75cKV+Pu", + "domain_password" : "VExkHyfsKTW_HMNA7fQy", "netbios_name": "NORTH", "trust" : "", "laps_path": "OU=Laps,DC=north,DC=sevenkingdoms,DC=local", @@ -537,7 +539,7 @@ }, "sevenkingdoms.local" : { "dc": "dc01", - "domain_password" : "8dCT-DJjgScp", + "domain_password" : "qjQ!bcwXKU!3yBrDM2VU", "netbios_name": "SEVENKINGDOMS", "trust" : "essos.local", "laps_path": "OU=Laps,DC=sevenkingdoms,DC=local", @@ -703,4 +705,4 @@ } } } -}} \ No newline at end of file +}} diff --git a/ad/GOAD/data/dev-config.json b/ad/GOAD/data/dev-config.json new file mode 100644 index 00000000..773aba24 --- /dev/null +++ b/ad/GOAD/data/dev-config.json @@ -0,0 +1,681 @@ +{ +"lab" : { + "hosts" : { + "dc01" : { + "hostname" : "kingslanding", + "type" : "dc", + "local_admin_password": "qjQ!bcwXKU!3yBrDM2VU", + "domain" : "sevenkingdoms.local", + "path" : "DC=sevenkingdoms,DC=local", + "local_groups" : { + "Administrators" : [ + "sevenkingdoms\\robert.baratheon", + "sevenkingdoms\\cersei.lannister", + "sevenkingdoms\\DragonRider" + ], + "Remote Desktop Users" : [ + "sevenkingdoms\\Small Council", + "sevenkingdoms\\Baratheon" + ] + }, + "scripts" : ["sidhistory.ps1"], + "vulns" : ["disable_firewall"], + "security": ["account_is_sensitive", "audit_policy"], + "security_vars": { + "account_is_sensitive" : { "renly": {"account" : "renly.baratheon"} } + } + }, + "dc02" : { + "hostname" : "winterfell", + "type" : "dc", + "local_admin_password": "VExkHyfsKTW_HMNA7fQy", + "domain" : "north.sevenkingdoms.local", + "path" : "DC=north,DC=sevenkingdoms,DC=local", + "local_groups" : { + "Administrators" : [ + "north\\eddard.stark", + "north\\catelyn.stark", + "north\\robb.stark" + ], + "Remote Desktop Users" : [ + "north\\Stark" + ] + }, + "scripts" : [ + "asrep_roasting.ps1", + "constrained_delegation_use_any.ps1", + "constrained_delegation_kerb_only.ps1", + "ntlm_relay.ps1", + "responder.ps1", + "gpo_abuse.ps1", + "rdp_scheduler.ps1", + "unconstrained_delegation_user.ps1" + ], + "vulns" : ["disable_firewall","directory", "credentials", "autologon", "files", "enable_llmnr", "enable_nbt_ns", "shares", "anonymous_enum"], + "vulns_vars" : { + "directory": { + "setup": "C:\\setup" + }, + "credentials" : { + "TERMSRV/castelblack": { + "username" : "north\\robb.stark", + "secret" : "sexywolfy", + "runas" : "north\\robb.stark", + "runas_password" : "sexywolfy" + } + }, + "autologon" : { + "robb.stark" : { + "username" : "north\\robb.stark", + "password" : "sexywolfy" + } + }, + "files" : { + "rdp" : { + "src" : "dc02/bot_rdp.ps1", + "dest" : "C:\\setup\\bot_rdp.ps1" + }, + "sysvol_fake_script": { + "src" : "dc02/sysvol_scripts/script.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\script.ps1" + }, + "sysvol_secret": { + "src" : "dc02/sysvol_scripts/secret.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\secret.ps1" + } + } + }, + "security": ["audit_policy"] + }, + "srv02" : { + "hostname" : "castelblack", + "type" : "server", + "local_admin_password": "VExkHyfsKTW_HMNA7fQy", + "domain" : "north.sevenkingdoms.local", + "path" : "DC=north,DC=sevenkingdoms,DC=local", + "use_laps": false, + "local_groups" : { + "Administrators" : [ + "north\\jeor.mormont" + ], + "Remote Desktop Users" : [ + "north\\Night Watch", + "north\\Mormont", + "north\\Stark" + ] + }, + "scripts" : [], + "vulns" : ["directory", "disable_firewall", "openshares", "files", "permissions"], + "vulns_vars" : { + "directory": { + "shares": "C:\\shares", + "all": "C:\\shares\\all" + }, + "files" : { + "website" : { + "src" : "srv02/wwwroot", + "dest" : "C:\\inetpub\\" + }, + "letter_in_shares": { + "src" : "srv02/all/arya.txt", + "dest": "C:\\shares\\all\\arya.txt" + } + }, + "permissions" : { + "IIS_IUSRS_upload": { + "path" : "C:\\inetpub\\wwwroot\\upload", + "user" : "IIS_IUSRS", + "rights" : "FullControl" + } + } + }, + "mssql":{ + "sa_password": "Sup1_sa_P@ssw0rd!", + "svcaccount" : "sql_svc", + "sysadmins" : [ + "NORTH\\jon.snow" + ], + "executeaslogin" : { + "NORTH\\samwell.tarly" : "sa", + "NORTH\\brandon.stark" : "NORTH\\jon.snow" + }, + "executeasuser" : { + "arya_master_dbo": { + "user": "NORTH\\arya.stark", + "db" : "master", + "impersonate" : "dbo" + }, + "arya_dbms_dbo": { + "user": "NORTH\\arya.stark", + "db" : "msdb", + "impersonate" : "dbo" + } + }, + "linked_servers": { + "BRAAVOS" : { + "data_src": "braavos.essos.local", + "users_mapping": [ + {"local_login": "NORTH\\jon.snow","remote_login": "sa", "remote_password": "sa_P@ssw0rd!Ess0s"} + ] + } + } + } + }, + "dc03" : { + "hostname" : "meereen", + "type" : "dc", + "local_admin_password": "M!BbXzL48D9mH9dQzp*e", + "domain" : "essos.local", + "path" : "DC=essos,DC=local", + "local_groups" : { + "Administrators" : [ + "essos\\daenerys.targaryen" + ], + "Remote Desktop Users" : [ + "essos\\Targaryen" + ] + }, + "scripts" : ["asrep_roasting2.ps1"], + "vulns" : ["ntlmdowngrade", "disable_firewall"], + "security": ["audit_policy"] + }, + "srv03" : { + "hostname" : "braavos", + "type" : "server", + "local_admin_password": "M!BbXzL48D9mH9dQzp*e", + "domain" : "essos.local", + "path" : "DC=essos,DC=local", + "use_laps": true, + "local_groups" : { + "Administrators" : [ + "essos\\khal.drogo" + ] + }, + "Remote Desktop Users" : [ + "essos\\Dothraki" + ], + "scripts" : [], + "vulns" : ["openshares","disable_firewall"], + "security": ["enable_run_as_ppl"], + "mssql":{ + "sa_password": "sa_P@ssw0rd!Ess0s", + "svcaccount" : "sql_svc", + "sysadmins" : [ + "ESSOS\\khal.drogo" + ], + "executeaslogin" : { + "ESSOS\\jorah.mormont" : "sa" + }, + "executeasuser" : {}, + "linked_servers": { + "CASTELBLACK" : { + "data_src": "castelblack.north.sevenkingdoms.local", + "users_mapping": [ + {"local_login": "ESSOS\\khal.drogo","remote_login": "sa", "remote_password": "Sup1_sa_P@ssw0rd!"} + ] + } + } + } + } + }, + "domains" : { + "essos.local" : { + "dc": "dc03", + "domain_password" : "M!BbXzL48D9mH9dQzp*e", + "netbios_name": "ESSOS", + "ca_server": "Braavos", + "trust" : "sevenkingdoms.local", + "laps_path": "OU=Laps,DC=essos,DC=local", + "organisation_units" : { + }, + "laps_readers": [ + "jorah.mormont", + "Spys" + ], + "groups" : { + "universal" : {}, + "global" : { + "Targaryen" : { + "managed_by" : "viserys.targaryen", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Dothraki" : { + "managed_by" : "khal.drogo", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Dragons":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local" + }, + "QueenProtector":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local", + "members" : ["ESSOS\\Dragons"] + }, + "Domain Admins":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local", + "members" : ["ESSOS\\QueenProtector"] + } + }, + "domainlocal" : { + "DragonsFriends" : { + "managed_by" : "daenerys.targaryen", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Spys" : { + "path" : "CN=Users,DC=essos,DC=local" + } + } + }, + "multi_domain_groups_member" : { + "DragonsFriends" : [ + "sevenkingdoms.local\\tyron.lannister", + "essos.local\\daenerys.targaryen" + ], + "Spys" : [ + "sevenkingdoms.local\\Small Council" + ] + }, + "gmsa" : { + "gmsa_account": { + "gMSA_Name" : "gmsaDragon", + "gMSA_FQDN" : "gmsaDragon.essos.local", + "gMSA_SPNs" : ["HTTP/braavos", "HTTP/braavos.essos.local"], + "gMSA_HostNames" : ["braavos"] + } + }, + "acls" : { + "GenericAll_khal_viserys" : {"for": "khal.drogo", "to": "viserys.targaryen", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_spy_jorah" : {"for": "Spys", "to": "jorah.mormont", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_khal_esc4" : {"for": "khal.drogo", "to": "CN=ESC4,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=essos,DC=local", "right": "GenericAll", "inheritance": "None"}, + "WriteProperty_petyer_domadmin" : {"for": "viserys.targaryen", "to": "jorah.mormont", "right": "WriteProperty", "inheritance": "All"}, + "GenericWrite_DragonsFriends_braavos" : {"for": "DragonsFriends", "to": "braavos$", "right": "GenericWrite", "inheritance": "None"}, + "GenericAll_missandei_khal" : {"for": "missandei", "to": "khal.drogo", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_gmsaDragon_drogo" : {"for": "gmsaDragon$", "to": "drogon", "right": "GenericAll", "inheritance": "None"} + }, + "users" : { + "daenerys.targaryen" : { + "firstname" : "daenerys", + "surname" : "targaryen", + "password" : "BurnThemAll!", + "city" : "-", + "description" : "Darnerys Targaryen", + "groups" : ["Targaryen", "Domain Admins"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "viserys.targaryen" : { + "firstname" : "viserys", + "surname" : "targaryen", + "password" : "GoldCrown", + "city" : "-", + "description" : "Viserys Targaryen", + "groups" : ["Targaryen"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "khal.drogo" : { + "firstname" : "khal", + "surname" : "drogo", + "password" : "horse", + "city" : "-", + "description" : "Khal Drogo", + "groups" : ["Dothraki"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "jorah.mormont" : { + "firstname" : "jorah", + "surname" : "mormont", + "password" : "H0nnor!", + "city" : "-", + "description" : "Jorah Mormont", + "groups" : ["Targaryen"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "missandei" : { + "firstname" : "missandei", + "surname" : "-", + "password" : "fr3edom", + "city" : "-", + "description" : "missandei", + "groups" : [], + "path" : "CN=Users,DC=essos,DC=local" + }, + "drogon" : { + "firstname" : "drogon", + "surname" : "-", + "password" : "Dracarys", + "city" : "-", + "description" : "drogon", + "groups" : ["Dragons"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "sql_svc" : { + "firstname" : "sql", + "surname" : "service", + "password" : "YouWillNotKerboroast1ngMeeeeee", + "city" : "-", + "description" : "sql service", + "groups" : [], + "path" : "CN=Users,DC=essos,DC=local", + "spns" : ["MSSQLSvc/braavos.essos.local:1433","MSSQLSvc/braavos.essos.local"] + } + } + }, + "north.sevenkingdoms.local" : { + "dc": "dc02", + "domain_password" : "VExkHyfsKTW_HMNA7fQy", + "netbios_name": "NORTH", + "trust" : "", + "laps_path": "OU=Laps,DC=north,DC=sevenkingdoms,DC=local", + "organisation_units" : { + }, + "groups" : { + "universal" : {}, + "global" : { + "Stark" : { + "managed_by" : "eddard.stark", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "Night Watch" : { + "managed_by" : "jeor.mormont", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "Mormont" : { + "managed_by" : "jeor.mormont", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + } + }, + "domainlocal" : { + "AcrossTheSea" : { + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + } + } + }, + "multi_domain_groups_member" : {}, + "acls" : { + "anonymous_rpc" : {"for": "NT AUTHORITY\\ANONYMOUS LOGON", "to": "DC=North,DC=sevenkingdoms,DC=local", "right": "ReadProperty", "inheritance": "All"}, + "anonymous_rpc2" : {"for": "NT AUTHORITY\\ANONYMOUS LOGON", "to": "DC=North,DC=sevenkingdoms,DC=local", "right": "GenericExecute", "inheritance": "All"} + }, + "users" : { + "arya.stark" : { + "firstname" : "Arya", + "surname" : "Stark", + "password" : "Needle", + "city" : "Winterfell", + "description" : "Arya Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "eddard.stark" : { + "firstname" : "Eddard", + "surname" : "Stark", + "password" : "FightP3aceAndHonor!", + "city" : "King's Landing", + "description" : "Eddard Stark", + "groups" : ["Stark", "Domain Admins"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "catelyn.stark" : { + "firstname" : "Catelyn", + "surname" : "Stark", + "password" : "robbsansabradonaryarickon", + "city" : "King's Landing", + "description" : "Catelyn Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "robb.stark" : { + "firstname" : "Robb", + "surname" : "Stark", + "password" : "sexywolfy", + "city" : "Winterfell", + "description" : "Robb Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "sansa.stark" : { + "firstname" : "Sansa", + "surname" : "Stark", + "password" : "345ertdfg", + "city" : "Winterfell", + "description" : "Sansa Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["HTTP/eyrie.north.sevenkingdoms.local"] + }, + "brandon.stark" : { + "firstname" : "Brandon", + "surname" : "Stark", + "password" : "iseedeadpeople", + "city" : "Winterfell", + "description" : "Brandon Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "rickon.stark" : { + "firstname" : "Rickon", + "surname" : "Stark", + "password" : "Winter2022", + "city" : "Winterfell", + "description" : "Rickon Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "hodor" : { + "firstname" : "hodor", + "surname" : "hodor", + "password" : "hodor", + "city" : "Winterfell", + "description" : "Brainless Giant", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "jon.snow" : { + "firstname" : "Jon", + "surname" : "Snow", + "password" : "iknownothing", + "city" : "Castel Black", + "description" : "Jon Snow", + "groups" : ["Stark", "Night Watch"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["HTTP/thewall.north.sevenkingdoms.local"] + }, + "samwell.tarly" : { + "firstname" : "Samwell", + "surname" : "Tarly", + "password" : "Heartsbane", + "city" : "Castel Black", + "description" : "Samwell Tarly (Password : Heartsbane)", + "groups" : ["Night Watch"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "jeor.mormont" : { + "firstname" : "Jeor", + "surname" : "Mormont", + "password" : "_L0ngCl@w_", + "city" : "Castel Black", + "description" : "Jeor Mormont", + "groups" : ["Night Watch", "Mormont"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "sql_svc" : { + "firstname" : "sql", + "surname" : "service", + "password" : "YouWillNotKerboroast1ngMeeeeee", + "city" : "-", + "description" : "sql service", + "groups" : [], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["MSSQLSvc/castelblack.north.sevenkingdoms.local:1433","MSSQLSvc/castelblack.north.sevenkingdoms.local"] + } + } + }, + "sevenkingdoms.local" : { + "dc": "dc01", + "domain_password" : "qjQ!bcwXKU!3yBrDM2VU", + "netbios_name": "SEVENKINGDOMS", + "trust" : "essos.local", + "laps_path": "OU=Laps,DC=sevenkingdoms,DC=local", + "organisation_units" : { + "Vale" : { "path" : "DC=sevenkingdoms,DC=local"}, + "IronIslands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Riverlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Crownlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Stormlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Westerlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Reach" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Dorne" : { "path" : "DC=sevenkingdoms,DC=local"} + }, + "groups" : { + "universal" : {}, + "global" : { + "Lannister" : { + "managed_by" : "tywin.lannister", + "path" : "OU=Westerlands,DC=sevenkingdoms,DC=local" + }, + "Baratheon" : { + "managed_by" : "robert.baratheon", + "path" : "OU=Stormlands,DC=sevenkingdoms,DC=local" + }, + "Small Council" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "DragonStone" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "KingsGuard" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "DragonRider" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + } + }, + "domainlocal" : { + "AcrossTheNarrowSea" : { + "path" : "CN=Users,DC=sevenkingdoms,DC=local" + } + } + }, + "multi_domain_groups_member" : { + "AcrossTheNarrowSea" : [ + "essos.local\\daenerys.targaryen" + ] + }, + "acls" : { + "forcechangepassword_tywin_jaime" : {"for": "tywin.lannister", "to": "jaime.lannister", "right": "Ext-User-Force-Change-Password", "inheritance": "None"}, + "GenericWrite_on_user_jaimie_joffrey" : {"for": "jaime.lannister", "to": "joffrey.baratheon", "right": "GenericWrite", "inheritance": "None"}, + "Writedacl_joffrey_tyron" : {"for": "joffrey.baratheon", "to": "tyron.lannister", "right": "WriteDacl", "inheritance": "None"}, + "self-self-membership-on-group_tyron_small_council" : {"for": "tyron.lannister", "to": "Small Council", "right": "Ext-Self-Self-Membership", "inheritance": "None"}, + "addmember_smallcouncil_DragonStone" : {"for": "Small Council", "to": "DragonStone", "right": "Ext-Write-Self-Membership", "inheritance": "All"}, + "write_owner_dragonstone_kingsguard" : {"for": "DragonStone", "to": "KingsGuard", "right": "WriteOwner", "inheritance": "None"}, + "GenericAll_kingsguard_stanis" : {"for": "KingsGuard", "to": "stannis.baratheon", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_stanis_dc" : {"for": "stannis.baratheon", "to": "kingslanding$", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_group_acrrosdom_dc" : {"for": "AcrossTheNarrowSea", "to": "kingslanding$", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_varys_domadmin" : {"for": "lord.varys", "to": "Domain Admins", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_varys_domadmin_holder" : {"for": "lord.varys", "to": "CN=AdminSDHolder,CN=System,DC=sevenkingdoms,DC=local", "right": "GenericAll", "inheritance": "None"}, + "WriteDACL_renly_Crownlands" : {"for": "renly.baratheon", "to": "OU=Crownlands,DC=sevenkingdoms,DC=local", "right": "WriteDacl", "inheritance": "None"} + }, + "users" : { + "tywin.lannister" : { + "firstname" : "Tywin", + "surname" : "Lanister", + "password" : "powerkingftw135", + "city" : "Casterly Rock", + "description" : "Tywin Lanister", + "groups" : ["Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "jaime.lannister" : { + "firstname" : "Jaime", + "surname" : "Lanister", + "password" : "cersei", + "city" : "King's Landing", + "description" : "Jaime Lanister", + "groups" : ["Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "cersei.lannister" : { + "firstname" : "Cersei", + "surname" : "Lanister", + "password" : "il0vejaime", + "city" : "King's Landing", + "description" : "Cersei Lanister", + "groups" : ["Lannister","Baratheon","Domain Admins","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "tyron.lannister" : { + "firstname" : "Tyron", + "surname" : "Lanister", + "password" : "Alc00L&S3x", + "city" : "King's Landing", + "description" : "Tyron Lanister", + "groups" : ["Lannister"], + "path" : "OU=Westerlands,DC=sevenkingdoms,DC=local" + }, + "robert.baratheon" : { + "firstname" : "Robert", + "surname" : "Baratheon", + "password" : "iamthekingoftheworld", + "city" : "King's Landing", + "description" : "Robert Lanister", + "groups" : ["Baratheon","Domain Admins","Small Council","Protected Users"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "joffrey.baratheon" : { + "firstname" : "Joffrey", + "surname" : "Baratheon", + "password" : "1killerlion", + "city" : "King's Landing", + "description" : "Joffrey Baratheon", + "groups" : ["Baratheon","Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "renly.baratheon" : { + "firstname" : "Renly", + "surname" : "Baratheon", + "password" : "lorastyrell", + "city" : "King's Landing", + "description" : "Renly Baratheon", + "groups" : ["Baratheon","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "stannis.baratheon" : { + "firstname" : "Stannis", + "surname" : "Baratheon", + "password" : "Drag0nst0ne", + "city" : "King's Landing", + "description" : "Stannis Baratheon", + "groups" : ["Baratheon","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "petyer.baelish" : { + "firstname" : "Petyer", + "surname" : "Baelish", + "password" : "@littlefinger@", + "city" : "King's Landing", + "description" : "Petyer Baelish", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "lord.varys" : { + "firstname" : "Lord", + "surname" : "Varys", + "password" : "_W1sper_$", + "city" : "King's Landing", + "description" : "Lord Varys", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "maester.pycelle" : { + "firstname" : "Maester", + "surname" : "Pycelle", + "password" : "MaesterOfMaesters", + "city" : "King's Landing", + "description" : "Maester Pycelle", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + } + } + } + } +}} diff --git a/ad/GOAD/data/inventory b/ad/GOAD/data/inventory index bed60f98..efe78af6 100644 --- a/ad/GOAD/data/inventory +++ b/ad/GOAD/data/inventory @@ -36,11 +36,6 @@ ansible_winrm_read_timeout_sec=500 # ansible_winrm_transport=basic # ansible_port=5985 -; proxy settings (the lab need internet for some install, if you are behind a proxy you should set the proxy here) -enable_http_proxy=no -ad_http_proxy=http://x.x.x.x:xxxx -ad_https_proxy=http://x.x.x.x:xxxx - ; LAB SCENARIO CONFIGURATION ----------------------------- ; computers inside domain (mandatory) @@ -54,7 +49,7 @@ srv03 [linux_domain] -; domain controler (mandatory) +; domain controller (mandatory) ; usage : ad-acl.yml, ad-data.yml, ad-relations.yml, laps.yml [dc] dc01 @@ -71,13 +66,13 @@ srv03 ; usage : ad-servers.yml, laps.yml [workstation] -; parent domain controler (mandatory) +; parent domain controller (mandatory) ; usage : ad-servers.yml [parent_dc] dc01 dc03 -; child domain controler (need a fqdn child_name.parent_name) +; child domain controller (need a fqdn child_name.parent_name) ; usage : ad-servers.yml [child_dc] dc02 @@ -115,7 +110,7 @@ srv03 [mssql_ssms] srv02 -; install webdav +; install webdav [webdav] srv02 srv03 @@ -153,4 +148,4 @@ srv03 srv02 ;stay empty until override -[extensions] \ No newline at end of file +[extensions] diff --git a/ad/GOAD/data/staging-config.json b/ad/GOAD/data/staging-config.json new file mode 100644 index 00000000..8193c49a --- /dev/null +++ b/ad/GOAD/data/staging-config.json @@ -0,0 +1,681 @@ +{ +"lab" : { + "hosts" : { + "dc01" : { + "hostname" : "kingslanding", + "type" : "dc", + "local_admin_password": "ykRXQ@rWNV4znesz-h!c", + "domain" : "sevenkingdoms.local", + "path" : "DC=sevenkingdoms,DC=local", + "local_groups" : { + "Administrators" : [ + "sevenkingdoms\\robert.baratheon", + "sevenkingdoms\\cersei.lannister", + "sevenkingdoms\\DragonRider" + ], + "Remote Desktop Users" : [ + "sevenkingdoms\\Small Council", + "sevenkingdoms\\Baratheon" + ] + }, + "scripts" : ["sidhistory.ps1"], + "vulns" : ["disable_firewall"], + "security": ["account_is_sensitive", "audit_policy"], + "security_vars": { + "account_is_sensitive" : { "renly": {"account" : "renly.baratheon"} } + } + }, + "dc02" : { + "hostname" : "winterfell", + "type" : "dc", + "local_admin_password": "moydNed_wEKuP8KN6rUx", + "domain" : "north.sevenkingdoms.local", + "path" : "DC=north,DC=sevenkingdoms,DC=local", + "local_groups" : { + "Administrators" : [ + "north\\eddard.stark", + "north\\catelyn.stark", + "north\\robb.stark" + ], + "Remote Desktop Users" : [ + "north\\Stark" + ] + }, + "scripts" : [ + "asrep_roasting.ps1", + "constrained_delegation_use_any.ps1", + "constrained_delegation_kerb_only.ps1", + "ntlm_relay.ps1", + "responder.ps1", + "gpo_abuse.ps1", + "rdp_scheduler.ps1", + "unconstrained_delegation_user.ps1" + ], + "vulns" : ["disable_firewall","directory", "credentials", "autologon", "files", "enable_llmnr", "enable_nbt_ns", "shares", "anonymous_enum"], + "vulns_vars" : { + "directory": { + "setup": "C:\\setup" + }, + "credentials" : { + "TERMSRV/castelblack": { + "username" : "north\\robb.stark", + "secret" : "sexywolfy", + "runas" : "north\\robb.stark", + "runas_password" : "sexywolfy" + } + }, + "autologon" : { + "robb.stark" : { + "username" : "north\\robb.stark", + "password" : "sexywolfy" + } + }, + "files" : { + "rdp" : { + "src" : "dc02/bot_rdp.ps1", + "dest" : "C:\\setup\\bot_rdp.ps1" + }, + "sysvol_fake_script": { + "src" : "dc02/sysvol_scripts/script.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\script.ps1" + }, + "sysvol_secret": { + "src" : "dc02/sysvol_scripts/secret.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\secret.ps1" + } + } + }, + "security": ["audit_policy"] + }, + "srv02" : { + "hostname" : "castelblack", + "type" : "server", + "local_admin_password": "moydNed_wEKuP8KN6rUx", + "domain" : "north.sevenkingdoms.local", + "path" : "DC=north,DC=sevenkingdoms,DC=local", + "use_laps": false, + "local_groups" : { + "Administrators" : [ + "north\\jeor.mormont" + ], + "Remote Desktop Users" : [ + "north\\Night Watch", + "north\\Mormont", + "north\\Stark" + ] + }, + "scripts" : [], + "vulns" : ["directory", "disable_firewall", "openshares", "files", "permissions"], + "vulns_vars" : { + "directory": { + "shares": "C:\\shares", + "all": "C:\\shares\\all" + }, + "files" : { + "website" : { + "src" : "srv02/wwwroot", + "dest" : "C:\\inetpub\\" + }, + "letter_in_shares": { + "src" : "srv02/all/arya.txt", + "dest": "C:\\shares\\all\\arya.txt" + } + }, + "permissions" : { + "IIS_IUSRS_upload": { + "path" : "C:\\inetpub\\wwwroot\\upload", + "user" : "IIS_IUSRS", + "rights" : "FullControl" + } + } + }, + "mssql":{ + "sa_password": "Sup1_sa_P@ssw0rd!", + "svcaccount" : "sql_svc", + "sysadmins" : [ + "NORTH\\jon.snow" + ], + "executeaslogin" : { + "NORTH\\samwell.tarly" : "sa", + "NORTH\\brandon.stark" : "NORTH\\jon.snow" + }, + "executeasuser" : { + "arya_master_dbo": { + "user": "NORTH\\arya.stark", + "db" : "master", + "impersonate" : "dbo" + }, + "arya_dbms_dbo": { + "user": "NORTH\\arya.stark", + "db" : "msdb", + "impersonate" : "dbo" + } + }, + "linked_servers": { + "BRAAVOS" : { + "data_src": "braavos.essos.local", + "users_mapping": [ + {"local_login": "NORTH\\jon.snow","remote_login": "sa", "remote_password": "sa_P@ssw0rd!Ess0s"} + ] + } + } + } + }, + "dc03" : { + "hostname" : "meereen", + "type" : "dc", + "local_admin_password": "-cwuyGW494yZnC_M8wLN", + "domain" : "essos.local", + "path" : "DC=essos,DC=local", + "local_groups" : { + "Administrators" : [ + "essos\\daenerys.targaryen" + ], + "Remote Desktop Users" : [ + "essos\\Targaryen" + ] + }, + "scripts" : ["asrep_roasting2.ps1"], + "vulns" : ["ntlmdowngrade", "disable_firewall"], + "security": ["audit_policy"] + }, + "srv03" : { + "hostname" : "braavos", + "type" : "server", + "local_admin_password": "-cwuyGW494yZnC_M8wLN", + "domain" : "essos.local", + "path" : "DC=essos,DC=local", + "use_laps": true, + "local_groups" : { + "Administrators" : [ + "essos\\khal.drogo" + ] + }, + "Remote Desktop Users" : [ + "essos\\Dothraki" + ], + "scripts" : [], + "vulns" : ["openshares","disable_firewall"], + "security": ["enable_run_as_ppl"], + "mssql":{ + "sa_password": "sa_P@ssw0rd!Ess0s", + "svcaccount" : "sql_svc", + "sysadmins" : [ + "ESSOS\\khal.drogo" + ], + "executeaslogin" : { + "ESSOS\\jorah.mormont" : "sa" + }, + "executeasuser" : {}, + "linked_servers": { + "CASTELBLACK" : { + "data_src": "castelblack.north.sevenkingdoms.local", + "users_mapping": [ + {"local_login": "ESSOS\\khal.drogo","remote_login": "sa", "remote_password": "Sup1_sa_P@ssw0rd!"} + ] + } + } + } + } + }, + "domains" : { + "essos.local" : { + "dc": "dc03", + "domain_password" : "-cwuyGW494yZnC_M8wLN", + "netbios_name": "ESSOS", + "ca_server": "Braavos", + "trust" : "sevenkingdoms.local", + "laps_path": "OU=Laps,DC=essos,DC=local", + "organisation_units" : { + }, + "laps_readers": [ + "jorah.mormont", + "Spys" + ], + "groups" : { + "universal" : {}, + "global" : { + "Targaryen" : { + "managed_by" : "viserys.targaryen", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Dothraki" : { + "managed_by" : "khal.drogo", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Dragons":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local" + }, + "QueenProtector":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local", + "members" : ["ESSOS\\Dragons"] + }, + "Domain Admins":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local", + "members" : ["ESSOS\\QueenProtector"] + } + }, + "domainlocal" : { + "DragonsFriends" : { + "managed_by" : "daenerys.targaryen", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Spys" : { + "path" : "CN=Users,DC=essos,DC=local" + } + } + }, + "multi_domain_groups_member" : { + "DragonsFriends" : [ + "sevenkingdoms.local\\tyron.lannister", + "essos.local\\daenerys.targaryen" + ], + "Spys" : [ + "sevenkingdoms.local\\Small Council" + ] + }, + "gmsa" : { + "gmsa_account": { + "gMSA_Name" : "gmsaDragon", + "gMSA_FQDN" : "gmsaDragon.essos.local", + "gMSA_SPNs" : ["HTTP/braavos", "HTTP/braavos.essos.local"], + "gMSA_HostNames" : ["braavos"] + } + }, + "acls" : { + "GenericAll_khal_viserys" : {"for": "khal.drogo", "to": "viserys.targaryen", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_spy_jorah" : {"for": "Spys", "to": "jorah.mormont", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_khal_esc4" : {"for": "khal.drogo", "to": "CN=ESC4,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=essos,DC=local", "right": "GenericAll", "inheritance": "None"}, + "WriteProperty_petyer_domadmin" : {"for": "viserys.targaryen", "to": "jorah.mormont", "right": "WriteProperty", "inheritance": "All"}, + "GenericWrite_DragonsFriends_braavos" : {"for": "DragonsFriends", "to": "braavos$", "right": "GenericWrite", "inheritance": "None"}, + "GenericAll_missandei_khal" : {"for": "missandei", "to": "khal.drogo", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_gmsaDragon_drogo" : {"for": "gmsaDragon$", "to": "drogon", "right": "GenericAll", "inheritance": "None"} + }, + "users" : { + "daenerys.targaryen" : { + "firstname" : "daenerys", + "surname" : "targaryen", + "password" : "BurnThemAll!", + "city" : "-", + "description" : "Darnerys Targaryen", + "groups" : ["Targaryen", "Domain Admins"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "viserys.targaryen" : { + "firstname" : "viserys", + "surname" : "targaryen", + "password" : "GoldCrown", + "city" : "-", + "description" : "Viserys Targaryen", + "groups" : ["Targaryen"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "khal.drogo" : { + "firstname" : "khal", + "surname" : "drogo", + "password" : "horse", + "city" : "-", + "description" : "Khal Drogo", + "groups" : ["Dothraki"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "jorah.mormont" : { + "firstname" : "jorah", + "surname" : "mormont", + "password" : "H0nnor!", + "city" : "-", + "description" : "Jorah Mormont", + "groups" : ["Targaryen"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "missandei" : { + "firstname" : "missandei", + "surname" : "-", + "password" : "fr3edom", + "city" : "-", + "description" : "missandei", + "groups" : [], + "path" : "CN=Users,DC=essos,DC=local" + }, + "drogon" : { + "firstname" : "drogon", + "surname" : "-", + "password" : "Dracarys", + "city" : "-", + "description" : "drogon", + "groups" : ["Dragons"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "sql_svc" : { + "firstname" : "sql", + "surname" : "service", + "password" : "YouWillNotKerboroast1ngMeeeeee", + "city" : "-", + "description" : "sql service", + "groups" : [], + "path" : "CN=Users,DC=essos,DC=local", + "spns" : ["MSSQLSvc/braavos.essos.local:1433","MSSQLSvc/braavos.essos.local"] + } + } + }, + "north.sevenkingdoms.local" : { + "dc": "dc02", + "domain_password" : "moydNed_wEKuP8KN6rUx", + "netbios_name": "NORTH", + "trust" : "", + "laps_path": "OU=Laps,DC=north,DC=sevenkingdoms,DC=local", + "organisation_units" : { + }, + "groups" : { + "universal" : {}, + "global" : { + "Stark" : { + "managed_by" : "eddard.stark", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "Night Watch" : { + "managed_by" : "jeor.mormont", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "Mormont" : { + "managed_by" : "jeor.mormont", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + } + }, + "domainlocal" : { + "AcrossTheSea" : { + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + } + } + }, + "multi_domain_groups_member" : {}, + "acls" : { + "anonymous_rpc" : {"for": "NT AUTHORITY\\ANONYMOUS LOGON", "to": "DC=North,DC=sevenkingdoms,DC=local", "right": "ReadProperty", "inheritance": "All"}, + "anonymous_rpc2" : {"for": "NT AUTHORITY\\ANONYMOUS LOGON", "to": "DC=North,DC=sevenkingdoms,DC=local", "right": "GenericExecute", "inheritance": "All"} + }, + "users" : { + "arya.stark" : { + "firstname" : "Arya", + "surname" : "Stark", + "password" : "Needle", + "city" : "Winterfell", + "description" : "Arya Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "eddard.stark" : { + "firstname" : "Eddard", + "surname" : "Stark", + "password" : "FightP3aceAndHonor!", + "city" : "King's Landing", + "description" : "Eddard Stark", + "groups" : ["Stark", "Domain Admins"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "catelyn.stark" : { + "firstname" : "Catelyn", + "surname" : "Stark", + "password" : "robbsansabradonaryarickon", + "city" : "King's Landing", + "description" : "Catelyn Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "robb.stark" : { + "firstname" : "Robb", + "surname" : "Stark", + "password" : "sexywolfy", + "city" : "Winterfell", + "description" : "Robb Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "sansa.stark" : { + "firstname" : "Sansa", + "surname" : "Stark", + "password" : "345ertdfg", + "city" : "Winterfell", + "description" : "Sansa Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["HTTP/eyrie.north.sevenkingdoms.local"] + }, + "brandon.stark" : { + "firstname" : "Brandon", + "surname" : "Stark", + "password" : "iseedeadpeople", + "city" : "Winterfell", + "description" : "Brandon Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "rickon.stark" : { + "firstname" : "Rickon", + "surname" : "Stark", + "password" : "Winter2022", + "city" : "Winterfell", + "description" : "Rickon Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "hodor" : { + "firstname" : "hodor", + "surname" : "hodor", + "password" : "hodor", + "city" : "Winterfell", + "description" : "Brainless Giant", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "jon.snow" : { + "firstname" : "Jon", + "surname" : "Snow", + "password" : "iknownothing", + "city" : "Castel Black", + "description" : "Jon Snow", + "groups" : ["Stark", "Night Watch"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["HTTP/thewall.north.sevenkingdoms.local"] + }, + "samwell.tarly" : { + "firstname" : "Samwell", + "surname" : "Tarly", + "password" : "Heartsbane", + "city" : "Castel Black", + "description" : "Samwell Tarly (Password : Heartsbane)", + "groups" : ["Night Watch"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "jeor.mormont" : { + "firstname" : "Jeor", + "surname" : "Mormont", + "password" : "_L0ngCl@w_", + "city" : "Castel Black", + "description" : "Jeor Mormont", + "groups" : ["Night Watch", "Mormont"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "sql_svc" : { + "firstname" : "sql", + "surname" : "service", + "password" : "YouWillNotKerboroast1ngMeeeeee", + "city" : "-", + "description" : "sql service", + "groups" : [], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["MSSQLSvc/castelblack.north.sevenkingdoms.local:1433","MSSQLSvc/castelblack.north.sevenkingdoms.local"] + } + } + }, + "sevenkingdoms.local" : { + "dc": "dc01", + "domain_password" : "ykRXQ@rWNV4znesz-h!c", + "netbios_name": "SEVENKINGDOMS", + "trust" : "essos.local", + "laps_path": "OU=Laps,DC=sevenkingdoms,DC=local", + "organisation_units" : { + "Vale" : { "path" : "DC=sevenkingdoms,DC=local"}, + "IronIslands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Riverlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Crownlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Stormlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Westerlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Reach" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Dorne" : { "path" : "DC=sevenkingdoms,DC=local"} + }, + "groups" : { + "universal" : {}, + "global" : { + "Lannister" : { + "managed_by" : "tywin.lannister", + "path" : "OU=Westerlands,DC=sevenkingdoms,DC=local" + }, + "Baratheon" : { + "managed_by" : "robert.baratheon", + "path" : "OU=Stormlands,DC=sevenkingdoms,DC=local" + }, + "Small Council" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "DragonStone" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "KingsGuard" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "DragonRider" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + } + }, + "domainlocal" : { + "AcrossTheNarrowSea" : { + "path" : "CN=Users,DC=sevenkingdoms,DC=local" + } + } + }, + "multi_domain_groups_member" : { + "AcrossTheNarrowSea" : [ + "essos.local\\daenerys.targaryen" + ] + }, + "acls" : { + "forcechangepassword_tywin_jaime" : {"for": "tywin.lannister", "to": "jaime.lannister", "right": "Ext-User-Force-Change-Password", "inheritance": "None"}, + "GenericWrite_on_user_jaimie_joffrey" : {"for": "jaime.lannister", "to": "joffrey.baratheon", "right": "GenericWrite", "inheritance": "None"}, + "Writedacl_joffrey_tyron" : {"for": "joffrey.baratheon", "to": "tyron.lannister", "right": "WriteDacl", "inheritance": "None"}, + "self-self-membership-on-group_tyron_small_council" : {"for": "tyron.lannister", "to": "Small Council", "right": "Ext-Self-Self-Membership", "inheritance": "None"}, + "addmember_smallcouncil_DragonStone" : {"for": "Small Council", "to": "DragonStone", "right": "Ext-Write-Self-Membership", "inheritance": "All"}, + "write_owner_dragonstone_kingsguard" : {"for": "DragonStone", "to": "KingsGuard", "right": "WriteOwner", "inheritance": "None"}, + "GenericAll_kingsguard_stanis" : {"for": "KingsGuard", "to": "stannis.baratheon", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_stanis_dc" : {"for": "stannis.baratheon", "to": "kingslanding$", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_group_acrrosdom_dc" : {"for": "AcrossTheNarrowSea", "to": "kingslanding$", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_varys_domadmin" : {"for": "lord.varys", "to": "Domain Admins", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_varys_domadmin_holder" : {"for": "lord.varys", "to": "CN=AdminSDHolder,CN=System,DC=sevenkingdoms,DC=local", "right": "GenericAll", "inheritance": "None"}, + "WriteDACL_renly_Crownlands" : {"for": "renly.baratheon", "to": "OU=Crownlands,DC=sevenkingdoms,DC=local", "right": "WriteDacl", "inheritance": "None"} + }, + "users" : { + "tywin.lannister" : { + "firstname" : "Tywin", + "surname" : "Lanister", + "password" : "powerkingftw135", + "city" : "Casterly Rock", + "description" : "Tywin Lanister", + "groups" : ["Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "jaime.lannister" : { + "firstname" : "Jaime", + "surname" : "Lanister", + "password" : "cersei", + "city" : "King's Landing", + "description" : "Jaime Lanister", + "groups" : ["Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "cersei.lannister" : { + "firstname" : "Cersei", + "surname" : "Lanister", + "password" : "il0vejaime", + "city" : "King's Landing", + "description" : "Cersei Lanister", + "groups" : ["Lannister","Baratheon","Domain Admins","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "tyron.lannister" : { + "firstname" : "Tyron", + "surname" : "Lanister", + "password" : "Alc00L&S3x", + "city" : "King's Landing", + "description" : "Tyron Lanister", + "groups" : ["Lannister"], + "path" : "OU=Westerlands,DC=sevenkingdoms,DC=local" + }, + "robert.baratheon" : { + "firstname" : "Robert", + "surname" : "Baratheon", + "password" : "iamthekingoftheworld", + "city" : "King's Landing", + "description" : "Robert Lanister", + "groups" : ["Baratheon","Domain Admins","Small Council","Protected Users"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "joffrey.baratheon" : { + "firstname" : "Joffrey", + "surname" : "Baratheon", + "password" : "1killerlion", + "city" : "King's Landing", + "description" : "Joffrey Baratheon", + "groups" : ["Baratheon","Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "renly.baratheon" : { + "firstname" : "Renly", + "surname" : "Baratheon", + "password" : "lorastyrell", + "city" : "King's Landing", + "description" : "Renly Baratheon", + "groups" : ["Baratheon","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "stannis.baratheon" : { + "firstname" : "Stannis", + "surname" : "Baratheon", + "password" : "Drag0nst0ne", + "city" : "King's Landing", + "description" : "Stannis Baratheon", + "groups" : ["Baratheon","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "petyer.baelish" : { + "firstname" : "Petyer", + "surname" : "Baelish", + "password" : "@littlefinger@", + "city" : "King's Landing", + "description" : "Petyer Baelish", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "lord.varys" : { + "firstname" : "Lord", + "surname" : "Varys", + "password" : "_W1sper_$", + "city" : "King's Landing", + "description" : "Lord Varys", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "maester.pycelle" : { + "firstname" : "Maester", + "surname" : "Pycelle", + "password" : "MaesterOfMaesters", + "city" : "King's Landing", + "description" : "Maester Pycelle", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + } + } + } + } +}} diff --git a/ad/GOAD/data/test-config.json b/ad/GOAD/data/test-config.json new file mode 100644 index 00000000..773aba24 --- /dev/null +++ b/ad/GOAD/data/test-config.json @@ -0,0 +1,681 @@ +{ +"lab" : { + "hosts" : { + "dc01" : { + "hostname" : "kingslanding", + "type" : "dc", + "local_admin_password": "qjQ!bcwXKU!3yBrDM2VU", + "domain" : "sevenkingdoms.local", + "path" : "DC=sevenkingdoms,DC=local", + "local_groups" : { + "Administrators" : [ + "sevenkingdoms\\robert.baratheon", + "sevenkingdoms\\cersei.lannister", + "sevenkingdoms\\DragonRider" + ], + "Remote Desktop Users" : [ + "sevenkingdoms\\Small Council", + "sevenkingdoms\\Baratheon" + ] + }, + "scripts" : ["sidhistory.ps1"], + "vulns" : ["disable_firewall"], + "security": ["account_is_sensitive", "audit_policy"], + "security_vars": { + "account_is_sensitive" : { "renly": {"account" : "renly.baratheon"} } + } + }, + "dc02" : { + "hostname" : "winterfell", + "type" : "dc", + "local_admin_password": "VExkHyfsKTW_HMNA7fQy", + "domain" : "north.sevenkingdoms.local", + "path" : "DC=north,DC=sevenkingdoms,DC=local", + "local_groups" : { + "Administrators" : [ + "north\\eddard.stark", + "north\\catelyn.stark", + "north\\robb.stark" + ], + "Remote Desktop Users" : [ + "north\\Stark" + ] + }, + "scripts" : [ + "asrep_roasting.ps1", + "constrained_delegation_use_any.ps1", + "constrained_delegation_kerb_only.ps1", + "ntlm_relay.ps1", + "responder.ps1", + "gpo_abuse.ps1", + "rdp_scheduler.ps1", + "unconstrained_delegation_user.ps1" + ], + "vulns" : ["disable_firewall","directory", "credentials", "autologon", "files", "enable_llmnr", "enable_nbt_ns", "shares", "anonymous_enum"], + "vulns_vars" : { + "directory": { + "setup": "C:\\setup" + }, + "credentials" : { + "TERMSRV/castelblack": { + "username" : "north\\robb.stark", + "secret" : "sexywolfy", + "runas" : "north\\robb.stark", + "runas_password" : "sexywolfy" + } + }, + "autologon" : { + "robb.stark" : { + "username" : "north\\robb.stark", + "password" : "sexywolfy" + } + }, + "files" : { + "rdp" : { + "src" : "dc02/bot_rdp.ps1", + "dest" : "C:\\setup\\bot_rdp.ps1" + }, + "sysvol_fake_script": { + "src" : "dc02/sysvol_scripts/script.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\script.ps1" + }, + "sysvol_secret": { + "src" : "dc02/sysvol_scripts/secret.ps1", + "dest": "C:\\Windows\\SYSVOL\\domain\\scripts\\secret.ps1" + } + } + }, + "security": ["audit_policy"] + }, + "srv02" : { + "hostname" : "castelblack", + "type" : "server", + "local_admin_password": "VExkHyfsKTW_HMNA7fQy", + "domain" : "north.sevenkingdoms.local", + "path" : "DC=north,DC=sevenkingdoms,DC=local", + "use_laps": false, + "local_groups" : { + "Administrators" : [ + "north\\jeor.mormont" + ], + "Remote Desktop Users" : [ + "north\\Night Watch", + "north\\Mormont", + "north\\Stark" + ] + }, + "scripts" : [], + "vulns" : ["directory", "disable_firewall", "openshares", "files", "permissions"], + "vulns_vars" : { + "directory": { + "shares": "C:\\shares", + "all": "C:\\shares\\all" + }, + "files" : { + "website" : { + "src" : "srv02/wwwroot", + "dest" : "C:\\inetpub\\" + }, + "letter_in_shares": { + "src" : "srv02/all/arya.txt", + "dest": "C:\\shares\\all\\arya.txt" + } + }, + "permissions" : { + "IIS_IUSRS_upload": { + "path" : "C:\\inetpub\\wwwroot\\upload", + "user" : "IIS_IUSRS", + "rights" : "FullControl" + } + } + }, + "mssql":{ + "sa_password": "Sup1_sa_P@ssw0rd!", + "svcaccount" : "sql_svc", + "sysadmins" : [ + "NORTH\\jon.snow" + ], + "executeaslogin" : { + "NORTH\\samwell.tarly" : "sa", + "NORTH\\brandon.stark" : "NORTH\\jon.snow" + }, + "executeasuser" : { + "arya_master_dbo": { + "user": "NORTH\\arya.stark", + "db" : "master", + "impersonate" : "dbo" + }, + "arya_dbms_dbo": { + "user": "NORTH\\arya.stark", + "db" : "msdb", + "impersonate" : "dbo" + } + }, + "linked_servers": { + "BRAAVOS" : { + "data_src": "braavos.essos.local", + "users_mapping": [ + {"local_login": "NORTH\\jon.snow","remote_login": "sa", "remote_password": "sa_P@ssw0rd!Ess0s"} + ] + } + } + } + }, + "dc03" : { + "hostname" : "meereen", + "type" : "dc", + "local_admin_password": "M!BbXzL48D9mH9dQzp*e", + "domain" : "essos.local", + "path" : "DC=essos,DC=local", + "local_groups" : { + "Administrators" : [ + "essos\\daenerys.targaryen" + ], + "Remote Desktop Users" : [ + "essos\\Targaryen" + ] + }, + "scripts" : ["asrep_roasting2.ps1"], + "vulns" : ["ntlmdowngrade", "disable_firewall"], + "security": ["audit_policy"] + }, + "srv03" : { + "hostname" : "braavos", + "type" : "server", + "local_admin_password": "M!BbXzL48D9mH9dQzp*e", + "domain" : "essos.local", + "path" : "DC=essos,DC=local", + "use_laps": true, + "local_groups" : { + "Administrators" : [ + "essos\\khal.drogo" + ] + }, + "Remote Desktop Users" : [ + "essos\\Dothraki" + ], + "scripts" : [], + "vulns" : ["openshares","disable_firewall"], + "security": ["enable_run_as_ppl"], + "mssql":{ + "sa_password": "sa_P@ssw0rd!Ess0s", + "svcaccount" : "sql_svc", + "sysadmins" : [ + "ESSOS\\khal.drogo" + ], + "executeaslogin" : { + "ESSOS\\jorah.mormont" : "sa" + }, + "executeasuser" : {}, + "linked_servers": { + "CASTELBLACK" : { + "data_src": "castelblack.north.sevenkingdoms.local", + "users_mapping": [ + {"local_login": "ESSOS\\khal.drogo","remote_login": "sa", "remote_password": "Sup1_sa_P@ssw0rd!"} + ] + } + } + } + } + }, + "domains" : { + "essos.local" : { + "dc": "dc03", + "domain_password" : "M!BbXzL48D9mH9dQzp*e", + "netbios_name": "ESSOS", + "ca_server": "Braavos", + "trust" : "sevenkingdoms.local", + "laps_path": "OU=Laps,DC=essos,DC=local", + "organisation_units" : { + }, + "laps_readers": [ + "jorah.mormont", + "Spys" + ], + "groups" : { + "universal" : {}, + "global" : { + "Targaryen" : { + "managed_by" : "viserys.targaryen", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Dothraki" : { + "managed_by" : "khal.drogo", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Dragons":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local" + }, + "QueenProtector":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local", + "members" : ["ESSOS\\Dragons"] + }, + "Domain Admins":{ + "managed_by" : "Administrator", + "path" : "CN=Users,DC=essos,DC=local", + "members" : ["ESSOS\\QueenProtector"] + } + }, + "domainlocal" : { + "DragonsFriends" : { + "managed_by" : "daenerys.targaryen", + "path" : "CN=Users,DC=essos,DC=local" + }, + "Spys" : { + "path" : "CN=Users,DC=essos,DC=local" + } + } + }, + "multi_domain_groups_member" : { + "DragonsFriends" : [ + "sevenkingdoms.local\\tyron.lannister", + "essos.local\\daenerys.targaryen" + ], + "Spys" : [ + "sevenkingdoms.local\\Small Council" + ] + }, + "gmsa" : { + "gmsa_account": { + "gMSA_Name" : "gmsaDragon", + "gMSA_FQDN" : "gmsaDragon.essos.local", + "gMSA_SPNs" : ["HTTP/braavos", "HTTP/braavos.essos.local"], + "gMSA_HostNames" : ["braavos"] + } + }, + "acls" : { + "GenericAll_khal_viserys" : {"for": "khal.drogo", "to": "viserys.targaryen", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_spy_jorah" : {"for": "Spys", "to": "jorah.mormont", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_khal_esc4" : {"for": "khal.drogo", "to": "CN=ESC4,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=essos,DC=local", "right": "GenericAll", "inheritance": "None"}, + "WriteProperty_petyer_domadmin" : {"for": "viserys.targaryen", "to": "jorah.mormont", "right": "WriteProperty", "inheritance": "All"}, + "GenericWrite_DragonsFriends_braavos" : {"for": "DragonsFriends", "to": "braavos$", "right": "GenericWrite", "inheritance": "None"}, + "GenericAll_missandei_khal" : {"for": "missandei", "to": "khal.drogo", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_gmsaDragon_drogo" : {"for": "gmsaDragon$", "to": "drogon", "right": "GenericAll", "inheritance": "None"} + }, + "users" : { + "daenerys.targaryen" : { + "firstname" : "daenerys", + "surname" : "targaryen", + "password" : "BurnThemAll!", + "city" : "-", + "description" : "Darnerys Targaryen", + "groups" : ["Targaryen", "Domain Admins"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "viserys.targaryen" : { + "firstname" : "viserys", + "surname" : "targaryen", + "password" : "GoldCrown", + "city" : "-", + "description" : "Viserys Targaryen", + "groups" : ["Targaryen"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "khal.drogo" : { + "firstname" : "khal", + "surname" : "drogo", + "password" : "horse", + "city" : "-", + "description" : "Khal Drogo", + "groups" : ["Dothraki"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "jorah.mormont" : { + "firstname" : "jorah", + "surname" : "mormont", + "password" : "H0nnor!", + "city" : "-", + "description" : "Jorah Mormont", + "groups" : ["Targaryen"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "missandei" : { + "firstname" : "missandei", + "surname" : "-", + "password" : "fr3edom", + "city" : "-", + "description" : "missandei", + "groups" : [], + "path" : "CN=Users,DC=essos,DC=local" + }, + "drogon" : { + "firstname" : "drogon", + "surname" : "-", + "password" : "Dracarys", + "city" : "-", + "description" : "drogon", + "groups" : ["Dragons"], + "path" : "CN=Users,DC=essos,DC=local" + }, + "sql_svc" : { + "firstname" : "sql", + "surname" : "service", + "password" : "YouWillNotKerboroast1ngMeeeeee", + "city" : "-", + "description" : "sql service", + "groups" : [], + "path" : "CN=Users,DC=essos,DC=local", + "spns" : ["MSSQLSvc/braavos.essos.local:1433","MSSQLSvc/braavos.essos.local"] + } + } + }, + "north.sevenkingdoms.local" : { + "dc": "dc02", + "domain_password" : "VExkHyfsKTW_HMNA7fQy", + "netbios_name": "NORTH", + "trust" : "", + "laps_path": "OU=Laps,DC=north,DC=sevenkingdoms,DC=local", + "organisation_units" : { + }, + "groups" : { + "universal" : {}, + "global" : { + "Stark" : { + "managed_by" : "eddard.stark", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "Night Watch" : { + "managed_by" : "jeor.mormont", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "Mormont" : { + "managed_by" : "jeor.mormont", + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + } + }, + "domainlocal" : { + "AcrossTheSea" : { + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + } + } + }, + "multi_domain_groups_member" : {}, + "acls" : { + "anonymous_rpc" : {"for": "NT AUTHORITY\\ANONYMOUS LOGON", "to": "DC=North,DC=sevenkingdoms,DC=local", "right": "ReadProperty", "inheritance": "All"}, + "anonymous_rpc2" : {"for": "NT AUTHORITY\\ANONYMOUS LOGON", "to": "DC=North,DC=sevenkingdoms,DC=local", "right": "GenericExecute", "inheritance": "All"} + }, + "users" : { + "arya.stark" : { + "firstname" : "Arya", + "surname" : "Stark", + "password" : "Needle", + "city" : "Winterfell", + "description" : "Arya Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "eddard.stark" : { + "firstname" : "Eddard", + "surname" : "Stark", + "password" : "FightP3aceAndHonor!", + "city" : "King's Landing", + "description" : "Eddard Stark", + "groups" : ["Stark", "Domain Admins"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "catelyn.stark" : { + "firstname" : "Catelyn", + "surname" : "Stark", + "password" : "robbsansabradonaryarickon", + "city" : "King's Landing", + "description" : "Catelyn Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "robb.stark" : { + "firstname" : "Robb", + "surname" : "Stark", + "password" : "sexywolfy", + "city" : "Winterfell", + "description" : "Robb Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "sansa.stark" : { + "firstname" : "Sansa", + "surname" : "Stark", + "password" : "345ertdfg", + "city" : "Winterfell", + "description" : "Sansa Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["HTTP/eyrie.north.sevenkingdoms.local"] + }, + "brandon.stark" : { + "firstname" : "Brandon", + "surname" : "Stark", + "password" : "iseedeadpeople", + "city" : "Winterfell", + "description" : "Brandon Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "rickon.stark" : { + "firstname" : "Rickon", + "surname" : "Stark", + "password" : "Winter2022", + "city" : "Winterfell", + "description" : "Rickon Stark", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "hodor" : { + "firstname" : "hodor", + "surname" : "hodor", + "password" : "hodor", + "city" : "Winterfell", + "description" : "Brainless Giant", + "groups" : ["Stark"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "jon.snow" : { + "firstname" : "Jon", + "surname" : "Snow", + "password" : "iknownothing", + "city" : "Castel Black", + "description" : "Jon Snow", + "groups" : ["Stark", "Night Watch"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["HTTP/thewall.north.sevenkingdoms.local"] + }, + "samwell.tarly" : { + "firstname" : "Samwell", + "surname" : "Tarly", + "password" : "Heartsbane", + "city" : "Castel Black", + "description" : "Samwell Tarly (Password : Heartsbane)", + "groups" : ["Night Watch"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "jeor.mormont" : { + "firstname" : "Jeor", + "surname" : "Mormont", + "password" : "_L0ngCl@w_", + "city" : "Castel Black", + "description" : "Jeor Mormont", + "groups" : ["Night Watch", "Mormont"], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local" + }, + "sql_svc" : { + "firstname" : "sql", + "surname" : "service", + "password" : "YouWillNotKerboroast1ngMeeeeee", + "city" : "-", + "description" : "sql service", + "groups" : [], + "path" : "CN=Users,DC=North,DC=sevenkingdoms,DC=local", + "spns" : ["MSSQLSvc/castelblack.north.sevenkingdoms.local:1433","MSSQLSvc/castelblack.north.sevenkingdoms.local"] + } + } + }, + "sevenkingdoms.local" : { + "dc": "dc01", + "domain_password" : "qjQ!bcwXKU!3yBrDM2VU", + "netbios_name": "SEVENKINGDOMS", + "trust" : "essos.local", + "laps_path": "OU=Laps,DC=sevenkingdoms,DC=local", + "organisation_units" : { + "Vale" : { "path" : "DC=sevenkingdoms,DC=local"}, + "IronIslands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Riverlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Crownlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Stormlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Westerlands" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Reach" : { "path" : "DC=sevenkingdoms,DC=local"}, + "Dorne" : { "path" : "DC=sevenkingdoms,DC=local"} + }, + "groups" : { + "universal" : {}, + "global" : { + "Lannister" : { + "managed_by" : "tywin.lannister", + "path" : "OU=Westerlands,DC=sevenkingdoms,DC=local" + }, + "Baratheon" : { + "managed_by" : "robert.baratheon", + "path" : "OU=Stormlands,DC=sevenkingdoms,DC=local" + }, + "Small Council" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "DragonStone" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "KingsGuard" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "DragonRider" : { + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + } + }, + "domainlocal" : { + "AcrossTheNarrowSea" : { + "path" : "CN=Users,DC=sevenkingdoms,DC=local" + } + } + }, + "multi_domain_groups_member" : { + "AcrossTheNarrowSea" : [ + "essos.local\\daenerys.targaryen" + ] + }, + "acls" : { + "forcechangepassword_tywin_jaime" : {"for": "tywin.lannister", "to": "jaime.lannister", "right": "Ext-User-Force-Change-Password", "inheritance": "None"}, + "GenericWrite_on_user_jaimie_joffrey" : {"for": "jaime.lannister", "to": "joffrey.baratheon", "right": "GenericWrite", "inheritance": "None"}, + "Writedacl_joffrey_tyron" : {"for": "joffrey.baratheon", "to": "tyron.lannister", "right": "WriteDacl", "inheritance": "None"}, + "self-self-membership-on-group_tyron_small_council" : {"for": "tyron.lannister", "to": "Small Council", "right": "Ext-Self-Self-Membership", "inheritance": "None"}, + "addmember_smallcouncil_DragonStone" : {"for": "Small Council", "to": "DragonStone", "right": "Ext-Write-Self-Membership", "inheritance": "All"}, + "write_owner_dragonstone_kingsguard" : {"for": "DragonStone", "to": "KingsGuard", "right": "WriteOwner", "inheritance": "None"}, + "GenericAll_kingsguard_stanis" : {"for": "KingsGuard", "to": "stannis.baratheon", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_stanis_dc" : {"for": "stannis.baratheon", "to": "kingslanding$", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_group_acrrosdom_dc" : {"for": "AcrossTheNarrowSea", "to": "kingslanding$", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_varys_domadmin" : {"for": "lord.varys", "to": "Domain Admins", "right": "GenericAll", "inheritance": "None"}, + "GenericAll_varys_domadmin_holder" : {"for": "lord.varys", "to": "CN=AdminSDHolder,CN=System,DC=sevenkingdoms,DC=local", "right": "GenericAll", "inheritance": "None"}, + "WriteDACL_renly_Crownlands" : {"for": "renly.baratheon", "to": "OU=Crownlands,DC=sevenkingdoms,DC=local", "right": "WriteDacl", "inheritance": "None"} + }, + "users" : { + "tywin.lannister" : { + "firstname" : "Tywin", + "surname" : "Lanister", + "password" : "powerkingftw135", + "city" : "Casterly Rock", + "description" : "Tywin Lanister", + "groups" : ["Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "jaime.lannister" : { + "firstname" : "Jaime", + "surname" : "Lanister", + "password" : "cersei", + "city" : "King's Landing", + "description" : "Jaime Lanister", + "groups" : ["Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "cersei.lannister" : { + "firstname" : "Cersei", + "surname" : "Lanister", + "password" : "il0vejaime", + "city" : "King's Landing", + "description" : "Cersei Lanister", + "groups" : ["Lannister","Baratheon","Domain Admins","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "tyron.lannister" : { + "firstname" : "Tyron", + "surname" : "Lanister", + "password" : "Alc00L&S3x", + "city" : "King's Landing", + "description" : "Tyron Lanister", + "groups" : ["Lannister"], + "path" : "OU=Westerlands,DC=sevenkingdoms,DC=local" + }, + "robert.baratheon" : { + "firstname" : "Robert", + "surname" : "Baratheon", + "password" : "iamthekingoftheworld", + "city" : "King's Landing", + "description" : "Robert Lanister", + "groups" : ["Baratheon","Domain Admins","Small Council","Protected Users"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "joffrey.baratheon" : { + "firstname" : "Joffrey", + "surname" : "Baratheon", + "password" : "1killerlion", + "city" : "King's Landing", + "description" : "Joffrey Baratheon", + "groups" : ["Baratheon","Lannister"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "renly.baratheon" : { + "firstname" : "Renly", + "surname" : "Baratheon", + "password" : "lorastyrell", + "city" : "King's Landing", + "description" : "Renly Baratheon", + "groups" : ["Baratheon","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "stannis.baratheon" : { + "firstname" : "Stannis", + "surname" : "Baratheon", + "password" : "Drag0nst0ne", + "city" : "King's Landing", + "description" : "Stannis Baratheon", + "groups" : ["Baratheon","Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "petyer.baelish" : { + "firstname" : "Petyer", + "surname" : "Baelish", + "password" : "@littlefinger@", + "city" : "King's Landing", + "description" : "Petyer Baelish", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "lord.varys" : { + "firstname" : "Lord", + "surname" : "Varys", + "password" : "_W1sper_$", + "city" : "King's Landing", + "description" : "Lord Varys", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + }, + "maester.pycelle" : { + "firstname" : "Maester", + "surname" : "Pycelle", + "password" : "MaesterOfMaesters", + "city" : "King's Landing", + "description" : "Maester Pycelle", + "groups" : ["Small Council"], + "path" : "OU=Crownlands,DC=sevenkingdoms,DC=local" + } + } + } + } +}} diff --git a/ad/GOAD/files/dc02/bot_rdp.ps1 b/ad/GOAD/files/dc02/bot_rdp.ps1 index d80dffc6..ebdc1e12 100644 --- a/ad/GOAD/files/dc02/bot_rdp.ps1 +++ b/ad/GOAD/files/dc02/bot_rdp.ps1 @@ -4,4 +4,4 @@ if(-not(query session robb.stark /server:castelblack)) { Get-Process mstsc -IncludeUserName | Where {$_.UserName -eq "NORTH\robb.stark"}|Stop-Process #run the command mstsc /v:castelblack -} \ No newline at end of file +} diff --git a/ad/GOAD/files/dc02/sysvol_scripts/script.ps1 b/ad/GOAD/files/dc02/sysvol_scripts/script.ps1 index da47b924..955267b3 100644 --- a/ad/GOAD/files/dc02/sysvol_scripts/script.ps1 +++ b/ad/GOAD/files/dc02/sysvol_scripts/script.ps1 @@ -4,4 +4,4 @@ $taskName = "fake task" $user = "NORTH\jeor.mormont" $password = "_L0ngCl@w_" -# passwords in sysvol still ... \ No newline at end of file +# passwords in sysvol still ... diff --git a/ad/GOAD/files/dc02/sysvol_scripts/secret.ps1 b/ad/GOAD/files/dc02/sysvol_scripts/secret.ps1 index fd4fe784..cd9198d9 100644 --- a/ad/GOAD/files/dc02/sysvol_scripts/secret.ps1 +++ b/ad/GOAD/files/dc02/sysvol_scripts/secret.ps1 @@ -10,4 +10,4 @@ $keyData = 177, 252, 228, 64, 28, 91, 12, 201, 20, 91, 21, 139, 255, 65, 9, 247, 41, 55, 164, 28, 75, 132, 143, 71, 62, 191, 211, 61, 154, 61, 216, 91 $secret="76492d1116743f0423413b16050a5345MgB8AGkAcwBDACsAUwArADIAcABRAEcARABnAGYAMwA3AEEAcgBFAEIAYQB2AEEAPQA9AHwAZQAwADgANAA2ADQAMABiADYANAAwADYANgA1ADcANgAxAGIAMQBhAGQANQBlAGYAYQBiADQAYQA2ADkAZgBlAGQAMQAzADAANQAyADUAMgAyADYANAA3ADAAZABiAGEAOAA0AGUAOQBkAGMAZABmAGEANAAyADkAZgAyADIAMwA=" -# T.L. \ No newline at end of file +# T.L. diff --git a/ad/GOAD/files/srv02/all/arya.txt b/ad/GOAD/files/srv02/all/arya.txt index b969c909..80c1d728 100644 --- a/ad/GOAD/files/srv02/all/arya.txt +++ b/ad/GOAD/files/srv02/all/arya.txt @@ -9,4 +9,4 @@ I left a little surprise for you in your room – the sword You've named "Needle I'll explain everything when I return. Until then, stay sharp, sis. Best, -John \ No newline at end of file +John diff --git a/ad/GOAD/files/srv02/wwwroot/Default.aspx b/ad/GOAD/files/srv02/wwwroot/Default.aspx index a1525242..4d1e5eb2 100644 --- a/ad/GOAD/files/srv02/wwwroot/Default.aspx +++ b/ad/GOAD/files/srv02/wwwroot/Default.aspx @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/Web.config b/ad/GOAD/files/srv02/wwwroot/Web.config index 7cef9000..1774c7c6 100644 --- a/ad/GOAD/files/srv02/wwwroot/Web.config +++ b/ad/GOAD/files/srv02/wwwroot/Web.config @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets index d11c0950..2fc5cff1 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.CSharp.Core.targets @@ -132,4 +132,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets index ec8412cd..8c030078 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.Managed.Core.targets @@ -9,12 +9,12 @@ - @@ -77,7 +77,7 @@ InitializeSourceControlInformation is an msbuild target that ensures the SourceRoot items are populated from source control. The target is available only if SourceControlInformationFeatureSupported is true. - A consumer of SourceRoot.MappedPath metadata, such as Source Link generator, shall depend on this target. + A consumer of SourceRoot.MappedPath metadata, such as Source Link generator, shall depend on this target. --> - true - - @(_TopLevelSourceRoot->'%(Identity)=%(MappedPath)', ',')$(PathMap) - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets index 66be6638..61906358 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/Microsoft.VisualBasic.Core.targets @@ -129,4 +129,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config index cb91c083..dffe88bf 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/VBCSCompiler.exe.config @@ -141,8 +141,8 @@ - - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csc.exe.config b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csc.exe.config index f20b6672..3dc92280 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csc.exe.config +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csc.exe.config @@ -140,4 +140,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csc.rsp b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csc.rsp index be7661d0..cc27aa68 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csc.rsp +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csc.rsp @@ -3,7 +3,7 @@ # This file contains command-line options that the C# # command line compiler (CSC) will process as part # of every compilation, unless the "/noconfig" option -# is specified. +# is specified. # Reference the common Framework libraries /r:Accessibility.dll diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csi.exe.config b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csi.exe.config index b0b9864b..7ae4aa49 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csi.exe.config +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csi.exe.config @@ -150,4 +150,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csi.rsp b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csi.rsp index 6089f39f..91188541 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csi.rsp +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/csi.rsp @@ -11,4 +11,4 @@ /u:System.Linq /u:System.Linq.Expressions /u:System.Text -/u:System.Threading.Tasks \ No newline at end of file +/u:System.Threading.Tasks diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/vbc.exe.config b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/vbc.exe.config index f20b6672..3dc92280 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/vbc.exe.config +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/vbc.exe.config @@ -140,4 +140,4 @@ - \ No newline at end of file + diff --git a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/vbc.rsp b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/vbc.rsp index 52b4cace..5a7d9090 100644 --- a/ad/GOAD/files/srv02/wwwroot/bin/roslyn/vbc.rsp +++ b/ad/GOAD/files/srv02/wwwroot/bin/roslyn/vbc.rsp @@ -3,7 +3,7 @@ # This file contains command-line options that the VB # command line compiler (VBC) will process as part # of every compilation, unless the "/noconfig" option -# is specified. +# is specified. # Reference the common Framework libraries /r:Accessibility.dll diff --git a/ad/GOAD/files/srv02/wwwroot/index.html b/ad/GOAD/files/srv02/wwwroot/index.html index cd15e496..888e3f86 100644 --- a/ad/GOAD/files/srv02/wwwroot/index.html +++ b/ad/GOAD/files/srv02/wwwroot/index.html @@ -4,4 +4,4 @@

Please follow this link to upload your files.

- \ No newline at end of file + diff --git a/ad/GOAD/providers/aws/inventory b/ad/GOAD/providers/aws/inventory index 21d3147c..88ebfc1c 100644 --- a/ad/GOAD/providers/aws/inventory +++ b/ad/GOAD/providers/aws/inventory @@ -17,4 +17,4 @@ dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 ansible_user=ans srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 ansible_user=ansible ansible_password=978i2pF43UJ- [all:vars] -admin_user=goadmin \ No newline at end of file +admin_user=goadmin diff --git a/ad/GOAD/providers/aws/linux.tf b/ad/GOAD/providers/aws/linux.tf index 9d0c1b07..30023f4c 100644 --- a/ad/GOAD/providers/aws/linux.tf +++ b/ad/GOAD/providers/aws/linux.tf @@ -6,4 +6,4 @@ # private_ip_address = "{{ip_range}}.40" # password = "suppaP@ssw0rd$" # size = "t2.medium" -# } \ No newline at end of file +# } diff --git a/ad/GOAD/providers/aws/windows.tf b/ad/GOAD/providers/aws/windows.tf index cd18733e..5f5e79a3 100644 --- a/ad/GOAD/providers/aws/windows.tf +++ b/ad/GOAD/providers/aws/windows.tf @@ -1,11 +1,16 @@ # t2.medium = 2cpu / 4GB # t2.large = 2cpu / 8GB # t2.xlarge = 4cpu / 16GB + +# NOTE: AMI IDs below are region-specific (originally eu-west-1). +# Replace with AMI IDs for your target AWS region. +# See: https://aws.amazon.com/marketplace for Windows Server base AMIs + "dc01" = { name = "dc01" domain = "sevenkingdoms.local" windows_sku = "2019-Datacenter" - ami = "ami-03440f0d88fea1060" + ami = "ami-07b70ee6215b30557" instance_type = "t2.medium" private_ip_address = "{{ip_range}}.10" password = "8dCT-DJjgScp" @@ -14,7 +19,7 @@ name = "dc02" domain = "north.sevenkingdoms.local" windows_sku = "2019-Datacenter" - ami = "ami-03440f0d88fea1060" + ami = "ami-07b70ee6215b30557" instance_type = "t2.medium" private_ip_address = "{{ip_range}}.11" password = "NgtI75cKV+Pu" @@ -23,7 +28,7 @@ name = "dc03" domain = "essos.local" windows_sku = "2016-Datacenter" - ami = "ami-053492b4735046f1c" + ami = "ami-0dbedda2d0007250e" instance_type = "t2.medium" private_ip_address = "{{ip_range}}.12" password = "Ufe-bVXSx9rk" @@ -32,7 +37,7 @@ name = "srv02" domain = "north.sevenkingdoms.local" windows_sku = "2019-Datacenter" - ami = "ami-03440f0d88fea1060" + ami = "ami-07b70ee6215b30557" instance_type = "t2.medium" private_ip_address = "{{ip_range}}.22" password = "NgtI75cKV+Pu" @@ -41,8 +46,8 @@ name = "srv03" domain = "essos.local" windows_sku = "2016-Datacenter" - ami = "ami-053492b4735046f1c" + ami = "ami-07b70ee6215b30557" instance_type = "t2.medium" private_ip_address = "{{ip_range}}.23" password = "978i2pF43UJ-" -} \ No newline at end of file +} diff --git a/ad/GOAD/providers/azure/inventory b/ad/GOAD/providers/azure/inventory index 21d3147c..88ebfc1c 100644 --- a/ad/GOAD/providers/azure/inventory +++ b/ad/GOAD/providers/azure/inventory @@ -17,4 +17,4 @@ dc03 ansible_host={{ip_range}}.12 dns_domain=dc03 dict_key=dc03 ansible_user=ans srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 ansible_user=ansible ansible_password=978i2pF43UJ- [all:vars] -admin_user=goadmin \ No newline at end of file +admin_user=goadmin diff --git a/ad/GOAD/providers/azure/linux.tf b/ad/GOAD/providers/azure/linux.tf index 261b60db..ac87ba2a 100644 --- a/ad/GOAD/providers/azure/linux.tf +++ b/ad/GOAD/providers/azure/linux.tf @@ -6,4 +6,4 @@ # private_ip_address = "{{ip_range}}.40" # password = "suppaP@ssw0rd$" # size = "Standard_B2s" -# } \ No newline at end of file +# } diff --git a/ad/GOAD/providers/ludus/inventory b/ad/GOAD/providers/ludus/inventory index 6f3fba3b..6bb8d3ba 100644 --- a/ad/GOAD/providers/ludus/inventory +++ b/ad/GOAD/providers/ludus/inventory @@ -23,4 +23,4 @@ dns_server={{ip_range}}.254 dns_server_forwarder={{ip_range}}.254 ansible_user=localuser -ansible_password=password \ No newline at end of file +ansible_password=password diff --git a/ad/GOAD/providers/proxmox/inventory b/ad/GOAD/providers/proxmox/inventory index c2bf9aa1..e25f1042 100644 --- a/ad/GOAD/providers/proxmox/inventory +++ b/ad/GOAD/providers/proxmox/inventory @@ -19,4 +19,3 @@ srv03 ansible_host={{ip_range}}.23 dns_domain=dc03 dict_key=srv03 [all:vars] force_dns_server=yes dns_server={{ip_range}}.1 - diff --git a/ad/GOAD/providers/proxmox/windows.tf b/ad/GOAD/providers/proxmox/windows.tf index 04d1a2bc..ffd98b25 100644 --- a/ad/GOAD/providers/proxmox/windows.tf +++ b/ad/GOAD/providers/proxmox/windows.tf @@ -47,4 +47,4 @@ dns = "{{ip_range}}.1" ip = "{{ip_range}}.23/24" gateway = "{{ip_range}}.1" -} \ No newline at end of file +} diff --git a/ad/GOAD/providers/virtualbox/Vagrantfile b/ad/GOAD/providers/virtualbox/Vagrantfile index 2b8ef6b5..820a140b 100644 --- a/ad/GOAD/providers/virtualbox/Vagrantfile +++ b/ad/GOAD/providers/virtualbox/Vagrantfile @@ -9,4 +9,4 @@ boxes = [ { :name => "GOAD-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000}, # windows server 2016 { :name => "GOAD-SRV03", :ip => "{{ip_range}}.23", :box => "StefanScherer/windows_2016", :box_version => "2019.02.14", :os => "windows", :cpus => 2, :mem => 5000} -] \ No newline at end of file +] diff --git a/ad/GOAD/providers/vmware/Vagrantfile b/ad/GOAD/providers/vmware/Vagrantfile index 2b8ef6b5..820a140b 100644 --- a/ad/GOAD/providers/vmware/Vagrantfile +++ b/ad/GOAD/providers/vmware/Vagrantfile @@ -9,4 +9,4 @@ boxes = [ { :name => "GOAD-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000}, # windows server 2016 { :name => "GOAD-SRV03", :ip => "{{ip_range}}.23", :box => "StefanScherer/windows_2016", :box_version => "2019.02.14", :os => "windows", :cpus => 2, :mem => 5000} -] \ No newline at end of file +] diff --git a/ad/GOAD/providers/vmware_esxi/Vagrantfile b/ad/GOAD/providers/vmware_esxi/Vagrantfile index 2b8ef6b5..820a140b 100644 --- a/ad/GOAD/providers/vmware_esxi/Vagrantfile +++ b/ad/GOAD/providers/vmware_esxi/Vagrantfile @@ -9,4 +9,4 @@ boxes = [ { :name => "GOAD-SRV02", :ip => "{{ip_range}}.22", :box => "StefanScherer/windows_2019", :box_version => "2021.05.15", :os => "windows", :cpus => 2, :mem => 6000}, # windows server 2016 { :name => "GOAD-SRV03", :ip => "{{ip_range}}.23", :box => "StefanScherer/windows_2016", :box_version => "2019.02.14", :os => "windows", :cpus => 2, :mem => 5000} -] \ No newline at end of file +] diff --git a/ad/GOAD/scripts/archives/acl.ps1 b/ad/GOAD/scripts/archives/acl.ps1 index 62fadc05..0c5d777d 100644 --- a/ad/GOAD/scripts/archives/acl.ps1 +++ b/ad/GOAD/scripts/archives/acl.ps1 @@ -54,7 +54,7 @@ Function SetAclExtended($for, $to, $right, $extendedRightGUID, $inheritance) # Synchronize # WriteDacl # WriteOwner -# WriteProperty +# WriteProperty ## extend rights # "00299570-246d-11d0-a768-00aa006e0529" {$right = "User-Force-Change-Password"} diff --git a/ad/GOAD/scripts/archives/anonymous_ldap.ps1 b/ad/GOAD/scripts/archives/anonymous_ldap.ps1 index 791b9b14..250631ea 100644 --- a/ad/GOAD/scripts/archives/anonymous_ldap.ps1 +++ b/ad/GOAD/scripts/archives/anonymous_ldap.ps1 @@ -3,4 +3,4 @@ $secInheritanceAll = [System.DirectoryServices.ActiveDirectorySecurityInheritanc $Ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $anonymousId,"ReadProperty, GenericExecute","Allow",$secInheritanceAll $Acl = Get-Acl -Path "AD:$($node.DCPathEnd)" $Acl.AddAccessRule($Ace) -Set-Acl -Path "AD:$($node.DCPathEnd)" -AclObject $Acl \ No newline at end of file +Set-Acl -Path "AD:$($node.DCPathEnd)" -AclObject $Acl diff --git a/ad/GOAD/scripts/archives/kerberoasting.ps1 b/ad/GOAD/scripts/archives/kerberoasting.ps1 index 131caa69..506968cb 100644 --- a/ad/GOAD/scripts/archives/kerberoasting.ps1 +++ b/ad/GOAD/scripts/archives/kerberoasting.ps1 @@ -1 +1 @@ -Set-ADUser -Identity "jon.snow" -ServicePrincipalNames @{Add='HTTP/thewallserver'} \ No newline at end of file +Set-ADUser -Identity "jon.snow" -ServicePrincipalNames @{Add='HTTP/thewallserver'} diff --git a/ad/GOAD/scripts/archives/rbcd.ps1 b/ad/GOAD/scripts/archives/rbcd.ps1 index f87f5c14..46409041 100644 --- a/ad/GOAD/scripts/archives/rbcd.ps1 +++ b/ad/GOAD/scripts/archives/rbcd.ps1 @@ -1 +1 @@ -# TODO \ No newline at end of file +# TODO diff --git a/ad/GOAD/scripts/archives/unconstrained_delegation.ps1 b/ad/GOAD/scripts/archives/unconstrained_delegation.ps1 index 8c7b15aa..b853bb37 100644 --- a/ad/GOAD/scripts/archives/unconstrained_delegation.ps1 +++ b/ad/GOAD/scripts/archives/unconstrained_delegation.ps1 @@ -1 +1 @@ -Get-ADComputer -Identity "bravoos" | Set-ADAccountControl -TrustedForDelegation $true \ No newline at end of file +Get-ADComputer -Identity "bravoos" | Set-ADAccountControl -TrustedForDelegation $true diff --git a/ad/GOAD/scripts/asrep_roasting.ps1 b/ad/GOAD/scripts/asrep_roasting.ps1 index 2ff45f93..68e03529 100644 --- a/ad/GOAD/scripts/asrep_roasting.ps1 +++ b/ad/GOAD/scripts/asrep_roasting.ps1 @@ -1 +1 @@ -Get-ADUser -Identity "brandon.stark" | Set-ADAccountControl -DoesNotRequirePreAuth:$true \ No newline at end of file +Get-ADUser -Identity "brandon.stark" | Set-ADAccountControl -DoesNotRequirePreAuth:$true diff --git a/ad/GOAD/scripts/asrep_roasting2.ps1 b/ad/GOAD/scripts/asrep_roasting2.ps1 index 972db3dc..5d114139 100644 --- a/ad/GOAD/scripts/asrep_roasting2.ps1 +++ b/ad/GOAD/scripts/asrep_roasting2.ps1 @@ -1 +1 @@ -Get-ADUser -Identity "missandei" | Set-ADAccountControl -DoesNotRequirePreAuth:$true \ No newline at end of file +Get-ADUser -Identity "missandei" | Set-ADAccountControl -DoesNotRequirePreAuth:$true diff --git a/ad/GOAD/scripts/constrained_delegation_kerb_only.ps1 b/ad/GOAD/scripts/constrained_delegation_kerb_only.ps1 index e212289d..27771189 100644 --- a/ad/GOAD/scripts/constrained_delegation_kerb_only.ps1 +++ b/ad/GOAD/scripts/constrained_delegation_kerb_only.ps1 @@ -1,4 +1,4 @@ # https://www.thehacker.recipes/ad/movement/kerberos/delegations/constrained#without-protocol-transition Set-ADComputer -Identity "castelblack$" -ServicePrincipalNames @{Add='HTTP/winterfell.north.sevenkingdoms.local'} Set-ADComputer -Identity "castelblack$" -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/winterfell.north.sevenkingdoms.local','HTTP/winterfell')} -# Set-ADComputer -Identity "castelblack$" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/winterfell.north.sevenkingdoms.local','CIFS/winterfell')} \ No newline at end of file +# Set-ADComputer -Identity "castelblack$" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/winterfell.north.sevenkingdoms.local','CIFS/winterfell')} diff --git a/ad/GOAD/scripts/constrained_delegation_use_any.ps1 b/ad/GOAD/scripts/constrained_delegation_use_any.ps1 index 7684bb74..7dcffde0 100644 --- a/ad/GOAD/scripts/constrained_delegation_use_any.ps1 +++ b/ad/GOAD/scripts/constrained_delegation_use_any.ps1 @@ -1,3 +1,3 @@ Set-ADUser -Identity "jon.snow" -ServicePrincipalNames @{Add='CIFS/thewall.north.sevenkingdoms.local'} Get-ADUser -Identity "jon.snow" | Set-ADAccountControl -TrustedToAuthForDelegation $true -Set-ADUser -Identity "jon.snow" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/winterfell.north.sevenkingdoms.local','CIFS/winterfell')} \ No newline at end of file +Set-ADUser -Identity "jon.snow" -Add @{'msDS-AllowedToDelegateTo'=@('CIFS/winterfell.north.sevenkingdoms.local','CIFS/winterfell')} diff --git a/ad/GOAD/scripts/gpo_abuse.ps1 b/ad/GOAD/scripts/gpo_abuse.ps1 index 22968d45..5a008ee4 100644 --- a/ad/GOAD/scripts/gpo_abuse.ps1 +++ b/ad/GOAD/scripts/gpo_abuse.ps1 @@ -22,4 +22,4 @@ if ($gpo_exist) { # Allow samwell.tarly to Edit Settings of the GPO # https://learn.microsoft.com/en-us/powershell/module/grouppolicy/set-gppermission?view=windowsserver2022-ps Set-GPPermissions -Name "StarkWallpaper" -PermissionLevel GpoEditDeleteModifySecurity -TargetName "samwell.tarly" -TargetType "User" -} \ No newline at end of file +} diff --git a/ad/GOAD/scripts/rdp_scheduler.ps1 b/ad/GOAD/scripts/rdp_scheduler.ps1 index 100b4acd..b282ac66 100644 --- a/ad/GOAD/scripts/rdp_scheduler.ps1 +++ b/ad/GOAD/scripts/rdp_scheduler.ps1 @@ -12,4 +12,4 @@ $taskExists = Get-ScheduledTask | Where-Object {$_.TaskName -like $taskName } if($taskExists) { Unregister-ScheduledTask -TaskName $taskName -Confirm:$false } -Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $user -Password $password -Settings $settings \ No newline at end of file +Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $user -Password $password -Settings $settings diff --git a/ad/GOAD/scripts/sidhistory.ps1 b/ad/GOAD/scripts/sidhistory.ps1 index cfeb4ab6..55769555 100644 --- a/ad/GOAD/scripts/sidhistory.ps1 +++ b/ad/GOAD/scripts/sidhistory.ps1 @@ -1 +1 @@ -netdom trust sevenkingdoms.local /d:essos.local /enablesidhistory:yes \ No newline at end of file +netdom trust sevenkingdoms.local /d:essos.local /enablesidhistory:yes diff --git a/ad/GOAD/scripts/unconstrained_delegation_user.ps1 b/ad/GOAD/scripts/unconstrained_delegation_user.ps1 index 0f92debf..c2c7772c 100644 --- a/ad/GOAD/scripts/unconstrained_delegation_user.ps1 +++ b/ad/GOAD/scripts/unconstrained_delegation_user.ps1 @@ -1 +1 @@ -Get-ADUser -Identity "sansa.stark" | Set-ADAccountControl -TrustedForDelegation $true \ No newline at end of file +Get-ADUser -Identity "sansa.stark" | Set-ADAccountControl -TrustedForDelegation $true diff --git a/ad/MINILAB/data/inventory b/ad/MINILAB/data/inventory index 82af2e08..0f17e456 100644 --- a/ad/MINILAB/data/inventory +++ b/ad/MINILAB/data/inventory @@ -36,4 +36,4 @@ ws01 dc01 [update] dc01 -ws01 \ No newline at end of file +ws01 diff --git a/ad/MINILAB/files/bot.ps1 b/ad/MINILAB/files/bot.ps1 index fd1604d4..979813cd 100644 --- a/ad/MINILAB/files/bot.ps1 +++ b/ad/MINILAB/files/bot.ps1 @@ -1,3 +1,3 @@ $pass=ConvertTo-SecureString '123456789' -AsPlainText -Force; $creds=New-Object System.Management.Automation.PSCredential ('mini.lab\carol', $pass); -Invoke-Command -Computername ws.mini.lab -ScriptBlock {sleep 30} -Authentication 'Credssp' -Credential $creds \ No newline at end of file +Invoke-Command -Computername ws.mini.lab -ScriptBlock {sleep 30} -Authentication 'Credssp' -Credential $creds diff --git a/ad/NHA/README.md b/ad/NHA/README.md index 9d26dcc1..c7036938 100644 --- a/ad/NHA/README.md +++ b/ad/NHA/README.md @@ -1,7 +1,7 @@ # NINJA HACKER ACADEMY
- +NHA Lab
- NINJA HACKER ACADEMY (NHA) is written as a training challenge where GOAD was written as a lab with a maximum of vulns. @@ -10,7 +10,7 @@ - Flags are disposed on each machine, try to grab all. Be careful all the machines are up to date with defender enabled. - Some exploits needs to modify path so this lab is not very multi-players compliant (unless you do it as a team ;)) -- Obviously do not cheat by looking at the passwords and flags in the recipe files, the lab must start without user to full compromise. +- Obviously do not cheat by looking at the passwords and flags in the recipe files, the lab must start without user to full compromise. - Install : @@ -24,7 +24,7 @@ ./goad.sh -t disablevagrant -l NHA -p virtualbox -m docker ``` -- Now do a reboot of all the machine to avoid unintended secrets stored : +- Now do a reboot of all the machine to avoid unintended secrets stored : ```bash ./goad.sh -t stop -l NHA -p virtualbox -m docker diff --git a/ad/NHA/data/config.json b/ad/NHA/data/config.json index ac863966..0f7cb6ba 100644 --- a/ad/NHA/data/config.json +++ b/ad/NHA/data/config.json @@ -15,7 +15,7 @@ "vulns" : ["administrator_folder","directory","files","adcs_templates","acls"], "vulns_vars" : { "directory": { - "setup": "c:\\setup" + "setup": "C:\\setup" }, "files" : { "template" : { @@ -24,7 +24,7 @@ }, "flag":{ "src" : "flags/dc_final.txt", - "dest": "c:\\users\\administrator\\desktop\\flag.txt" + "dest": "C:\\users\\administrator\\desktop\\flag.txt" } }, "adcs_templates": { @@ -35,9 +35,9 @@ }, "acls": { "GenericAll_Jonin_signature" : { - "for": "Jonin", - "to": "CN=SignatureValidation,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=ninja,DC=hack", - "right": "GenericAll", + "for": "Jonin", + "to": "CN=SignatureValidation,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=ninja,DC=hack", + "right": "GenericAll", "inheritance": "None" } } @@ -62,7 +62,7 @@ "files" : { "flag":{ "src" : "flags/dc_academy.txt", - "dest": "c:\\users\\administrator\\desktop\\flag.txt" + "dest": "C:\\users\\administrator\\desktop\\flag.txt" } } } @@ -89,7 +89,7 @@ }, "flag":{ "src" : "flags/web.txt", - "dest": "c:\\users\\administrator\\desktop\\flag.txt" + "dest": "C:\\users\\administrator\\desktop\\flag.txt" } } } @@ -121,20 +121,20 @@ "files" : { "sql" : { "src" : "SQL/academy_dump.sql", - "dest" : "c:\\setup\\academy_dump.sql" + "dest" : "C:\\setup\\academy_dump.sql" }, "flag_low":{ "src" : "flags/sql_low.txt", - "dest": "c:\\flag.txt" + "dest": "C:\\flag.txt" }, "flag_high":{ "src" : "flags/sql_high.txt", - "dest": "c:\\users\\administrator\\desktop\\flag.txt" + "dest": "C:\\users\\administrator\\desktop\\flag.txt" } }, "mssql": { "init" : { - "cmd" : "-i c:\\setup\\academy_dump.sql" + "cmd" : "-i C:\\setup\\academy_dump.sql" } } } @@ -156,17 +156,17 @@ "files" : { "csp" : { "src" : "bot.ps1", - "dest" : "c:\\bot.ps1" + "dest" : "C:\\bot.ps1" }, "flag":{ "src" : "flags/share.txt", - "dest": "c:\\users\\administrator\\desktop\\flag.txt" + "dest": "C:\\users\\administrator\\desktop\\flag.txt" } }, "schedule": { "bot": { "name": "connect_bot", - "cmd" : "powershell c:\\bot.ps1", + "cmd" : "powershell C:\\bot.ps1", "interval" : "PT1M" } } @@ -215,7 +215,7 @@ "alice.johnson" : { "firstname" : "Alice", "surname" : "johnson", - "password" : "Ih@teC0mputeRs", + "password" : "Ih@teC0mputeRs", "city" : "ninja", "description" : "hokage", "groups" : ["Hokage", "Domain Admins"], @@ -365,7 +365,7 @@ "alice" : { "firstname" : "alice", "surname" : "johnson", - "password" : "C0mplexP@ssAD456", + "password" : "C0mplexP@ssAD456", "city" : "ninja", "description" : "hokage", "groups" : ["Sensei", "Domain Admins"], @@ -557,4 +557,4 @@ } } } -} \ No newline at end of file +} diff --git a/ad/NHA/data/inventory b/ad/NHA/data/inventory index fa1f2537..91f82748 100644 --- a/ad/NHA/data/inventory +++ b/ad/NHA/data/inventory @@ -30,7 +30,7 @@ srv01 srv02 srv03 -; domain controler (mandatory) +; domain controller (mandatory) ; usage : ad-acl.yml, ad-data.yml, ad-relations.yml, laps.yml [dc] dc01 @@ -47,13 +47,13 @@ srv03 ; usage : ad-servers.yml, laps.yml [workstation] -; parent domain controler (mandatory) +; parent domain controller (mandatory) ; usage : ad-servers.yml [parent_dc] dc01 dc02 -; child domain controler (need a fqdn child_name.parent_name) +; child domain controller (need a fqdn child_name.parent_name) ; usage : ad-servers.yml [child_dc] ; external trust, need domain trust key in config (bidirectionnal) @@ -87,7 +87,7 @@ srv02 [mssql_ssms] srv02 -; install webdav +; install webdav [webdav] ; install elk ; usage : elk.yml diff --git a/ad/NHA/files/SQL/academy_dump.sql b/ad/NHA/files/SQL/academy_dump.sql index b6c122a9..cf8fb49a 100644 Binary files a/ad/NHA/files/SQL/academy_dump.sql and b/ad/NHA/files/SQL/academy_dump.sql differ diff --git a/ad/NHA/files/bot.ps1 b/ad/NHA/files/bot.ps1 index 6f1af1f2..f38240a1 100644 --- a/ad/NHA/files/bot.ps1 +++ b/ad/NHA/files/bot.ps1 @@ -1,3 +1,3 @@ $pass=ConvertTo-SecureString 'Il0ve!R4men_<3' -AsPlainText -Force; $creds=New-Object System.Management.Automation.PSCredential ('academy.ninja.lan\frank', $pass); -Invoke-Command -Computername web.academy.ninja.lan -ScriptBlock {sleep 55} -Authentication 'Credssp' -Credential $creds \ No newline at end of file +Invoke-Command -Computername web.academy.ninja.lan -ScriptBlock {sleep 55} -Authentication 'Credssp' -Credential $creds diff --git a/ad/NHA/files/flags/dc_academy.txt b/ad/NHA/files/flags/dc_academy.txt index 1b3fde66..411d13fb 100644 --- a/ad/NHA/files/flags/dc_academy.txt +++ b/ad/NHA/files/flags/dc_academy.txt @@ -1 +1 @@ -NHA{WellD0ne_Sense1!_nowroot_secOnd_Domain} \ No newline at end of file +NHA{WellD0ne_Sense1!_nowroot_secOnd_Domain} diff --git a/ad/NHA/files/flags/dc_final.txt b/ad/NHA/files/flags/dc_final.txt index a73464b1..755ff6f0 100644 --- a/ad/NHA/files/flags/dc_final.txt +++ b/ad/NHA/files/flags/dc_final.txt @@ -1 +1 @@ -NHA{CongraTul@T1ions_Young_HoKage!} \ No newline at end of file +NHA{CongraTul@T1ions_Young_HoKage!} diff --git a/ad/NHA/files/flags/share.txt b/ad/NHA/files/flags/share.txt index 45a99839..032d0e0a 100644 --- a/ad/NHA/files/flags/share.txt +++ b/ad/NHA/files/flags/share.txt @@ -1 +1 @@ -NHA{Nice_DElegat1on_Dude!!} \ No newline at end of file +NHA{Nice_DElegat1on_Dude!!} diff --git a/ad/NHA/files/flags/sql_high.txt b/ad/NHA/files/flags/sql_high.txt index c0239ee4..6e0e965c 100644 --- a/ad/NHA/files/flags/sql_high.txt +++ b/ad/NHA/files/flags/sql_high.txt @@ -1 +1 @@ -NHA{OwwwYouTouchMyPatato!} \ No newline at end of file +NHA{OwwwYouTouchMyPatato!} diff --git a/ad/NHA/files/flags/sql_low.txt b/ad/NHA/files/flags/sql_low.txt index 763931e2..68beff15 100644 --- a/ad/NHA/files/flags/sql_low.txt +++ b/ad/NHA/files/flags/sql_low.txt @@ -1 +1 @@ -NHA{MSSQL_Inject1on_FTW;)} \ No newline at end of file +NHA{MSSQL_Inject1on_FTW;)} diff --git a/ad/NHA/files/flags/web.txt b/ad/NHA/files/flags/web.txt index 47364bb8..fb9fab5c 100644 --- a/ad/NHA/files/flags/web.txt +++ b/ad/NHA/files/flags/web.txt @@ -1 +1 @@ -NHA{Computer_ContainerOOwnage!} \ No newline at end of file +NHA{Computer_ContainerOOwnage!} diff --git a/ad/NHA/files/templates/SignatureValidation.json b/ad/NHA/files/templates/SignatureValidation.json index 6645cb65..8a201086 100644 Binary files a/ad/NHA/files/templates/SignatureValidation.json and b/ad/NHA/files/templates/SignatureValidation.json differ diff --git a/ad/NHA/files/wwwroot/Content/Site.css b/ad/NHA/files/wwwroot/Content/Site.css index 0cf91432..72fd42e2 100644 --- a/ad/NHA/files/wwwroot/Content/Site.css +++ b/ad/NHA/files/wwwroot/Content/Site.css @@ -9,8 +9,8 @@ padding-right: 15px; } -/* Override the default bootstrap behavior where horizontal description lists - will truncate terms that are too long to fit in the left column +/* Override the default bootstrap behavior where horizontal description lists + will truncate terms that are too long to fit in the left column */ .dl-horizontal dt { white-space: normal; diff --git a/ad/NHA/files/wwwroot/Content/bootstrap-theme.css b/ad/NHA/files/wwwroot/Content/bootstrap-theme.css index ea33f76a..aeab5d10 100644 --- a/ad/NHA/files/wwwroot/Content/bootstrap-theme.css +++ b/ad/NHA/files/wwwroot/Content/bootstrap-theme.css @@ -584,4 +584,4 @@ fieldset[disabled] .btn-danger.active { -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); } -/*# sourceMappingURL=bootstrap-theme.css.map */ \ No newline at end of file +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/ad/NHA/files/wwwroot/Content/bootstrap-theme.css.map b/ad/NHA/files/wwwroot/Content/bootstrap-theme.css.map index 949d0973..13747e4b 100644 --- a/ad/NHA/files/wwwroot/Content/bootstrap-theme.css.map +++ b/ad/NHA/files/wwwroot/Content/bootstrap-theme.css.map @@ -1 +1 @@ -{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n background-repeat: repeat-x;\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n background-repeat: repeat-x;\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n background-repeat: repeat-x;\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// stylelint-disable selector-no-qualifying-type, selector-max-compound-selectors\n\n/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default {\n .btn-styles(@btn-default-bg);\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0, 0, 0, .05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n .box-shadow(@shadow);\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file +{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n background-repeat: repeat-x;\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n background-repeat: repeat-x;\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n background-repeat: repeat-x;\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// stylelint-disable selector-no-qualifying-type, selector-max-compound-selectors\n\n/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default {\n .btn-styles(@btn-default-bg);\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0, 0, 0, .05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n .box-shadow(@shadow);\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} diff --git a/ad/NHA/files/wwwroot/Content/bootstrap-theme.min.css b/ad/NHA/files/wwwroot/Content/bootstrap-theme.min.css index 2a69f48c..96756592 100644 --- a/ad/NHA/files/wwwroot/Content/bootstrap-theme.min.css +++ b/ad/NHA/files/wwwroot/Content/bootstrap-theme.min.css @@ -3,4 +3,4 @@ * Copyright 2011-2019 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x;background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x;background-color:#2e6da4}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} -/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file +/*# sourceMappingURL=bootstrap-theme.min.css.map */ diff --git a/ad/NHA/files/wwwroot/Content/bootstrap-theme.min.css.map b/ad/NHA/files/wwwroot/Content/bootstrap-theme.min.css.map index 5d75106e..bccadc47 100644 --- a/ad/NHA/files/wwwroot/Content/bootstrap-theme.min.css.map +++ b/ad/NHA/files/wwwroot/Content/bootstrap-theme.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["bootstrap-theme.css","dist/css/bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAAA;;;;ACUA,YCWA,aDbA,UAFA,aACA,aAEA,aCkBE,YAAA,EAAA,KAAA,EAAA,eC2CA,mBAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,IAAA,IAAA,iBF7CV,mBANA,mBACA,oBCWE,oBDRF,iBANA,iBAIA,oBANA,oBAOA,oBANA,oBAQA,oBANA,oBEmDE,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBFpCV,qBAMA,sBCJE,sBDDF,uBAHA,mBAMA,oBARA,sBAMA,uBALA,sBAMA,uBAJA,sBAMA,uBAOA,+BALA,gCAGA,6BAFA,gCACA,gCAEA,gCEwBE,mBAAA,KACQ,WAAA,KFfV,mBCnCA,oBDiCA,iBAFA,oBACA,oBAEA,oBCXI,YAAA,KDgBJ,YCyBE,YAEE,iBAAA,KAKJ,aEvEI,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GClBF,OAAA,0DH8CA,kBAAA,SACA,aAAA,QAyCA,YAAA,EAAA,IAAA,EAAA,KACA,aAAA,KDnBF,mBCrBE,mBAEE,iBAAA,QACA,oBAAA,EAAA,MDuBJ,oBCpBE,oBAEE,iBAAA,QACA,aAAA,QAMA,sBD8BJ,6BANA,4BAGA,6BANA,4BAHA,4BAFA,uBAeA,8BANA,6BAGA,8BANA,6BAHA,6BAFA,gCAeA,uCANA,sCAGA,uCANA,sCAHA,sCCdM,iBAAA,QACA,iBAAA,KAoBN,aE5EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GClBF,OAAA,0DH8CA,kBAAA,SACA,aAAA,QDgEF,mBC9DE,mBAEE,iBAAA,QACA,oBAAA,EAAA,MDgEJ,oBC7DE,oBAEE,iBAAA,QACA,aAAA,QAMA,sBDuEJ,6BANA,4BAGA,6BANA,4BAHA,4BAFA,uBAeA,8BANA,6BAGA,8BANA,6BAHA,6BAFA,gCAeA,uCANA,sCAGA,uCANA,sCAHA,sCCvDM,iBAAA,QACA,iBAAA,KAqBN,aE7EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GClBF,OAAA,0DH8CA,kBAAA,SACA,aAAA,QDyGF,mBCvGE,mBAEE,iBAAA,QACA,oBAAA,EAAA,MDyGJ,oBCtGE,oBAEE,iBAAA,QACA,aAAA,QAMA,sBDgHJ,6BANA,4BAGA,6BANA,4BAHA,4BAFA,uBAeA,8BANA,6BAGA,8BANA,6BAHA,6BAFA,gCAeA,uCANA,sCAGA,uCANA,sCAHA,sCChGM,iBAAA,QACA,iBAAA,KAsBN,UE9EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GClBF,OAAA,0DH8CA,kBAAA,SACA,aAAA,QDkJF,gBChJE,gBAEE,iBAAA,QACA,oBAAA,EAAA,MDkJJ,iBC/IE,iBAEE,iBAAA,QACA,aAAA,QAMA,mBDyJJ,0BANA,yBAGA,0BANA,yBAHA,yBAFA,oBAeA,2BANA,0BAGA,2BANA,0BAHA,0BAFA,6BAeA,oCANA,mCAGA,oCANA,mCAHA,mCCzIM,iBAAA,QACA,iBAAA,KAuBN,aE/EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GClBF,OAAA,0DH8CA,kBAAA,SACA,aAAA,QD2LF,mBCzLE,mBAEE,iBAAA,QACA,oBAAA,EAAA,MD2LJ,oBCxLE,oBAEE,iBAAA,QACA,aAAA,QAMA,sBDkMJ,6BANA,4BAGA,6BANA,4BAHA,4BAFA,uBAeA,8BANA,6BAGA,8BANA,6BAHA,6BAFA,gCAeA,uCANA,sCAGA,uCANA,sCAHA,sCClLM,iBAAA,QACA,iBAAA,KAwBN,YEhFI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GClBF,OAAA,0DH8CA,kBAAA,SACA,aAAA,QDoOF,kBClOE,kBAEE,iBAAA,QACA,oBAAA,EAAA,MDoOJ,mBCjOE,mBAEE,iBAAA,QACA,aAAA,QAMA,qBD2OJ,4BANA,2BAGA,4BANA,2BAHA,2BAFA,sBAeA,6BANA,4BAGA,6BANA,4BAHA,4BAFA,+BAeA,sCANA,qCAGA,sCANA,qCAHA,qCC3NM,iBAAA,QACA,iBAAA,KD2ON,eC5MA,WCtCE,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBFsPV,0BCvMA,0BEjGI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFgGF,iBAAA,QAEF,yBD6MA,+BADA,+BGlTI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFsGF,iBAAA,QASF,gBEnHI,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,kBAAA,SCnBF,OAAA,0DHqIA,cAAA,ICrEA,mBAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,IAAA,IAAA,iBFuRV,sCCtNA,oCEnHI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD6CF,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBD8EV,cDoNA,iBClNE,YAAA,EAAA,IAAA,EAAA,sBAIF,gBEtII,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,kBAAA,SCnBF,OAAA,0DHwJA,cAAA,IDyNF,sCC5NA,oCEtII,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD6CF,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBDoFV,8BDuOA,iCC3NI,YAAA,EAAA,KAAA,EAAA,gBDgOJ,qBADA,kBC1NA,mBAGE,cAAA,EAIF,yBAEI,mDDwNF,yDADA,yDCpNI,MAAA,KEnKF,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,UF2KJ,OACE,YAAA,EAAA,IAAA,EAAA,qBC/HA,mBAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,qBAAA,CAAA,EAAA,IAAA,IAAA,gBD0IV,eE5LI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoLF,aAAA,QAKF,YE7LI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoLF,aAAA,QAMF,eE9LI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoLF,aAAA,QAOF,cE/LI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoLF,aAAA,QAeF,UEvMI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF6MJ,cEjNI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8MJ,sBElNI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF+MJ,mBEnNI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFgNJ,sBEpNI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFiNJ,qBErNI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFqNJ,sBExLI,iBAAA,yKACA,iBAAA,oKACA,iBAAA,iKF+LJ,YACE,cAAA,IClLA,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBDoLV,wBDiQA,8BADA,8BC7PE,YAAA,EAAA,KAAA,EAAA,QEzOE,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFuOF,aAAA,QALF,+BD6QA,qCADA,qCCpQI,YAAA,KAUJ,OCvME,mBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,EAAA,IAAA,IAAA,gBDgNV,8BElQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF+PJ,8BEnQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFgQJ,8BEpQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFiQJ,2BErQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFkQJ,8BEtQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFmQJ,6BEvQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0QJ,ME9QI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF4QF,aAAA,QC/NA,mBAAA,MAAA,EAAA,IAAA,IAAA,eAAA,CAAA,EAAA,IAAA,EAAA,qBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,eAAA,CAAA,EAAA,IAAA,EAAA","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n background-repeat: repeat-x;\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n background-repeat: repeat-x;\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n background-repeat: repeat-x;\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n background-repeat: repeat-x;\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n background-repeat: repeat-x;\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n background-repeat: repeat-x;\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// stylelint-disable selector-no-qualifying-type, selector-max-compound-selectors\n\n/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default {\n .btn-styles(@btn-default-bg);\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0, 0, 0, .05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n .box-shadow(@shadow);\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file +{"version":3,"sources":["bootstrap-theme.css","dist/css/bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n background-repeat: repeat-x;\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n background-repeat: repeat-x;\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n background-repeat: repeat-x;\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n background-repeat: repeat-x;\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n background-repeat: repeat-x;\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n background-repeat: repeat-x;\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n background-repeat: repeat-x;\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n background-repeat: repeat-x;\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n background-repeat: repeat-x;\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n background-repeat: repeat-x;\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n background-repeat: repeat-x;\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// stylelint-disable selector-no-qualifying-type, selector-max-compound-selectors\n\n/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default {\n .btn-styles(@btn-default-bg);\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, .25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0, 0, 0, .25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, .2);\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0, 0, 0, .075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0, 0, 0, .05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);\n .box-shadow(@shadow);\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} diff --git a/ad/NHA/files/wwwroot/Content/bootstrap.css b/ad/NHA/files/wwwroot/Content/bootstrap.css index fcab4155..be8dcf09 100644 --- a/ad/NHA/files/wwwroot/Content/bootstrap.css +++ b/ad/NHA/files/wwwroot/Content/bootstrap.css @@ -6831,4 +6831,4 @@ button.close { display: none !important; } } -/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/ad/NHA/files/wwwroot/Content/bootstrap.css.map b/ad/NHA/files/wwwroot/Content/bootstrap.css.map index caac3e61..42dcecda 100644 --- a/ad/NHA/files/wwwroot/Content/bootstrap.css.map +++ b/ad/NHA/files/wwwroot/Content/bootstrap.css.map @@ -1 +1 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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A;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;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rDA;EC8DG,oBAAA;CfwnDH;ActrDA;EC8DG,oBAAA;Cf2nDH;AczrDA;EC8DG,WAAA;Cf8nDH;Ac5rDA;EC8DG,oBAAA;CfioDH;Ac/rDA;EC8DG,oBAAA;CfooDH;AclsDA;EC8DG,WAAA;CfuoDH;AcrsDA;EC8DG,oBAAA;Cf0oDH;AcxsDA;EC8DG,oBAAA;Cf6oDH;Ac3sDA;EC8DG,WAAA;CfgpDH;Ac9sDA;EC8DG,oBAAA;CfmpDH;AcjtDA;EC8DG,mBAAA;CfspDH;AcptDA;ECmEG,YAAA;CfopDH;AcvtDA;ECoDG,WAAA;CfsqDH;Ac1tDA;ECoDG,mBAAA;CfyqDH;Ac7tDA;ECoDG,mBAAA;Cf4qDH;AchuDA;ECoDG,UAAA;Cf+qDH;AcnuDA;ECoDG,mBAAA;CfkrDH;ActuDA;ECoDG,mBAAA;CfqrDH;AczuDA;ECoDG,UAAA;CfwrDH;Ac5uDA;ECoDG,mBAAA;Cf2rDH;Ac/uDA;ECoDG,mBAAA;Cf8rDH;AclvDA;ECoDG,UAAA;CfisDH;AcrvDA;ECoDG,mBAAA;CfosDH;AcxvDA;ECoDG,kBAAA;CfusDH;Ac3vDA;ECyDG,WAAA;CfqsDH;Ac9vDA;ECwEG,kBAAA;CfyrDH;AcjwDA;ECwEG,0BAAA;Cf4rDH;AcpwDA;ECwEG,0BAAA;Cf+rDH;AcvwDA;ECwEG,iBAAA;CfksDH;Ac1wDA;ECwEG,0BAAA;CfqsDH;Ac7wDA;ECwEG,0BAAA;CfwsDH;AchxDA;ECwEG,iBAAA;Cf2sDH;AcnxDA;ECwEG,0BAAA;Cf8sDH;ActxDA;ECwEG,0BAAA;CfitDH;AczxDA;ECwEG,iBAAA;CfotDH;Ac5xDA;ECwEG,0BAAA;CfutDH;Ac/xDA;ECwEG,yBAAA;Cf0tDH;AclyDA;ECwEG,gBAAA;Cf6tDH;Aa5tDD;ECzEC;;;;;;;;;;;;ICuCK,YAAA;Gf6wDH;EcpzDF;IC+CG,YAAA;GfwwDD;EcvzDF;IC+CG,oBAAA;Gf2wDD;Ec1zDF;IC+CG,oBAAA;Gf8wDD;Ec7zDF;IC+CG,WAAA;GfixDD;Ech0DF;IC+CG,oBAAA;GfoxDD;Ecn0DF;IC+CG,oBAAA;GfuxDD;Ect0DF;IC+CG,WAAA;Gf0xDD;Ecz0DF;IC+CG,oBAAA;Gf6xDD;Ec50DF;IC+CG,oBAAA;GfgyDD;Ec/0DF;IC+CG,WAAA;GfmyDD;Ecl1DF;IC+CG,oBAAA;GfsyDD;Ecr1DF;IC+CG,mBAAA;GfyyDD;Ecx1DF;IC8DG,YAAA;Gf6xDD;Ec31DF;IC8DG,oBAAA;GfgyDD;Ec91DF;IC8DG,oBAAA;GfmyDD;Ecj2DF;IC8DG,WAAA;GfsyDD;Ecp2DF;IC8DG,oBAAA;GfyyDD;Ecv2DF;IC8DG,oBAAA;Gf4yDD;Ec12DF;IC8DG,WAAA;Gf+yDD;Ec72DF;IC8DG,oBAAA;GfkzDD;Ech3DF;IC8DG,oBAAA;GfqzDD;Ecn3DF;IC8DG,WAAA;GfwzDD;Ect3DF;IC8DG,oBAAA;Gf2zDD;Ecz3DF;IC8DG,mBAAA;Gf8zDD;Ec53DF;ICmEG,YAAA;Gf4zDD;Ec/3DF;ICoDG,WAAA;Gf80DD;Ecl4DF;ICoDG,mBAAA;Gfi1DD;Ecr4DF;ICoDG,mBAAA;Gfo1DD;Ecx4DF;ICoDG,UAAA;Gfu1DD;Ec34DF;ICoDG,mBAAA;Gf01DD;Ec94DF;ICoDG,mBAAA;Gf61DD;Ecj5DF;ICoDG,UAAA;Gfg2DD;Ecp5DF;ICoDG,mBAAA;Gfm2DD;Ecv5DF;ICoDG,mBAAA;Gfs2DD;Ec15DF;ICoDG,UAAA;Gfy2DD;Ec75DF;ICoDG,mBAAA;Gf42DD;Ech6DF;ICoDG,kBAAA;Gf+2DD;Ecn6DF;ICyDG,WAAA;Gf62DD;Ect6DF;ICwEG,kBAAA;Gfi2DD;Ecz6DF;ICwEG,0BAAA;Gfo2DD;Ec56DF;ICwEG,0BAAA;Gfu2DD;Ec/6DF;ICwEG,iBAAA;Gf02DD;Ecl7DF;ICwEG,0BAAA;Gf62DD;Ecr7DF;ICwEG,0BAAA;Gfg3DD;Ecx7DF;ICwEG,iBAAA;Gfm3DD;Ec37DF;ICwEG,0BAAA;Gfs3DD;Ec97DF;ICwEG,0BAAA;Gfy3DD;Ecj8DF;ICwEG,iBAAA;Gf43DD;Ecp8DF;ICwEG,0BAAA;Gf+3DD;Ecv8DF;ICwEG,yBAAA;Gfk4DD;Ec18DF;ICwEG,gBAAA;Gfq4DD;CACF;Aa53DD;EClFC;;;;;;;;;;;;ICuCK,YAAA;Gfs7DH;Ec79DF;IC+CG,YAAA;Gfi7DD;Ech+DF;IC+CG,oBAAA;Gfo7DD;Ecn+DF;IC+CG,oBAAA;Gfu7DD;Ect+DF;IC+CG,WAAA;Gf07DD;Ecz+DF;IC+CG,oBAAA;Gf67DD;Ec5+DF;IC+CG,oBAAA;Gfg8DD;Ec/+DF;IC+CG,WAAA;Gfm8DD;Ecl/DF;IC+CG,oBAAA;Gfs8DD;Ecr/DF;IC+CG,oBAAA;Gfy8DD;Ecx/DF;IC+CG,WAAA;Gf48DD;Ec3/DF;IC+CG,oBAAA;Gf+8DD;Ec9/DF;IC+CG,mBAAA;Gfk9DD;EcjgEF;IC8DG,YAAA;Gfs8DD;EcpgEF;IC8DG,oBAAA;Gfy8DD;EcvgEF;IC8DG,oBAAA;Gf48DD;Ec1gEF;IC8DG,WAAA;Gf+8DD;Ec7gEF;IC8DG,oBAAA;Gfk9DD;EchhEF;IC8DG,oBAAA;Gfq9DD;EcnhEF;IC8DG,WAAA;Gfw9DD;EcthEF;IC8DG,oBAAA;Gf29DD;EczhEF;IC8DG,oBAAA;Gf89DD;Ec5hEF;IC8DG,WAAA;Gfi+DD;Ec/hEF;IC8DG,oBAAA;Gfo+DD;EcliEF;IC8DG,mBAAA;Gfu+DD;EcriEF;ICmEG,YAAA;Gfq+DD;EcxiEF;ICoDG,WAAA;Gfu/DD;Ec3iEF;ICoDG,mBAAA;Gf0/DD;Ec9iEF;ICoDG,mBAAA;Gf6/DD;EcjjEF;ICoDG,UAAA;GfggED;EcpjEF;ICoDG,mBAAA;GfmgED;EcvjEF;ICoDG,mBAAA;GfsgED;Ec1jEF;ICoDG,UAAA;GfygED;Ec7jEF;ICoDG,mBAAA;Gf4gED;EchkEF;ICoDG,mBAAA;Gf+gED;EcnkEF;ICoDG,UAAA;GfkhED;EctkEF;ICoDG,mBAAA;GfqhED;EczkEF;ICoDG,kBAAA;GfwhED;Ec5kEF;ICyDG,WAAA;GfshED;Ec/kEF;ICwEG,kBAAA;Gf0gED;EcllEF;ICwEG,0BAAA;Gf6gED;EcrlEF;ICwEG,0BAAA;GfghED;EcxlEF;ICwEG,iBAAA;GfmhED;Ec3lEF;ICwEG,0BAAA;GfshED;Ec9lEF;ICwEG,0BAAA;GfyhED;EcjmEF;ICwEG,iBAAA;Gf4hED;EcpmEF;ICwEG,0BAAA;Gf+hED;EcvmEF;ICwEG,0BAAA;GfkiED;Ec1mEF;ICwEG,iBAAA;GfqiED;Ec7mEF;ICwEG,0BAAA;GfwiED;EchnEF;ICwEG,yBAAA;Gf2iED;EcnnEF;ICwEG,gBAAA;Gf8iED;CACF;Aa5hED;EC3FC;;;;;;;;;;;;ICuCK,YAAA;Gf+lEH;EctoEF;IC+CG,YAAA;Gf0lED;EczoEF;IC+CG,oBAAA;Gf6lED;Ec5oEF;IC+CG,oBAAA;GfgmED;Ec/oEF;IC+CG,WAAA;GfmmED;EclpEF;IC+CG,oBAAA;GfsmED;EcrpEF;IC+CG,oBAAA;GfymED;EcxpEF;IC+CG,WAAA;Gf4mED;Ec3pEF;IC+CG,oBAAA;Gf+mED;Ec9pEF;IC+CG,oBAAA;GfknED;EcjqEF;IC+CG,WAAA;GfqnED;EcpqEF;IC+CG,oBAAA;GfwnED;EcvqEF;IC+CG,mBAAA;Gf2nED;Ec1qEF;IC8DG,YAAA;Gf+mED;Ec7qEF;IC8DG,oBAAA;GfknED;EchrEF;IC8DG,oBAAA;GfqnED;EcnrEF;IC8DG,WAAA;GfwnED;EctrEF;IC8DG,oBAAA;Gf2nED;EczrEF;IC8DG,oBAAA;Gf8nED;Ec5rEF;IC8DG,WAAA;GfioED;Ec/rEF;IC8DG,oBAAA;GfooED;EclsEF;IC8DG,oBAAA;GfuoED;EcrsEF;IC8DG,WAAA;Gf0oED;EcxsEF;IC8DG,oBAAA;Gf6oED;Ec3sEF;IC8DG,mBAAA;GfgpED;Ec9sEF;ICmEG,YAAA;Gf8oED;EcjtEF;ICoDG,WAAA;GfgqED;EcptEF;ICoDG,mBAAA;GfmqED;EcvtEF;ICoDG,mBAAA;GfsqED;Ec1tEF;ICoDG,UAAA;GfyqED;Ec7tEF;ICoDG,mBAAA;Gf4qED;EchuEF;ICoDG,mBAAA;Gf+qED;EcnuEF;ICoDG,UAAA;GfkrED;EctuEF;ICoDG,mBAAA;GfqrED;EczuEF;ICoDG,mBAAA;GfwrED;Ec5uEF;ICoDG,UAAA;Gf2rED;Ec/uEF;ICoDG,mBAAA;Gf8rED;EclvEF;ICoDG,kBAAA;GfisED;EcrvEF;ICyDG,WAAA;Gf+rED;EcxvEF;ICwEG,kBAAA;GfmrED;Ec3vEF;ICwEG,0BAAA;GfsrED;Ec9vEF;ICwEG,0BAAA;GfyrED;EcjwEF;ICwEG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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: \"Glyphicons Halflings\";\n src: url(\"../fonts/glyphicons-halflings-regular.eot\");\n src: url(\"../fonts/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: \"Glyphicons Halflings\";\n font-style: normal;\n font-weight: 400;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: 400;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: \"\\2014 \\00A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: \"\\00A0 \\2014\";\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: 700;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n filter: alpha(opacity=65);\n opacity: 0.65;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n background-image: none;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n background-image: none;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n background-image: none;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n background-image: none;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n background-image: none;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n background-image: none;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n font-weight: 400;\n color: #337ab7;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: 400;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-right: 15px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-right: -15px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n cursor: not-allowed;\n background-color: #fff;\n}\n.label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n padding-right: 15px;\n padding-left: 15px;\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n 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);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #777777;\n cursor: not-allowed;\n background-color: #eeeeee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 1.42857143;\n line-break: auto;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n font-size: 12px;\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.tooltip.in {\n filter: alpha(opacity=90);\n opacity: 0.9;\n}\n.tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n}\n.tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n}\n.tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n}\n.tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 1.42857143;\n line-break: auto;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow:after {\n content: \"\";\n border-width: 10px;\n}\n.popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-color: #fff;\n border-bottom-width: 0;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n border-left-width: 0;\n}\n.popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: \" \";\n border-right-color: #fff;\n border-left-width: 0;\n}\n.popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n}\n.popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n filter: alpha(opacity=90);\n opacity: 0.9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n font-family: serif;\n line-height: 1;\n}\n.carousel-control .icon-prev:before {\n content: \"\\2039\";\n}\n.carousel-control .icon-next:before {\n content: \"\\203a\";\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n display: table;\n content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","// stylelint-disable\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// 1. Remove the bottom border in Chrome 57- and Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n//\n\nabbr[title] {\n border-bottom: none; // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important; // Black prints faster: h5bp.com/s\n text-shadow: none !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n}\n","// stylelint-disable value-list-comma-newline-after, value-list-comma-space-after, indentation, declaration-colon-newline-after, font-family-no-missing-generic-family-keyword\n\n//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: \"Glyphicons Halflings\";\n src: url(\"@{icon-font-path}@{icon-font-name}.eot\");\n src: url(\"@{icon-font-path}@{icon-font-name}.eot?#iefix\") format(\"embedded-opentype\"),\n url(\"@{icon-font-path}@{icon-font-name}.woff2\") format(\"woff2\"),\n url(\"@{icon-font-path}@{icon-font-name}.woff\") format(\"woff\"),\n url(\"@{icon-font-path}@{icon-font-name}.ttf\") format(\"truetype\"),\n url(\"@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}\") format(\"svg\");\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: \"Glyphicons Halflings\";\n font-style: normal;\n font-weight: 400;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// stylelint-disable media-feature-name-no-vendor-prefix, media-feature-parentheses-space-inside, media-feature-name-no-unknown, indentation, at-rule-name-space-after\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","// stylelint-disable selector-list-comma-newline-after, selector-no-qualifying-type\n\n//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: 400;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n padding: .2em;\n background-color: @state-warning-bg;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: \"\\2014 \\00A0\"; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: \"\"; }\n &:after {\n content: \"\\00A0 \\2014\"; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n color: @pre-color;\n word-break: break-all;\n word-wrap: break-word;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n padding-right: ceil((@gutter / 2));\n padding-left: floor((@gutter / 2));\n margin-right: auto;\n margin-left: auto;\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-right: floor((@gutter / -2));\n margin-left: ceil((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-right: floor((@grid-gutter-width / 2));\n padding-left: ceil((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-no-qualifying-type\n\n//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n\n // Table cell sizing\n //\n // Reset default table behavior\n\n col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n display: table-column;\n float: none;\n }\n\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n display: table-cell;\n float: none;\n }\n }\n}\n\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\n\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n overflow-x: auto;\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * .75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type, property-no-vendor-prefix, media-feature-name-no-vendor-prefix\n\n//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: 700;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\ninput[type=\"search\"] {\n // Override content-box in Normalize (* isn't specific enough)\n .box-sizing(border-box);\n\n // Search inputs in iOS\n //\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n -webkit-appearance: none;\n appearance: none;\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n\n // Apply same disabled cursor tweak as for inputs\n // Some special care is needed because